This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: sorting before selecting by position
- To: xsl-list at lists dot mulberrytech dot com
- Subject: RE: [xsl] sorting before selecting by position
- From: Jarno dot Elovirta at nokia dot com
- Date: Mon, 20 Aug 2001 10:36:16 +0300
- Reply-To: xsl-list at lists dot mulberrytech dot com
Hip hei!
Replace
> <xsl:template match="//rs">
> <rs>
> <xsl:apply-templates
> select="z[position() > 14]">
> <xsl:sort select="@loc"
> data-type="text" order="ascending"/>
> </xsl:apply-templates>
> </rs>
> </xsl:template>
>
> <xsl:template match="//z">
> <z>
> <xsl:for-each select="@*">
> <xsl:copy>
> <xsl:apply-templates
> select="@* | text()"/>
> </xsl:copy>
> </xsl:for-each>
> </z>
>
> </xsl:template>
with
<xsl:template match="rs">
<rs>
<xsl:apply-templates select="z">
<xsl:sort select="@loc" data-type="text" order="ascending"/>
</xsl:apply-templates>
</rs>
</xsl:template>
<xsl:template match="z">
<xsl:if test="position() > 14">
<z>
<xsl:for-each select="@*">
<xsl:copy>
<xsl:apply-templates select="@* | text()"/>
</xsl:copy>
</xsl:for-each>
</z>
</xsl:if>
</xsl:template>
And it should work. Note that in the match patterns you don't have to use
"//rs", as all elements are descendants of the root node, so a simple "rs"
will suffice
Jarno
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list