Subject: [xsl] Recursively traversing an outline with level gaps From: Martynas Jusevicius <martynas.jusevicius@xxxxxxxxx> Date: Wed, 24 Mar 2010 19:51:59 +0100 |
Hey list, I want to create a nested list (ToC) from a XHTML source, which contains @class attributes on elements. A separate document, styles.xml, contains information about styles and which outline level they belong to. @style:name matches @class in XHTML. The tricky part is, that not all styles are necessarily used in XHTML. And if they are, the outline hierarchy is not necessarily maintained -- for example, only styles with level 1, 3 and 5 can be used. How would you traverse such a structure? My approach is to do it recursively, by finding all styles for the current level, and all elements of these styles (simplified): <xsl:template match="h:*"> <xsl:param name="level" select="1"/> <xsl:variable name="level-classes" select="key('style-by-level', $level, $styles-doc)//@style:name <xsl:variable name="level-elements" select="key('element-by-class', $level-classes)"/> <li> <xsl:value-of select="."/> <ol> <xsl:apply-templates="$level-elements"> <xsl:with-param name="level" select="$level + 1"/> </xsl:apply-templates> </ol> </li> </xsl:template> But this gives problems since levels are not necessarily consecutive. The first level can be 2, for example. I also tried iterating only through actually used levels like (1, 3, 5), but it's not a full solution either, because the level hierarchy can differ in each branch. Help appreciated. Martynas odt2epub.com
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Evaluating XML inside att, Jacobus Reyneke | Thread | Re: [xsl] Recursively traversing an, Dimitre Novatchev |
Re: [xsl] Evaluating XML inside att, Martin Honnen | Date | Re: [xsl] Recursively traversing an, Dimitre Novatchev |
Month |