Subject: Re: [xsl] cross-ref From: Jeni Tennison <mail@xxxxxxxxxxxxxxxx> Date: Wed, 8 Aug 2001 18:04:28 +0100 |
Hi Bas, > If I want to find the attribute value of a cross-ref element in > another document, based on matching another attribute of the same > element, thus: > > Match /elementName/@refAttr > with $otherDoc//elementName/@refAttr > to find $otherDoc//elementName/@desiredAttr > > the following is my best guess: > > <xsl:variable name="matchValue" select="/xxx/elementName/category" /> > <xsl:variable name="otherDoc" select="document('other.xml')"/> > > <!-- Now find the (desiredAttr) of (elementName)s with matchinf > (refAttr)s. --> > <xsl:variable name="crossRef" > select="$otherDoc//elementName[@refAttr = > $matchValue]/@desiredAttr"/> It *might* be that you're setting the $matchValue variable to the wrong thing - you originally said that the value you wanted to match was the value of the refAttr attribute, but you're setting the $matchValue variable to the value of the category child of the elementName element instead. From your original description, you want to set matchValue to: <xsl:variable name="matchValue" select="/*/elementName/@refAttr" /> (Of course this assumes that elementName elements are direct children of the document element in the source XML document.) With this kind of lookup, it would be more efficient to use a key. Index the elementName elements by their refAttr attributes: <xsl:key name="elements-by-ref" match="elementName" use="@refAttr" /> Then to retrieve the elementName element with the $matchValue value for the refAttr attribute, use an xsl:for-each to set the context to the $otherDoc, and use the key() function to retrieve the element that's being referred to: <xsl:variable name="crossRef"> <xsl:for-each select="$otherDoc"> <xsl:value-of name="key('elements-by-ref', $matchValue)/@desiredAttr" /> </xsl:for-each> </xsl:variable> I hope that helps, Jeni --- Jeni Tennison http://www.jenitennison.com/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] cross-ref, Bas Alberts | Thread | RE: [xsl] cross-ref, Bas Alberts |
Re: [xsl] namespaces and copying tr, Jeni Tennison | Date | [xsl] Re: Preceding Ancestors, Dimitre Novatchev |
Month |