Subject: RE: [xsl] layered lists From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Thu, 20 Nov 2008 15:36:08 -0000 |
You'll find a solution to this problem in the paper at http://www.idealliance.org/proceedings/xml04/papers/111/mhk-paper.html See the process-level template in section 3.2 (but you'll need to read from the beginning to understand it) Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Szabo, Patrick (LNG-VIE) [mailto:patrick.szabo@xxxxxxxxxxxxx] > Sent: 20 November 2008 15:30 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] layered lists > > Hi, > > I4m still using XSLT 2.0 and Saxon 9. > > I have another problem with my list thing. Here is an extract > of an example xml input: > > <liste> > <ziffernliste ebene="1"> > <listelem><symbol >1.</symbol>text</listelem> > <listelem><symbol >2.</symbol>text</listelem> > </ziffernliste> > <schluss>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</schluss> > <schluss>YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY</schluss> > > <literaliste ebene="2"> > <listelem><symbol >1.</symbol>text</listelem> > <listelem><symbol >2.</symbol>text</listelem> > </literaliste> > <schluss>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</schluss> > <schluss>YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY</schluss> > > <subliteraliste ebene="3"> > <listelem><symbol >1.</symbol>text</listelem> > <listelem><symbol >2.</symbol>text</listelem> > </subliteraliste> > <schluss>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</schluss> > <schluss>YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY</schluss> > > <strichliste ebene="4"> > <listelem><symbol >1.</symbol>text</listelem> > <listelem><symbol >2.</symbol>text</listelem> > </strichliste> > <schluss>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</schluss> > <schluss>YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY</schluss> > > <ziffernliste ebene="1"> > <listelem><symbol >1.</symbol>text</listelem> > <listelem><symbol >2.</symbol>text</listelem> > </ziffernliste> > <schluss>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</schluss> > <schluss>YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY</schluss> > </liste> > > The attribute "ebene" shows wich layer the list sould be in. > > Desired output: > > <nummerierte-liste> > <listnum>1.</listnum> > <punkt> > <absatz>text</absatz> > </punkt> > <listnum>2.</listnum> > <punkt> > <absatz>text</absatz> > > <absatz>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</absatz> > > <absatz>YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY</absatz> > </punkt> > <punkt> > <liste> > <punkt><absatz>text</absatz></punkt> > <punkt> > <absatz>text</absatz> > > <absatz>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX</absatz> > > <absatz>YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY</absatz> > </punkt> > <punkt> > ...next-list... > </punkt> > </liste> > <punkt> > > <nummerierte-liste> > > So what i want basicly is: > > ebene 1 > ebene 2 > ebene 3 > ebene 4 > ebene 1 > > This input is not how it has to look like. It could also be like: > > ebene 1 > ebene 2 > ebene 3 > ebene 2 > ebene 3 > ebene 4 > ebene 3 > ... > > My XSLT looks like this (layers not considered): > > ... > <xsl:template match="ris:liste"> > <xsl:for-each-group select="*" > group-starting-with="ris:ziffernliste | ris:strichliste | > ris:literaliste | ris:subliteraliste"> > <xsl:apply-templates select="current-group()[1]"/> > </xsl:for-each-group> > </xsl:template> > > <xsl:template match="ris:ziffernliste"> > <nummerierte-liste> > <xsl:apply-templates select="ris:listelem" mode="ziffer"/> > </nummerierte-liste> > </xsl:template> > > <xsl:template match="ris:listelem" mode="ziffer"> > <listnum> > <xsl:apply-templates select="ris:symbol"/> > </listnum> > <punkt> > <absatz><xsl:apply-templates > select="node()[not(self::ris:symbol)]"/></absatz> > <xsl:if test="position() eq last()"> > <xsl:apply-templates > select="current-group()[self::ris:schluss]"/> > </xsl:if> > </punkt> > </xsl:template> > > <xsl:template match="ris:strichliste | ris:literaliste | > ris:subliteraliste"> > <liste> > <xsl:apply-templates select="ris:listelem" > mode="otherlists"/> > </liste> > </xsl:template> > > <xsl:template match="ris:listelem" mode="otherlists"> > <punkt> > <absatz><xsl:apply-templates > select="node()[not(self::ris:symbol)]"/></absatz> > <xsl:if test="position() eq last()"> > <xsl:apply-templates > select="current-group()[self::ris:schluss]"/> > </xsl:if> > </punkt> > </xsl:template> > > <xsl:template match="ris:schluss"> > <absatz> > <xsl:apply-templates/> > </absatz> > </xsl:template> > > <xsl:template match="ris:symbol"> > <xsl:apply-templates/> > </xsl:template> > ... > > > > I4m desperate -.-, can anyone help me ?! > > Patrick Szabo > EPD / XSLT Konvertierung > Tel.: +43-1-534 52-1573 > Fax.: +43-1-534 52-1573 > patrick.szabo@xxxxxxxxxxxxx > > LexisNexis Verlag ARD Orac GmbH & Co KG > Marxergasse 25, 1030 Wien > FN 8333f, Handelsgericht Wien > www.lexisnexis.at <http://www.lexisnexis.at/> > > <file://C:\Dokumente und > Einstellungen\szaboP\Anwendungsdaten\Microsoft\Signatures\LN > Vienna signature-Dateien\image001.jpg>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] layered lists, Szabo, Patrick (LNG- | Thread | AW: [xsl] layered lists, Szabo, Patrick (LNG- |
[xsl] layered lists, Szabo, Patrick (LNG- | Date | AW: [xsl] layered lists, Szabo, Patrick (LNG- |
Month |