xsl-list
[Top] [All Lists]

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

2008-10-23 05:19:07
J. S. Rawat schrieb:
Hi List,
I am doing html to xml conversion and we need grouping in this regard.

Hi Rawat,

looks like this has remained unanswered.

In XSLT 2.0, use xsl:for-each-group with group-adjacent as shown below.
The application of the different types of xsl:for-each-group are very
well explained in Michael Kay's XSLT 2.0 Reference.

Michael Ludwig

XML
<summary>
<para bullet="1">This is paragraph 1</para>
<para bullet="0">This is paragraph 2</para>
<para bullet="1">This is paragraph 3</para>
<para bullet="1">This is paragraph 4</para>
</summary>

REQUIRED OUTPUT
<ul>
      <li>This is paragraph 1</li>
 </ul>
      <p>This is paragraph 2</p>
      <ul>
         <li>This is paragraph 3</li>
         <li>This is paragraph 4</li>
      </ul>

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

  <xsl:template match="summary">
    <html>
      <body>
        <xsl:for-each-group select="*" group-adjacent="@bullet">
          <xsl:apply-templates select="."/>
        </xsl:for-each-group>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="para[ @bullet = 0 ]">
    <xsl:for-each select="current-group()">
      <p><xsl:value-of select="."/></p>
    </xsl:for-each>
  </xsl:template>

  <xsl:template match="para[ @bullet = 1 ]">
    <ul>
      <xsl:for-each select="current-group()">
        <li><xsl:value-of select="."/></li>
      </xsl:for-each>
    </ul>
  </xsl:template>

</xsl:stylesheet>

--~------------------------------------------------------------------
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>
--~--