Subject: Re: [xsl] Subject: Counting Path Occurrences From: "Scott Coon" <scoon@xxxxxxxxxxxxx> Date: Tue, 3 Apr 2007 19:07:58 -0700 |
> On 4/1/07, Mukul Gandhi <gandhi.mukul@xxxxxxxxx> wrote: > > On 3/30/07, Andrew Welch <andrew.j.welch@xxxxxxxxx> wrote: > > > <xsl:for-each-group > > select="//*/string-join(ancestor-or-self::*/name(), '/')" > > group-by="."> > > <xsl:sequence select="concat('
', ., ' - ', count(current-group()))"/> > > </xsl:for-each-group> > > > Nice solution. > > Except, if we change slightly the concat to following (please note a > starting '/'): > concat('
', '/', ., ' - ', count(current-group())) > > > We'll get exactly what the OP wants. So, just to make sure I understand this right, for each descendent node, you use this string-join function to build the full path via the ancestors: -- string-join(ancestor-or-self::*/name(), '/') Since you're doing this in the select clause of the for-each-group, the things to be grouped are already the desired paths, so you just group-by ".". And for the same reason, you can use "." in the concat clause to format the output. I would also get the same result by separating things like this, right? <xsl:for-each-group select="//*" group-by="string-join(ancestor-or-self::*/name(), '/')"> [blah....] </xsl:for-each-group> Guys, this is terrific. Thanks very much for the prompt replies. Scott
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Subject: Counting Path Oc, Mukul Gandhi | Thread | Re: [xsl] Subject: Counting Path Oc, Scott Coon |
Re: [xsl] Dreamweaver XSL Tranforms, Robert Koberg | Date | Re: [xsl] Subject: Counting Path Oc, Scott Coon |
Month |