xml editor

Supported platforms

Compatible with Windows7 & Mac OS X Snow Leopard

Ready for data server software
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

RE: [xsl] Keys off of variable xml source


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
Keywords
xml
XML Editor | XML Author | WYSIWYG Editors | Schema Editor | XSD Documentation | XSL/XSLT Editor | XQuery | XML Databases | SVN Client
© 2002-2011 SyncRO Soft Ltd. All rights reserved. | Sitemap | Privacy Policy | This website was created & generated with <oXygen/>®XML Editor