Subject: RE: 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: 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
|