Re: [xsl] Grouping: unordered lists from xml to html

Subject: Re: [xsl] Grouping: unordered lists from xml to html
From: Michael Ludwig <mlu@xxxxxxxxxxxxx>
Date: Thu, 23 Oct 2008 14:15:31 +0200
J. S. Rawat schrieb:
At 02:48 PM 10/23/2008, Michael Ludwig wrote:
<xsl:stylesheet version="2.0"
Hi Ludwig version 2.0 solution is already in the list but I want this
solution within 1.0

Hi JSR,


use sibling recursion. The following could probably be improved, but it
works for your input.

Michael Ludwig

<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

  <xsl:template match="summary">
    <html>
      <body>
        <xsl:apply-templates select="*[1]"/>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="para[ @bullet = 0 ]">
    <p><xsl:value-of select="."/></p>
    <xsl:apply-templates select="following-sibling::*[1]"/>
  </xsl:template>

<xsl:template match="para[ @bullet = 1 ]">
<ul>
<li><xsl:value-of select="."/></li>
<xsl:apply-templates select="following-sibling::*[1]" mode="in-ul"/>
</ul>
<!-- jump to the next non-bullet item -->
<xsl:apply-templates select="following-sibling::*[not( @bullet = 1)][1]"/>
</xsl:template>


  <xsl:template match="para[ @bullet = 1 ]" mode="in-ul"><!-- continue -->
    <li><xsl:value-of select="."/></li>
    <xsl:apply-templates select="following-sibling::*[1]" mode="in-ul"/>
  </xsl:template>

<xsl:template match="para[ @bullet = 0 ]" mode="in-ul"/><!-- stop -->

</xsl:stylesheet>

Current Thread