Subject: RE: unique attribute values in XSLT2 - storing them in a variable
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Tue, 22 Feb 2005 11:09:37 -0000
|
You just need
<xsl:variable name="x" select="distinct-values(/A/B/C/@atc)"/>
Your construct
<xsl:for-each-group select="B/C" group-by=".">
is unnecessary and achieves nothing: the C elements are all empty, so they
all have the same grouping key, so they all go in a single group.
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: jozef.aerts@xxxxxxxxxxxxxx [mailto:jozef.aerts@xxxxxxxxxxxxxx]
> Sent: 22 February 2005 10:52
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: unique attribute values in XSLT2 - storing
> them in a variable
>
>
> Dear all,
>
> I am making the transition now from XSLT1 to XSLT2
>
> I have the following XML:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <A at1="1" at2="2">
> <B atb="3">
> <C atc="a"/>
> <C atc="b"/>
> </B>
> <B atb="3">
> <C atc="a"/>
> <C atc="c"/>
> </B>
> </A>
>
> I need to find all unique values of the @atc attribute, and store them
> in a variable for later use.
> That was no problem in XSLT1, but I still have some problems in XSLT2.
>
> This is what I have:
>
> <?xml version="1.0" encoding="UTF-8"?>
>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> version="2.0">
> <xsl:template match="/">
> <xsl:apply-templates select="A"/>
> </xsl:template>
>
> <xsl:template match="A">
> <xsl:for-each-group select="B/C"
> group-by=".">
> <xsl:sort select="." />
> <xsl:value-of select="." />
> <xsl:for-each
> select="distinct-values(current-group()/@atc)">
> distinct @atc = <xsl:value-of
> select="." />
> </xsl:for-each>
> </xsl:for-each-group>
> </xsl:template>
> </xsl:stylesheet>
>
> This indeed gives:
> distinct @atc = a
> distinct @atc = b
> distinct @atc = c
>
> But how do I store these values in a variable for later use ?
>
> Many thanks in advance
>
> Jozef
|