xsl-list
[Top] [All Lists]

RE: Keys off of variable xml source

2005-04-01 10:12:11
That should be

<xsl:key name="k" match="entry" use="@code"/>

and

<xsl:attribute name="value">
  <xsl:value-of select="key('k', $code)/@value"/>
</xsl:attribute>

MK 

-----Original Message-----
From: Michael Kay [mailto:mike(_at_)saxonica(_dot_)com] 
Sent: 01 April 2005 18:01
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] Keys off of variable xml source

 

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/
 



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--





--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>