Subject: sort,count,number,group solved From: quagly <quagly@xxxxxxxx> Date: Mon, 20 Mar 2000 20:23:36 -0800 |
Over a week later, and I have solved the puzzle I posed here earlier. Thanks to everyone who replied. Hope this is useful to someone. Here is my original posting, solution follows. " After perusing the FAQ I can sort, count, number, and group. But I cannot do them all at once. Please help. Example: xml: <root> <foo> <bar>bard</bar> <bar>bark</bar> </foo> <foo> <bar>bark</bar> <bar>barb</bar> </foo> </root> Sample xsl that selects distinct <bar> <xsl:template match="//bar[not(. = following::bar)]"> <xsl:value-of select="."/> </xsl:template> produces: bard bark barb what I want is to number these, sort them, and count the number of times they appear in the xml source Desired output: 1. barb -1 2. bard -1 3. bark -2 I can't seem to get there from here. Do I need to use for-each? Thanks, -Quagly" My solution: <xsl:template match="/"> <DL> <xsl:apply-templates select="//bar[not(. = preceding::bar)]"> <xsl:sort select="bar"/> </xsl:apply-templates> </DL> </xsl:template> <xsl:template match="bar"> <DT> <xsl:number value="position()" format="1."/> <xsl:value-of select="."/>- <xsl:value-of select="count(//bar[.=current()])"/> </DT> </xsl:template> </xsl:stylesheet> It is amazing to me how easy this is now that I see it. I got very caught up in for-eaches and variable assignments. Please critique this for me. Can it be improved? Is there some ingenious principle I have tapped into that can be articulated? Or let me know if this is helpful to you. XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
passivetex, son of (XSL FO formatti, Sebastian Rahtz | Thread | RE: Newbie question:, Kay Michael |
Re: Future XSLT expansion., Paul Tchistopolskii | Date | Newbie question:, OPi |
Month |