[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: [xsl] Traversing the tree


Subject: Re: [xsl] Traversing the tree
From: David Carlisle <davidc@xxxxxxxxx>
Date: Thu, 8 Sep 2005 23:54:51 +0100

  <xsl:variable name="reg">
    <xsl:for-each select="//reg">
      <xsl:copy-of select="."/>
    </xsl:for-each>
  </xsl:variable>

..
      <xsl:when test="$reg/

Note that's not legal in XSLT1 (as $reg is a result tree fragment) it's
legal but expensive in xslt2 (as you have to copy all the nodes)

better to do

  <xsl:variable name="reg" select="//reg"/>

An alternative strategy would be


<xsl:stylesheet version="1.0"
              xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="top">
<xsl:for-each select="a/reg">
:<xsl:variable name="x" select="(.|preceding-sibling::reg)[@offset][last()]"/>
<xsl:value-of select="."/>:  <xsl:value-of select="sum($x/@offset) +
    count(preceding-sibling::reg) - count($x/preceding-sibling::reg)"/>
</xsl:for-each>
</xsl:template>

</xsl:stylesheet>


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
________________________________________________________________________


Current Thread