Re: [xsl] Using XSLT's key() function while context in secondary document?

Subject: Re: [xsl] Using XSLT's key() function while context in secondary document?
From: "Andrew Welch" <andrew.j.welch@xxxxxxxxx>
Date: Tue, 19 Feb 2008 17:24:25 +0000
On 19/02/2008, Scott Trenda <Scott.Trenda@xxxxxxxx> wrote:
>       <xsl:for-each select="key('chnam', document('s.xml')//Channel)">

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

I don't know the origins of this thread but that looks highly dubious
- the key lookup would be the string value of all of the <Channel>
elements in s.xml.

If this is XSLT 1.0 then the pattern is:

<xsl:variable name="this" select="/">
<xsl:variable name="sDoc" select="document('s.xml')"/>

<xsl:for-each select="$sDoc//Channel">
  <xsl:variable name="lookup" select="."/>
  <xsl:for-each select="$this">
    <xsl:apply-templates select="key('chnam', $lookup)"/>
  ..
..

In 2.0 its much easier because you don't have to maintain a pointer to
the original source XML, and you have the slash operator, so the
equivalent is:

<xsl:apply-templates select="$sDoc//Channel/key('chnam', ., /)"/>


cheers
-- 
Andrew Welch
http://andrewjwelch.com
Kernow: http://kernowforsaxon.sf.net/

Current Thread