|
Subject: RE: [xsl] Grouping with keys From: "G. Ken Holman" <gkholman@xxxxxxxxxxxxxxxxxxxx> Date: Thu, 24 Oct 2013 15:56:40 -0400 |
Thanks for reply. I can't really key on the <p> elements because there could be different elements before the first <li> in a group.
I want to key on the first <li> in each group regardless of its immediate preceding sibling.
Also, I want to use template rules instead of pull processing.
t:\ftemp>type rick.xml <body> <li>one</li> <li>two</li> <p>paragraph</p> <li>three</li> <li>four</li> <p>paragraph</p> <li>five</li> <li>six</li> </body> t:\ftemp>call xslt rick.xml rick.xsl <?xml version="1.0" encoding="utf-8"?> <body> <ol> <li>one</li> <li>two</li> </ol> <p>paragraph</p> <ol> <li>three</li> <li>four</li> </ol> <p>paragraph</p> <ol> <li>five</li> <li>six</li> </ol> </body> t:\ftemp>type rick.xsl <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:key name="li" match="li"
use="generate-id((..|preceding-sibling::*[not(self::li)][1])[last()])"/><!--this is a construct whose children need to be grouped in separate lists-->
<xsl:template match="body">
<body>
<xsl:apply-templates mode="group" select=".|*[not(self::li)]"/>
</body>
</xsl:template><xsl:template mode="group" match="*">
<xsl:apply-templates select="self::*[not(self::body)]"/>
<xsl:if test="key('li',generate-id(.))">
<ol>
<xsl:apply-templates select="key('li',generate-id(.))"/>
</ol>
</xsl:if>
</xsl:template><xsl:template match="p"> <p><xsl:apply-templates/></p> </xsl:template>
<xsl:template match="li"> <li><xsl:apply-templates/></li> </xsl:template>
</xsl:stylesheet> t:\ftemp>rem Done!
-- Public XSLT, XSL-FO, UBL & code list classes: Melbourne, AU May 2014 | Contact us for world-wide XML consulting and instructor-led training | Free 5-hour lecture: http://www.CraneSoftwrights.com/links/udemy.htm | Crane Softwrights Ltd. http://www.CraneSoftwrights.com/s/ | G. Ken Holman mailto:gkholman@xxxxxxxxxxxxxxxxxxxx | Google+ profile: https://plus.google.com/116832879756988317389/about | Legal business disclaimers: http://www.CraneSoftwrights.com/legal |
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] Grouping with keys, Rick Quatro | Thread | RE: [xsl] Grouping with keys, Rick Quatro |
| RE: [xsl] Grouping with keys, Rick Quatro | Date | RE: [xsl] Grouping with keys, Rick Quatro |
| Month |