Subject: Re: [xsl] Sorting things on two levels From: "Michele R Combs mrrothen@xxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Tue, 14 Apr 2015 16:57:42 -0000 |
Fantastic -- exactly what I was looking for, straightforward and simple. Will try this out tonight. Thanks! Michele -----Original Message----- From: Martin Honnen martin.honnen@xxxxxx [mailto:xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx] Sent: Tuesday, April 14, 2015 12:39 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: Re: [xsl] Sorting things on two levels Michele R Combs mrrothen@xxxxxxx wrote: >> Looks like grouping and sorting to me. Do you use XSLT 1.0 or 2.0? > > > I'll be running the transform using the latest version of Oxygen, so it looks like either would be fine. From the Oxygen Help file: With XSLT 2.0 here is an approach: <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs"> <xsl:output method="html" indent="yes"/> <xsl:template match="root"> <ul> <xsl:for-each-group select="indexterm" group-by="primary"> <xsl:sort select="current-grouping-key()"/> <li> <xsl:value-of select="current-grouping-key(), if (not(current-group()/secondary)) then current-group()/@id else ()" separator=", "/> <xsl:if test="current-group()/secondary"> <ul> <xsl:for-each-group select="current-group()" group-by="secondary"> <xsl:sort select="current-grouping-key()"/> <li> <xsl:value-of select="current-grouping-key(), current-group()/@id" separator=", "/> </li> </xsl:for-each-group> </ul> </xsl:if> </li> </xsl:for-each-group> </ul> </xsl:template> </xsl:stylesheet> Outputs <ul> <li>aardvarks, {ID}</li> <li>bears <ul> <li>breeding, {ID}</li> <li>feeding, {ID}</li> <li>hunting, {ID}, {ID}</li> </ul> </li> </ul> for your sample data.
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Sorting things on two lev, Martin Honnen martin | Thread | [xsl] Using doc( ) to get a second , Craig Sampson craig. |
Re: [xsl] Sorting things on two lev, Martin Honnen martin | Date | [xsl] Using doc( ) to get a second , Craig Sampson craig. |
Month |