Re: [xsl] Using the Input Document to Control Generation of Numbers in the Output

Subject: Re: [xsl] Using the Input Document to Control Generation of Numbers in the Output
From: George Cristian Bina <george@xxxxxxxxxxxxx>
Date: Tue, 02 Oct 2007 16:38:33 +0300
The 3rd case is a little more complicated but still doable in a non recursive way:

<one:one xmlns:one="http://www.example.com/one"; index="1"/>
<xsl:variable name="one" select="document('')/*/one:one" xmlns:one="http://www.example.com/one"/>


 <xsl:template match="incoming">
  <xsl:choose>
   <xsl:when test="@index">
    <ougoing name="{@name}" index="{@index}"/>
   </xsl:when>
   <xsl:otherwise>
    <outgoing name="{@name}" index="{count(preceding-sibling::*) +
     (preceding-sibling::*[@index][1]/@index|$one/@index)[1] -
     count(preceding-sibling::*[@index][1]/preceding-sibling::*)
     }"/>
   </xsl:otherwise>
  </xsl:choose>

Best Regards,
George
---------------------------------------------------------------------
George Cristian Bina - http://aboutxml.blogspot.com/
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com


George Cristian Bina wrote:

Michael Kay wrote:
[...]
This is a typical use case for recursion (even in XSLT 2.0).

What about
<xsl:template match="incoming">
<outgoing name="{@name}" index="{count(preceding-sibling::*[not(@size)]) + 1 + sum(preceding-sibling::*/@size)}"></outgoing>
</xsl:template>
?


Regards,
George
---------------------------------------------------------------------
George Cristian Bina - http://aboutxml.blogspot.com/
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com

Current Thread