xsl-list
[Top] [All Lists]

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

2007-10-02 06:40:51
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="{(_at_)name}" index="{(_at_)index}"/>
   </xsl:when>
   <xsl:otherwise>
    <outgoing name="{(_at_)name}" index="{count(preceding-sibling::*) +
     (preceding-sibling::*[(_at_)index][1]/@index|$one/@index)[1] -
     count(preceding-sibling::*[(_at_)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="{(_at_)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

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--