xsl-list
[Top] [All Lists]

RE: [xsl] layered lists

2008-11-20 10:36:40

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(_dot_)szabo(_at_)lexisnexis(_dot_)at] 
Sent: 20 November 2008 15:30
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] layered lists

Hi, 
 
I´m 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>
...



I´m desperate -.-, can anyone help me ?!

Patrick Szabo
EPD / XSLT Konvertierung
Tel.: +43-1-534 52-1573
Fax.: +43-1-534 52-1573
patrick(_dot_)szabo(_at_)lexisnexis(_dot_)at

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> 




--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>