| Subject: RE: [xsl] Keys off of variable xml source From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Fri, 1 Apr 2005 18:01:01 +0100 | 
> The reason for a lookup xml source is to act as a cross-reference to
> data in the main xml source.  So, I need to reference all elements
> who's ID = 123 but my match is expressed as a code value "abc".  The
> code "abc" maps to 123 in my lookup.
> So, I'm still scratching my head wondering how I might effectively put
> the external file to use with keys, but thinking it won't work, the
> context would strictly be of the main xml source.
I'm not sure which part of the explanation you didn't understand.
lookup.xml
<lookup>
 <entry code="abc" value="123"/>
 <entry code="xyz" value="987"/>
</lookup>
main.xml
<data>
  <reading code="abc"/>
</data>
required output
<data>
  <reading value="123"/>
</data>
stylesheet
<xsl:transform ....
<xsl:key name="k" match="entry" use="code"/>
<xsl:template match="*">
  <xsl:copy><xsl:copy-of select="@*"/><xsl:apply-templates/></xsl:copy>
</xsl:template>
<xsl:template match="reading">
  <reading>
    <xsl:variable name="code" select="@code"/>
    <xsl:for-each select="document('lookup.xml')">
      <xsl:attribute name="value"><xsl:value-of select="key('k', $code)"/>
    </xsl:for-each>
  </reading>
</xsl:template>
or in 2.0
<xsl:template match="reading">
  <reading value="{key('k', @code, document('lookup.xml'))}"/>
</xsl:template>
Michael Kay
http://www.saxonica.com/
| Current Thread | 
|---|
| 
 | 
| <- Previous | Index | Next -> | 
|---|---|---|
| Re: [xsl] Keys off of variable xml , David Carlisle | Thread | Re: [xsl] Keys off of variable xml , Wendell Piez | 
| RE: [xsl] Testing 2 XML documents f, Mukul Gandhi | Date | Re: [xsl] Keys off of variable xml , Wendell Piez | 
| Month |