RE: [xsl] Keeping a map in my XSL

Subject: RE: [xsl] Keeping a map in my XSL
From: Eric van der Vlist <vdv@xxxxxxxxxxxx>
Date: Tue, 13 Sep 2005 22:02:50 +0200
Le mardi 13 septembre 2005 ` 15:40 -0400, Kevin L. Cobb a icrit :
> Heres the thing though. I can't have the map in my source XML, I want it
> in my source XSLT.
> Is there a way to set the map in an XML document and include it in my
> Source XSL and then 
> Reference it in the XSLT using the key() function?

Sure, just use xsl:for-each to change document:

<xsl:for-each select="document('map.xml')/">
  <!-- You are now at the root of map.xml
       and if you use key, that key will
       be applied to this document -->
  <xsl:value-of select="key('mappings', $lookup)/@value"/>
</xsl:for-each>

Note that you can even include the map in the XSLT transformation itself
assuming that :
      * You use a namespace (that isn"t the XSLT namespace)
      * Your map is a top level element of the transformation.

You can then access to your map through document(''):

<xsl:for-each select="document('')/">
  <!-- You are now at the root of your XSLT transformation
       and if you use a key, that key will
       be applied to your transformation -->
  <xsl:value-of select="key('mappings', $lookup)/@value"/>
</xsl:for-each>

Hope this helps.

Eric
> 
-- 
Lisez-moi sur XMLfr.
                       http://xmlfr.org/index/person/eric+van+der+vlist/
------------------------------------------------------------------------
Eric van der Vlist       http://xmlfr.org            http://dyomedea.com
(ISO) RELAX NG   ISBN:0-596-00421-4 http://oreilly.com/catalog/relax
(W3C) XML Schema ISBN:0-596-00252-1 http://oreilly.com/catalog/xmlschema
------------------------------------------------------------------------

Current Thread