Subject: Re: [xsl] Recursively traversing an outline with level gaps From: Martynas Jusevicius <martynas.jusevicius@xxxxxxxxx> Date: Wed, 24 Mar 2010 19:58:25 +0100 |
These are copyrighted texts, so I'm unfortunately not able to provide them.. On Wed, Mar 24, 2010 at 7:55 PM, Dimitre Novatchev <dnovatchev@xxxxxxxxx> wrote: > Where are the sample Xhtml and xml documents? > > On Wed, Mar 24, 2010 at 11:51 AM, Martynas Jusevicius > <martynas.jusevicius@xxxxxxxxx> wrote: >> 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 >> >> > > > > -- > Cheers, > Dimitre Novatchev > --------------------------------------- > Truly great madness cannot be achieved without significant intelligence. > --------------------------------------- > To invent, you need a good imagination and a pile of junk > ------------------------------------- > Never fight an inanimate object > ------------------------------------- > You've achieved success in your field when you don't know whether what > you're doing is work or play > ------------------------------------- > I enjoy the massacre of ads. This sentence will slaughter ads without > a messy bloodbath.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Recursively traversing an, Dimitre Novatchev | Thread | Re: [xsl] Recursively traversing an, Dimitre Novatchev |
Re: [xsl] Recursively traversing an, Dimitre Novatchev | Date | Re: [xsl] Recursively traversing an, Dimitre Novatchev |
Month |