|
[XML-DEV Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: XSLT 2.0: Definition of a structure and its use
Thanks David, I got that working!
Here is the final stylesheet ...
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="*" mode="pass1">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates mode="#current"/>
</xsl:copy>
</xsl:template>
<xsl:template match="reg[@href]" mode="pass1">
<xsl:variable name="x" >
<xsl:copy-of select="//regdef[@name=current()/@href]/*"/>
</xsl:variable>
<xsl:apply-templates select="$x" mode="#current"/>
</xsl:template>
<xsl:template match="regdef" mode="pass1"/>
<xsl:template match="reg" mode="pass2">
<br/>Register = <xsl:value-of select="."/>
Parent Offset = <xsl:value-of select="../@offset"/>
Sibling count = <xsl:value-of select="count(preceding-sibling::reg)"/>
</xsl:template>
<xsl:template match="/">
<xsl:variable name="x">
<xsl:apply-templates mode="pass1"/>
</xsl:variable>
<xsl:apply-templates mode="pass2" select="$x"/>
</xsl:template>
</xsl:stylesheet>
Anupam.
--- David Carlisle <davidc@n...> wrote:
>
> > I am sorry, that is what I don't understand. How to do two transforms in succession?
>
> well the simplest is to write the result of the first transform out as a
> file and then just process the file. It's best to do it that way while
> debugging as you get to see the intermediate stage.
>
> Most API allow you to avoid the overhead of serialising and writing to a
> file and parsing it back, and just pass the output tree from one to the
> other, but that depends entirely on the api you are using to call xslt.
>
> You can however do it in one stylesheet if it is more convenient, since
> you are using 2.0 you don't need x:node-set() just store the modified
> tree in a variable then apply templates to that:
>
>
> <xsl:template match="/">
> <xsl:variable name="x">
> <xsl:apply-templates mode="pass1"/>
> </xsl:variable>
> </xsl:apply-templates mode="pass2" select="$x"/>
> </xsl:template>
>
> Then have templates in pass1 mode that just expand references, and
> templates in pass2 mode that do whatever you want to do.
>
> David
>
> ________________________________________________________________________
> This e-mail has been scanned for all viruses by Star. The
> service is powered by MessageLabs. For more information on a proactive
> anti-virus service working around the clock, around the globe, visit:
> http://www.star.net.uk
> ________________________________________________________________________
>
> -----------------------------------------------------------------
> The xml-dev list is sponsored by XML.org <http://www.xml.org>, an
> initiative of OASIS <http://www.oasis-open.org>
>
> The list archives are at http://lists.xml.org/archives/xml-dev/
>
> To subscribe or unsubscribe from this list use the subscription
> manager: <http://www.oasis-open.org/mlmanage/index.php>
>
>
__________________________________
Yahoo! Mail - PC Magazine Editors' Choice 2005
http://mail.yahoo.com
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|
|||||||||

Cart








