This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: using document() function in match attribute of xsl:key element- possible?
- To: <xsl-list at lists dot mulberrytech dot com>
- Subject: RE: [xsl] using document() function in match attribute of xsl:key element- possible?
- From: "Michael Kay" <mhkay at iclway dot co dot uk>
- Date: Fri, 11 May 2001 09:54:12 +0100
- Reply-To: xsl-list at lists dot mulberrytech dot com
> 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