|
Subject: Re: [xsl] Grouping: unordered lists from xml to html From: Michael Ludwig <mlu@xxxxxxxxxxxxx> Date: Thu, 23 Oct 2008 11:18:35 +0200 |
Hi List, I am doing html to xml conversion and we need grouping in this regard.
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.
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>| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] Grouping: unordered lists fro, J. S. Rawat | Thread | Re: [xsl] Grouping: unordered lists, J. S. Rawat |
| Re: [xsl] Content of Script element, Joyce Babu | Date | Re: [xsl] Content of Script element, Joyce Babu |
| Month |