RE: [xsl] sorting before selecting by position

Subject: RE: [xsl] sorting before selecting by position
From: "Russ Holmes" <rholmes@xxxxxxxxx>
Date: Mon, 20 Aug 2001 20:21:47 +1200
Hip hei! 

Of course..

Thanks you're a player..

-----Original Message-----
From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
[mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of
Jarno.Elovirta@xxxxxxxxx
Sent: Monday, 20 August 2001 7:36 p.m.
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] sorting before selecting by position


Hip hei!

Replace

> 	<xsl:template match="//rs">
> 		<rs>
> 			<xsl:apply-templates 
> select="z[position() &gt; 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() &gt; 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


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread