[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Recursion of variable, pt. 2
I'm stumped! I need help with variable recursion based on grouping of elements. Thanks for your help... The specifics: Hierarchy: Nested <r1>,<r2>,<r3>... Desired output: (see also below) <cnt> Starting with 1 per grouping of <q>, adds <cnt> amount to the preceding value of <cnt> per grouping of <q>. <cnt> is always at the lowest <r?> level. I have a stylesheet that will increment <cnt> nicely, but I want it to start over with "1" when <q> changes. Sample code: <?xml version="1.0"?> <vector> <r1> <t>geometry</t> <r2> <t>parabola</t> <r3> <t>trapezium</t> <q>1</q> <cnt>4</cnt> </r3> <r3> <t>rhombus</t> <q>1</q> <cnt>4</cnt> </r3> </r2> <r2> <t>parallelogram</t> <q>1</q> <cnt>3</cnt> </r2> </r1> <r1> <t>reflection</t> <q>2</q> <cnt>2</cnt> </r1> <r1> <t>refraction</t> <q>2</q> <cnt>2</cnt> </r1> </vector> Current stylesheet: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml"/> <xsl:template match="*"> <xsl:copy> <xsl:copy-of select="@*"/> <xsl:apply-templates/> </xsl:copy> </xsl:template> <xsl:template match="q"/> <xsl:template match="cnt"> <xsl:variable name="cs" select="preceding::cnt"/> <xsl:variable name="c" select="sum($cs)"/> <q><xsl:value-of select="preceding-sibling::q"/></q> <o> <xsl:choose> <xsl:when test="$cs = 1 or position() != 1"> <xsl:value-of select="$c + 1"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="$c"/> </xsl:otherwise> </xsl:choose> <xsl:if test=". > 1">-<xsl:value-of select="$c + ."/></xsl:if> </o> </xsl:template> </xsl:stylesheet> Desired output: <vector> <r1> <t>geometry</t> <r2> <t>parabola</t> <r3> <t>trapezium</t> <q>1</q> <o>1-5</o> </r3> <r3> <t>rhombus</t> <q>1</q> <o>6-10</o> </r3> </r2> <r2> <t>parallelogram</t> <q>1</q> <o>11-14</o> </r2> </r1> <r1> <t>reflection</t> <q>2</q> <o>1-2</o> </r1> <r1> <t>refraction</t> <q>2</q> <o>3-4</o> </r1> </vector>
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|