|
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 |