[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: multilanguage support easily or including xml data dynamically


Subject: Re: multilanguage support easily or including xml data dynamically
From: juggy@xxxxxxx
Date: Thu, 8 Jun 2000 17:13:59 +0200

Hi,

Thanks for the comprehensive example. But there's one problem to 
it: I don't really understand it, specifically I've got problems with the 
<template tag>.

>   <xsl:template match="/">
>     <Result>
>       <xsl:apply-templates 
select="XMLNumberData/numberData"/>
>     </Result>
>   </xsl:template>
What does this <xsl:apply-templates...> really do? I read some 
doc about it, but I still can't grasp the concept of it. Isn't it's 
purpose to select things, such as <xsl:for-each>?

Juggy
On 8 Jun 2000, at 1:12, Mike Brown wrote:

> > I have a report to do with multilanguage support. It's designed this
> > way:
> > 
> > XML-Number-Data + XSL --> HTML
> > 
> > Now, I would like to pass a parameter to maybe an ASP, maybe to the
> > XML directly (I appreciate advices!), to select a language, let's
> > say English :). Now this should happen:
> > 
> > 1.) open XML-Number-Data
> > 2.) include chunk of language-data properly (e.g. ENGLISH.XML)
> > 3.) label the data correctly via XSL and 
> > 4.) create HTML.
> > 
> > Do I need a scripting language like JScript for this? I would like
> > to use as much pure XML/XSL as possible.
> 
> You can use pure XML/XSLT, although not by dynamically selecting from
> a master file of all local language info, not dynamically including
> just the language you need. A very brief example to demonstrate
> principles:
> 
> <?xml version="1.0"?>
> <!-- this is XMLNumberData.xml -->
> <XMLNumberData>
>   <numberData desc="albedo">0.39</numberData>
>   <numberData desc="pi">3.1415926</numberData>
> </XMLNumberData>
> 
> <?xml version="1.0"?>
> <!-- this is LanguageData.xml -->
> <!-- forgive my completely made-up Spanish! -->
> <phrases>
>   <phrase key="albedo" xml:lang="en">The albedo of the earth is:
>   </phrase> <phrase key="albedo" xml:lang="es">El albedo de la terra
>   es: </phrase> <phrase key="pi" xml:lang="en">The value of pi is:
>   </phrase> <phrase key="pi" xml:lang="es">El valor de pi es:
>   </phrase>
> </phrases>
> 
> <?xml version="1.0"?>
> <!-- This is LangTest.xsl -->
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
>   <xsl:output method="xml" version="1.0" indent="yes"/>
>   <xsl:param name="LanguageSelected" select="'en'"/>
>   <xsl:variable name="phrases"
>   select="document('LanguageData.xml')/phrases"/>
> 
>   <xsl:template match="/">
>     <Result>
>       <xsl:apply-templates select="XMLNumberData/numberData"/>
>     </Result>
>   </xsl:template>
> 
>   <xsl:template match="numberData">
>     <xsl:value-of
>     select="concat('&#xA;',$phrases/phrase[@key=current()/@desc and
>     lang($LanguageSelected)],.)"/> <!-- note instead of lang($foo) I
>     could've said @xml:lang=$foo -->
>   </xsl:template>
> </xsl:stylesheet>
> 
> 
> Select the desired language by passing a parameter to the stylesheet,
> using the mechanism your XSL processor allows. Default will be 'en'.
> 
> Example with Saxon:
>   saxon XMLNumberData.xml LangTest.xsl LanguageSelected=es
> 
> Output:
> 
> <?xml version="1.0" encoding="utf-8" ?>
> <Result>
> El albedo de la terra es: 0.39
> El valor de pi es: 3.1415926</Result>
> 
> 
> I would have tried to use <xsl:key/> and key() to make the phrase
> selection more efficient, but I couldn't get it to work with the
> separate LanguageData document.
> 
>    - Mike
> ____________________________________________________________________
> Mike J. Brown, software engineer at         My XML/XSL resources:
> webb.net in Denver, Colorado, USA           http://www.skew.org/xml/
> 
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 



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



Current Thread
Keywords