Subject: Re: [xsl] Recursively traversing an outline with level gaps From: Dimitre Novatchev <dnovatchev@xxxxxxxxx> Date: Wed, 24 Mar 2010 14:12:26 -0700 |
It seems to me that the additional xml file is not necessary, neither recursive processing is needed. Just output the values of every <p> element. Or is there something that I'm getting wrong? -- 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 On Wed, Mar 24, 2010 at 1:31 PM, Martynas Jusevicius <martynas.jusevicius@xxxxxxxxx> wrote: > Sorry, you're right. I can make a simplified test case: > > ODT (styles.xml): > <style:style style:name="Heading_1" text:outline-level="1"/> > <style:style style:name="Heading_2" text:outline-level="2"/> > <style:style style:name="Heading_3" text:outline-level="3"/> > <style:style style:name="Heading_4" text:outline-level="4"/> > > XHTML: > <p class="Heading_1">1</p> > ... > <p class="Heading_3">1.1.1</p> > ... > <p class="Heading_1">2</p> > ... > <p class="Heading_2">2.1</p> > ... > <p class="Heading_3">2.1.1</p> > ... > <p class="Heading_2">2.2</p> > > Desired outline (also what OpenOffice.org produces): > 1 > B 1.1.1 > 2 > B 2.1 > B B 2.1.1 > B 2.2 > > But if you process it recursively level after level as I described, you get: > 1 > 2 > B 2.1 > B B 2.1.1 > B 2.2 > > Notice 1.1.1 is missing, because 1.1 is missing as well -- in other > words, there is a gap between levels 1 and 3. > > Does that make it clearer? How would you process such outline that all > the levels are included, no matter there are gaps between them? > > Martynas > > On Wed, Mar 24, 2010 at 8:03 PM, Dimitre Novatchev <dnovatchev@xxxxxxxxx> wrote: >> Nobody needs the copyrighted files. I was asking for sample files. >> This is a *class of problems* and many sample files (not only the >> copyrighted ones exist). Or are you attempting to copyright all xml >> files that are appropriate samples for this problem? :) >> >> Please, do understand that by not providing well-defined problem, you >> are severely decreasing the chances of somebody willing to spend their >> time guessworking. >> >> >> >> On Wed, Mar 24, 2010 at 11:58 AM, Martynas Jusevicius >> <martynas.jusevicius@xxxxxxxxx> wrote: >>> 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:*"> >>>>> B <xsl:param name="level" select="1"/> >>>>> B <xsl:variable name="level-classes" select="key('style-by-level', >>>>> $level, $styles-doc)//@style:name >>>>> B <xsl:variable name="level-elements" select="key('element-by-class', >>>>> $level-classes)"/> >>>>> B <li> >>>>> B B <xsl:value-of select="."/> >>>>> B B <ol> >>>>> B B B <xsl:apply-templates="$level-elements"> >>>>> B B B B <xsl:with-param name="level" select="$level + 1"/> >>>>> B B B </xsl:apply-templates> >>>>> B B </ol> >>>>> B </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. >>> >>> >> >> >> >> -- >> 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, Martynas Jusevicius | Thread | Re: [xsl] Recursively traversing an, Martynas Jusevicius |
Re: [xsl] Recursively traversing an, Martynas Jusevicius | Date | Re: [xsl] Recursively traversing an, Martynas Jusevicius |
Month |