Subject: [xsl] Multilevel Muenchian grouping -- Why doesn't this work? From: Mike Kozlowski <mlk@xxxxxxxx> Date: Wed, 29 Jan 2003 17:14:19 -0500 (EST) |
I want to group some entries first by year, and then by month. My ideal output is: <h2>2003</h2> <h3>2</h3> <ul>...</ul> <h3>1</h3> <ul>...</ul> <h2>2002</h2> <h3>12</h3> <ul>...</ul> ... The XSLT I've come up with, with help from Jeni Tennison's site, is this (relevant excerpt): <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" doctype-public="-//W3C//DTD HTML 4.01//EN"/> <xsl:key name="entry-year" match="entry" use="date/year"/> xsl:key name="entry-month" match="entry" use="concat(date/year, date/month)"/> <xsl:for-each select="entry[count(. | key('entry-year', date/year)[1]) = 1]"> <xsl:sort select="date/year" data-type="number" order="descending"/> <h2><xsl:value-of select="date/year"/></h2> <xsl:for-each select="key('entry-year', date/year)[count(. | key('entry-month', concat(date/year, date/month))[1]) = 1]"> <xsl:sort select="date/month" data-type="number" order="descending"/> <h3><xsl:value-of select="date/month"/></h3> <ul> <xsl:for-each select="key('entry-month', concat(date/year, date/month))"> [...] </xsl:for-each> </ul> </xsl:for-each> </xsl:for-each> The output this gets me on the input included below is: <h2>2003</h2> <h3>2</h3> <ul></ul> <h3>1</h3> <ul></ul> <h3>1</h3> <ul></ul> <h3>1</h3> <ul></ul> <h3>1</h3> <ul></ul> <h2>2002</h2> <h3>11</h3> <ul></ul> <h3>11</h3> <ul></ul> I don't understand why all the months are showing up repeatedly, and nothing inside at all. The (relevant excerpt from the) input file looks like this: <?xml version="1.0" encoding="UTF-8"?> <booklog> <entry id="159"> <date> <year>2003</year> <month>2</month> <day>5</day> </date> </entry> <entry id="160"> <date> <year>2003</year> <month>1</month> <day>9</day> </date> </entry> <entry id="161"> <date> <year>2003</year> <month>1</month> <day>10</day> </date> </entry> <entry id="162"> <date> <year>2003</year> <month>1</month> <day>11</day> </date> </entry> <entry id="163"> <date> <year>2003</year> <month>1</month> <day>24</day> </date> </entry> <entry id="151"> <date> <year>2002</year> <month>11</month> <day>12</day> </date> </entry> <entry id="150"> <date> <year>2002</year> <month>11</month> <day>9</day> </date> </entry> </booklog> -- Mike Kozlowski http://www.klio.org/mlk/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] <xsl:sort> and <xsl:copy-, Andy J. Cupp | Thread | RE: [xsl] Multilevel Muenchian grou, Jarno . Elovirta |
RE: [xsl] <xsl:sort> and <xsl:copy-, Andy J. Cupp | Date | RE: [xsl] XSL to HTML table problem, Ross Ken |
Month |