| Subject: RE: [xsl] catch from another node with the same id (NEWBIE) From: TSchutzerWeissmann@xxxxxxxxxxxxxxxx Date: Tue, 10 Sep 2002 12:10:39 +0100 | 
Hi Thomas
[snip]
> 
> instead of the "id" i need the product name (bezeichnung) which is 
> stored in a completly different node "/page/info/produkte/" 
> but with the 
> correspondending "id"
> <page>
>   <info>
>    <produkte>
>     <produkt id="1" bezeichnung="Produkt A">
>      <text>Produktebeschrieb A</text>
>     </produkt>
>     <produkt id="2" bezeichnung="Produkt B">
>      <text>Produktebeschrieb B</text>
>     </produkt>
>     <produkt id="3" bezeichnung="Produkt C">
>      <text>Produktebeschrieb C</text>
>     </produkt>
> ........
>    </produkte
>   </info>
> </page>
> 
> can I use some kind of variable to do it? Or how do I get the 
> correspondending "bezeichnung" attribute from the other node?
> Any hints?
Close - but you want a key rather than a variable.
Declare the key outside of any template.
<xsl:key name="productNameByID" 
	match="info/produkte/produkt" 
	use="@id"/> 
This will let you "catch" nodes in the document that are matched
by the match expression, using their id attribute.
You use the key inside your for-each like so:
 <fo:block>
    <!--  <xsl:value-of select="@id"/>  -->
	<xsl:value-of select="key('productNameByID',@id)/@bezeichnung"/>
   </fo:block> 
Keys also speed things up considerably and are used for grouping.
Have fun.
Tom
 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
| Current Thread | 
|---|
| 
 | 
| <- Previous | Index | Next -> | 
|---|---|---|
| RE: [xsl] encoding and XSL Transfor, Michael Kay | Thread | [xsl] catch from another node with , thomas | 
| [xsl] entities out of scope in incl, Jens Schriver | Date | [xsl] catch from another node with , thomas | 
| Month |