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: Jeni Tennison <mail@xxxxxxxxxxxxxxxx>
Date: Fri, 11 May 2001 08:31:43 +0100
Hi Mike,

> Ok I understand. Context! Thank you... Unfortunately this answer
> doesn't solve my real problem =)
>
> 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.

>From how you describe it, doesn't this stuff about keys exactly solve
your problem? Assuming that the language is stored in a $lang
variable, you can get the text by changing the context to the
'lang.xml' document and then using the key to retrieve the particular
section in that language.  Something like:

   <xsl:for-each select="document('lang.xml')">
      <xsl:copy-of select="key('sections', $lang)" />
   </xsl:for-each>

Note that the xsl:copy-of could be an xsl:apply-templates if you
needed to process the language-specific static XML some more.

Perhaps if you gave some more details about how the language-specific
text is stored in lang.xml and how/where you needed it to be inserted
into your result the problem would be clearer for us.

> 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?

You might be interested in how Norm (Walsh) solved similar problems in
the DocBook stylesheets. There were certain bits in the stylesheet
that contained generated text, things like 'Chapter' or 'Page' or
whatever, that he needed translated. Those terms were separated into
another document and indexed by language. He also realised that
different languages might have different structures (e.g. the
'Chapter' text and the number of the chapter might appear in two
different orders), so has templates for those structures in a separate
file as well.

(I don't personally agree with the use of text substitution within
those 'templates' - they're a lot easier to use if you use elements
instead - but the principle is there.)

The DocBook stylesheets are available from www.docbook.org.

I hope that helps,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/



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


Current Thread