Subject: [xsl] nested grouping From: "Laura Jenkins" <xsl_list@xxxxxxxxxxx> Date: Thu, 3 Apr 2003 14:56:08 +0100 |
Dear All, I have a problem with grouping. I name it double grouping as I cant get a better name gor it. Here it goes. I have an XML which looks like <?xml version="1.0"?> <films> <slot id = "1"> <date>day1</date> <film id = "horror">Horror-Movie1</film> </slot> <slot id = "2"> <date>day1</date> <film id = "horror">Horror-Movie2</film> </slot> <slot id = "3"> <date>day1</date> <film id = "adult">Adult-Movie1</film> </slot> <slot id = "4"> <date>day1</date> <film id = "adult">Adult-Movie2</film> </slot> <slot id = "5"> <date>day2</date> <film id = "horror">Horror-Movie3</film> </slot> <slot id = "6"> <date>day2</date> <film id = "horror">Horror-Movie4</film> </slot> <slot id = "7"> <date>day2</date> <film id = "adult">Adult-Movie3</film> </slot> <slot id = "8"> <date>day2</date> <film id = "adult">Adult-Movie4</film> </slot> </films> and i want to group based on date and within that based on film ids.. In other words, I want the output (HTML) to look like: Date ** day1 Horror Movies Film Type : horror ** Film :Horror-Movie1 Film Type : horror ** Film :Horror-Movie2 Adult Movies Film Type : adult ** Film :Adult-Movie1 Film Type : adult ** Film :Adult-Movie2 Date ** day2 Horror Movies Film Type : horror ** Film :Horror-Movie3 Film Type : horror ** Film :Horror-Movie4 Adult Movies Film Type : adult ** Film :Adult-Movie3 Film Type : adult ** Film :Adult-Movie4 I wrote an xsl that would go as far as grouping based on the dates..to produce an output that looks like.. Date ** day1 Film Type : horror ** Film :Horror-Movie1 Film Type : horror ** Film :Horror-Movie2 Film Type : adult ** Film :Adult-Movie1 Film Type : adult ** Film :Adult-Movie2 Date ** day2 Film Type : horror ** Film :Horror-Movie1 Film Type : horror ** Film :Horror-Movie1 Film Type : adult ** Film :Adult-Movie1 Film Type : adult ** Film :Adult-Movie2 I cant get my heads around doing what I want. I tried many weird combination using the keys but couldnt get what I wanted The xsl i wrote is as follows.. <?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:key match="/films/slot" name="unigue-days" use="date/text()"/> <xsl:template match="/"> <xsl:for-each select="/films/slot[generate-id(.) = generate-id(key('unique-days',date/text())[1])]"> <u><b> Date ** <xsl:value-of select="date"/></b></u> <br/> <xsl:for-each select="key('unique-days',date/text())"> Film Type : <b> <xsl:value-of select="film/@id"/></b> ** Film :<b><xsl:value-of select="film"/></b> <br/> </xsl:for-each> <hr/> </xsl:for-each> </xsl:template> </xsl:stylesheet>. It would be of great help if someone could suggest me some way of grouping elements in the way I wanted. Cheers. XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Parser implemented in XSL, Bill Cohagan | Thread | Re: [xsl] nested grouping ( solved), Laura Jenkins |
RE: [xsl] Parser implemented in XSL, Bill Cohagan | Date | RE: [xsl] XSLT, XML & PHP, Alexandru COSTIN |
Month |