RE: [xsl] xsl:key grouping problem

Subject: RE: [xsl] xsl:key grouping problem
From: Mark Ivs <markivs2003@xxxxxxxxx>
Date: Wed, 17 Nov 2004 06:10:22 -0800 (PST)
Jarno, thank you so much for replying. Your solution
works great. But, I am still not clear why it works. I
guess that's bad :)

Ok, here's the thing that I don't get. generate-id
function takes a node-set as a parameter. In your
solution you are concatinating, country_group, year
attribute and num attribute. So, for a country node
with country_group=AAA, @year=2004 and num=2 the
concatinated value will look like this "AAA20042". 

How does generate-id on country be equal to
generate-id on the key? That's where I am confused.
country[generate-id() = generate-id(key('groups',
concat(country_group, '2004', '2'))) ??

Using xsl keys seems like a tough concept to
understand(atleast for me). Are there other novices
out there who agrees with me ? I will really
appreciate if Jarno or someone explain.

Thank you in advance. I have pasted the xml below for
reference.

Mark

---------
XML
---------
<?xml version="1.0"?>
<myroot>

<country year="2004" num="1">
<country_group>WWW</course_group>
<num>001</num>
</country>

<country year="2004" num="1">
<country_group>ZZZ</course_group>
<num>001</num>
</country>

<country year="2004" num="2">
<country_group>AAA</course_group>
<num>221</num>
</country>

<country year="2004" num="2">
<country_group>BBB</course_group>
<num>002</num>
</country>

<country year="2004" num="2">
<country_group>CCC</course_group>
<num>022</num>
</country>


<country year="2004" num="2">
<country_group>AAA</course_group>
<num>011</num>
</country>

</myroot>



--- Jarno.Elovirta@xxxxxxxxx wrote:

> Hi,
> 
> > Hello all,
> > I am new to xsl and I am having trouble with
> grouping.
> > I have listed my XML below. I would like to get a
> list
> > of all unique country_groups which has a year=2004
> and
> > num=2. I am trying to solve this using xsl:key and
> > key() function. Can someone help me please ?
> 
>   <xsl:key name="groups" match="country"
> use="concat(country_group, @year, @num)"/>
>   <xsl:template match="myroot">
>     <xsl:for-each select="country[generate-id() =
> generate-id(key('groups', concat(country_group,
> '2004', '2')))]">
>       <xsl:value-of select="country_group"/>
>       <xsl:text>
</xsl:text>
>     </xsl:for-each>
>   </xsl:template>
> 
> Cheers,
> 
> Jarno
> 
> 



		
__________________________________ 
Do you Yahoo!? 
Meet the all-new My Yahoo! - Try it today! 
http://my.yahoo.com 

Current Thread