RE: [xsl] using document() function in match attribute of xsl:key element- possible?

Subject: RE: [xsl] using document() function in match attribute of xsl:key element- possible?
From: "Michael Kay" <mhkay@xxxxxxxxxxxx>
Date: Fri, 11 May 2001 09:54:12 +0100
> I'm trying to remove text content from my stylesheets, and
> load the text
> from a static xml document, called lang.xml. The xml source
> will output an
> element called "lang", which will have a value like "en" or
> "fr". I want my
> stylesheets to reference bits of text content abstractly,
> using the value of
> lang to determine how to find the actual text content within
> lang.xml.
>
> More broadly, my problem is this: How do I approach developing xsl
> stylesheets that are language-independent, where all text content is
> retreived from a static XML source? Are there established methods for
> accomplishing this? Are there any good tutorials or sites
> describing how to
> do it?

Well, keys can certainly help. For example if your language file contains
error messages, such as

<messages xml:lang="en"
<error code="012" text="Illegal UTF-8 character in delimiter"/>
...
</messages >

Then you can index them as

<xsl:key name="errcode" match="error" use="concat(../@xml:lang, '/',
@code)"/>

and you can output a specific message as

<xsl:for-each select="document('errors.xml')">
  <xsl:value-of select="key('errcode', concat($lang, '/', '1234'))"/>
</xsl:for-each>

The for-each is just to switch context to the differnet document, it doesn't
iterate.

Mike Kay


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


Current Thread