[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Add order of nodes
Joris wrote > <doc> > <fragment>...</fragment> > <fragment>...</fragment> > <fragment>...</fragment> > ... > </doc> > > I need a <xsl:template match="fragment"> that produces this output: > > <doc> > <fragment pos="1">...</fragment> > <fragment pos="2">...</fragment> > <fragment pos="3">...</fragment> > ... > </doc> > > Can I use position() for that? Yes indeed. use this tremplate: <xsl:template match="fragment"> <xsl:copy> <xsl:attribute name="pos"><xsl:value-of select="position()"/></xsl:attribute> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:template> (in conjunction with this template) <xsl:template match="node()|@*"> <xsl:copy> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:template> You should also add a template <xsl:template match="doc"> <doc> <xsl:copy-of select="@*"/> <xsl:apply-templates select="fragment"/> </doc> </xsl:template> to make sure that the current node list when applying templates to fragments does just consist of fragment elements so position() goes 1 2 3 otherwise with the select="node()|@*" it would also include white space text so the fragment elements would be in positions 2 4 6 and if the doc element had any attributes the position of the fragment nodes in the node set returned by "node()|@* would be increased accordingly. 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 ________________________________________________________________________
|
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
|