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>
--~--