RE: [xsl] unique attribute values in XSLT2 - storing them in a variable

Subject: RE: [xsl] 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: [xsl] 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

Current Thread