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 |