[xsl] Using a second xml document as a lookup table

Subject: [xsl] Using a second xml document as a lookup table
From: John Sands <WonkoWatson@xxxxxxxxx>
Date: Thu, 9 May 2002 17:14:59 -0400
I want to output a node only if it is referenced in a second XML file.
Here's my main XML file:

        <column dbcolumn="col1"/>
        <column dbcolumn="col2" />
        <column dbcolumn="col3" />

Here's my lookup XML file, dbdef.xml:

                <AttributeType name='col2'/>
                <AttributeType name='col3' />
                <AttributeType name='col4' />

Eventually I'm going to build a SQL select statement, so I want to output:

 col2, col3

But first I'm trying to just match the values and output all of them like this:

 col1=, col2=col2, col3=col3,

Then I'll figure out how to eliminate the one that has no matching
value in the lookup document.

My XSLT is:

 <xsl:key name="dbdef-cols" match="AttributeType" use="@name" />
 <xsl:variable name="dbdef" select="document('dbdef.xml')" />

 <xsl:template match="/">
    <xsl:variable name="all-columns" select="//column"/>
    <xsl:for-each select="$all-columns">
       <xsl:variable name="dbcolumn" select="@dbcolumn" />
       <xsl:for-each select="$dbdef">
          <xsl:variable name="dbdef-col" select="key('dbdef-cols', $dbcolumn)" />
          <xsl:value-of select="$dbcolumn"/>=<xsl:value-of select="$dbdef-col"/>,

I'm getting:

 col1=, col2=, col3=,

So my lookup is not working. Can anyone see why?
Also, is this a good way to do this kind of lookup, or is there a simpler way?
I'm using MSXML4.

John Sands

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list

Current Thread