|
Subject: [xsl] current-group() question From: Ruud Grosmann <r.grosmann@xxxxxx> Date: Thu, 06 Dec 2007 14:28:56 +0100 |
<root> <p>paragraph 1.</p> <p>paragraph 2.</p> <p>paragraph 3.</p> <b>no paragraph.</b> <p>paragraph 4.</p> <p>paragraph 5.</p> <b>no paragraph.</b> </root>
<xsl:template match="/">
<xsl:apply-templates select="." mode='list'/>
</xsl:template> <xsl:template match="root" mode='list'>
<xsl:copy>
<xsl:for-each-group select="*"
group-adjacent="boolean(self::p)">
<xsl:choose>
<xsl:when test="current-group()/p">
<p-block>
<xsl:for-each select="current-group()">
<xsl:apply-templates select='.' mode='list'/>
</xsl:for-each>
</p-block>
</xsl:when>
<xsl:otherwise>
<no-p-block>
<xsl:for-each select="current-group()">
<xsl:apply-templates select='.' mode='list'/>
</xsl:for-each>
</no-p-block>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each-group>
</xsl:copy>
</xsl:template> <xsl:template match="*" mode='list'>
<xsl:copy>
<xsl:apply-templates mode='list'/>
</xsl:copy>
</xsl:template><?xml version="1.0" encoding="UTF-8"?>
<root>
<no-p-block>
<p>paragraph 1.</p>
<p>paragraph 2.</p>
<p>paragraph 3.</p>
</no-p-block>
<no-p-block>
<b>no paragraph.</b>
</no-p-block>
<no-p-block>
<p>paragraph 4.</p>
<p>paragraph 5.</p>
</no-p-block>
<no-p-block>
<b>no paragraph.</b>
</no-p-block>
</root> <xsl:template match="/">
<xsl:apply-templates select="." mode='list'/>
</xsl:template> <xsl:template match="root" mode='list'>
<xsl:copy>
<xsl:for-each-group select="*"
group-adjacent="boolean(self::p)">
<xsl:variable name='curgroup'>
<xsl:sequence select='current-group()'/>
</xsl:variable> <xsl:choose>
<xsl:when test="$curgroup/p">
<p-block>
<xsl:for-each select="$curgroup">
<xsl:apply-templates select='.' mode='list'/>
</xsl:for-each>
</p-block>
</xsl:when>
<xsl:otherwise>
<no-p-block>
<xsl:for-each select="$curgroup">
<xsl:apply-templates select='.' mode='list'/>
</xsl:for-each>
</no-p-block>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each-group>
</xsl:copy>
</xsl:template> <xsl:template match="*" mode='list'>
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template><?xml version="1.0" encoding="UTF-8"?>
<root>
<p-block>
<p>paragraph 1.</p>
<p>paragraph 2.</p>
<p>paragraph 3.</p>
</p-block>
<no-p-block>
<b>no paragraph.</b>
</no-p-block>
<p-block>
<p>paragraph 4.</p>
<p>paragraph 5.</p>
</p-block>
<no-p-block>
<b>no paragraph.</b>
</no-p-block>
</root>| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] Schema problem: different ele, Sascha Mantscheff | Thread | Re: [xsl] current-group() question, David Carlisle |
| [xsl] Schema problem: different ele, Sascha Mantscheff | Date | Re: [xsl] current-group() question, David Carlisle |
| Month |