RE: [xsl] Add order of nodes

Subject: RE: [xsl] Add order of nodes
From: "Robert Soesemann" <rsoesemann@xxxxxxxxxxx>
Date: Wed, 9 Feb 2005 13:01:45 +0100
This does not work as there may be other nodes between and before
<fragment>. It might look like this and with your solution I get the
wrong positions.

> <doc>
	<foo/>
> 	<fragment pos="3">...</fragment>
> 	<fragment pos="4">...</fragment>
	<bar>
		..
	</bar>
> 	<fragment pos="11">...</fragment>
> 	...
> </doc>



-----Original Message-----
From: Joris Gillis [mailto:roac@xxxxxxxxxx]
Sent: Mittwoch, 9. Februar 2005 13:02
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re: [xsl] Add order of nodes


Tempore 12:51:02, die 02/09/2005 AD, hinc in
xsl-list@xxxxxxxxxxxxxxxxxxxxxx scripsit Robert Soesemann
<rsoesemann@xxxxxxxxxxx>:

> <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>

regards,
--
Joris Gillis (http://www.ticalc.org/cgi-bin/acct-view.cgi?userid=38041)
"Et ipsa scientia potestas est"  - Francis Bacon , Meditationes sacrae

Current Thread