[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Applying a transform to a tranform

Subject: RE: Applying a transform to a tranform
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Tue, 9 Sep 2003 23:43:59 +0100
second transform
> 
> I have a situation where I would like apply a transform to 
> the transform of an xml document.  Is there a way to do this 
> in one xslt document?

Yes, if your processor offers the node-set extension. The pattern is:

<xsl:variable name="temp">
  <xsl:apply-templates select="/" mode="phase1"/>
</xsl:variable>

<xsl:template match="/">
  <xsl:apply-templates select="xx:node-set($temp)" mode="phase2"/>
</xsl:template>

(Of course either phase1 or phase2 can be replaced with the default
mode, or you can even run both phases in the same mode, but this needs
care.)

Michael Kay

> 
> For example the original xml looks like
> 
> <rowset>
>   <row>
>     <id>1</id>
>     <value>value 1</value>
>     <parent>0</parent>
>   </row>
>   <row>
>     <id>2</id>
>     <value>value 2</value>
>     <parent>1</parent>
>   </row>
>   <row>
>     <id>3</id>
>     <value>value 3</value>
>     <parent>0</parent>
>   </row>
> </rowset>
> 
> The first transform (which I have written and works) results in:
> 
> <tree>
>   <branch>
>      <id>1</id>
>      <value>value 1</value>
>      <branch>
>         <id>2</id>
>         <value>value 2</value>
>      </branch>
>   </branch>
>   <branch>
>     <id>3</id>
>     <value>value3</value>
>   </branch>
> </tree>
> 
> Now in the same xslt document I would like to transform this 
> into the html code to represent a "tree" control.  I have 
> written the transform document to do this and it works when 
> supplied with an xml document of the "tree/branch" type.  The 
> problem I am having is making the first transform happen on 
> the original document and then the second transform on the 
> first transform results.
> 
> I thought the following logic would work but it doesn't
> 
> <xsl:apply-templates select="rowset"/>  -- to transform into 
> tree like xml <xsl:apply-templates select="tree"/> -- to 
> transform into html tree control
> 
> It appears as though this is transforming the original doc in 
> both instances (i.e. the rowset template select doesn't 
> "pass" the results of its transform forward).
> 
> Is it possible to make the second transform use the results 
> of the first in the same doc?? Thanks in advance!
> 
> 
> 
> 
> 
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.