[Home] [By Thread] [By Date] [Recent Entries]
Mark,
At 12:44 PM 3/29/2007, you wrote: My inclination is build the main loop on the terminal steps, ie. for-each select="//step[not(step)]". But I'm not sure where to go after that, since climbing backward through parent::step will build the list in reverse. Actually, it won't, since xsl:apply-templates and xsl:for-each are both specified to output their results in an order corresponding to the document order of the input. Perhaps storing the id of the terminal step and passing that along to a recursive template that walks descendants of ancestor::step[1]? Because of the above, this isn't necessary. (BTW, the name attribute is for demonstration only, I don't have an attribute that I can sort on.) Even if the order of the output weren't document order, one could still calculate (and thus sort on) the depth of the node: <xsl:sort select="count(ancestor-or-self::*)"/> ... but try without this: I think your idea should work.
|

Cart



