Subject: Re: Key functionality in XSL
From: Scott Trenda <Scott.Trenda@xxxxxxxx>
Date: Thu, 19 Nov 2009 10:58:31 -0500
|
It looks like you're trying to set up a multi-valued key, correct? I think you're confusing the XPath union operator (|) with the literal pipe character you're using later for the key value. So I think you're looking for this:
<xsl:key name="k1" match="ROW" use="concat(COLUMN[@NAME ='JOBCODE'], '|', COLUMN[@NAME = 'JC_CODE'])"/>
~ Scott
-----Original Message-----
From: Anil Kumar Veeramalli [mailto:anil.v@xxxxxxxxxxxxxxxxxxxxx]
Sent: Thursday, November 19, 2009 1:41 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Key functionality in XSL
Thanks David. I want to iterate with the Key.
I tried this way its not working.
<xsl:key name="k1" match="ROW" use="COLUMN[@NAME ='JOBCODE'] | COLUMN[@NAME = 'JC_CODE']"/>
<xsl:variable name="job_code" select="'P10'"/>
<xsl:variable name="jc_code" select="'P10'"/>
<xsl:variable name="keyvalue" select =
"concat($job_code,'|',$jc_code)"/>
<xsl:for-each select="key('k1',$keyvalue)">
<!-- some output-->
</xsl-for-earch>
is this not correct way of doing.
Thanks,
Anil
David Carlisle wrote:
>> <xsl:key name="k1" match="ROW" use="COLUMN[@NAME =
>> 'JOBCODE'],COLUMN[@NAME = 'JC_CODE']"/> like this?
>>
>
> use has to be a match pattern so you can't use , you can use | though.
>
> <xsl:key name="k1" match="ROW" use="COLUMN[@NAME =
> 'JOBCODE'] | COLUMN[@NAME = 'JC_CODE']"/>
>
>
> If you are using xslt2 you can use the alternative
> <xsl:key name="k1" match="ROW" use="COLUMN[@NAME =
> ('JOBCODE','JC_CODE')]"/>
>
> David
>
> ________________________________________________________________________
> The Numerical Algorithms Group Ltd is a company registered in England
> and Wales with company number 1249803. The registered office is:
> Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.
>
> This e-mail has been scanned for all viruses by Star. The service is
> powered by MessageLabs.
> ________________________________________________________________________
|