Re: [xsl] Define a key with cross reference

Subject: Re: [xsl] Define a key with cross reference
From: "Vasu Chakkera" <vasucv@xxxxxxxxxxx>
Date: Fri, 21 Jan 2005 14:35:19 -0000
Define key as Follows
<xsl:key match="/root/A"  name="A-with-B" use="property/@id"/>
(Define key as a child of xsl:stylesheet element )


and Use the key like
 <xsl:value-of select="key('A-with-B',property/@id)"/>
  so you send the property Id to the Key and you get      "A"  node which
has the same Property /@id as the one u sent in to the key..
  note that I have assumed ur context node to be B, when I used the key in
the value-of select. make sure you use the right path , depending on your
context node when using the key

 for example, if your template matches B nodes and you use a xsl:for-each
select = "properties" in this template, then you should use  <xsl:value-of
select="key('A-with-B',@id)"/>
Just a  note..


HTH
Vasu




----- Original Message ----- 
From: "Ranjan K. Baisak" <ranjanbaisak@xxxxxxxxx>
To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
Sent: Friday, January 21, 2005 2:20 PM
Subject: [xsl] Define a key with cross reference


> I would appreciate if anybody can help me to key with
> cross reference with related elements. The structure
> of my XML is :
> <root>
> <A name="A1">
> <property id="1"/>
> <property id="2"/>
> </A>
> <A name="A2">
> <property id="1"/>
> <property id="3"/>
> </A>
> <B name="B1">
> <property id="1"/>
> <property id="2"/>
> </B>
> <B name="B2">
> <property id="1"/>
> <property id="3"/>
> </B>
> </root>
> I need to define a key which can give me all <A>
> elements which are related to <B> related. The
> relatioship is through id attribute of property.
> E.g. for <B name="B2"><property id="1"/>, I should get
> <A name="A1">
> <property id="1"/>
> </A>
> <A name="A2">
> <property id="1"/>
> </A>.
>
> regards,
> Ranjan
>
>
>
> __________________________________
> Do you Yahoo!?
> The all-new My Yahoo! - Get yours free!
> http://my.yahoo.com

Current Thread