Subject: RE: Applying a transform to a tranform
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Tue, 9 Sep 2003 23:43:59 +0100
|
>
> 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
|