|
Subject: [xsl] How to select elements based on the value(s) of a multi-valued attribute? From: "Rogier Hofboer" <hofboer@xxxxxxxxx> Date: Mon, 28 Jan 2002 17:04:45 +0100 |
Hi everybody,
Can somebody help me to solve the following problem?
A resource can be translated into more languages
(and multiple times in the same language) and every
translation in that language is applicable for one or
more countries. This is because if one language is
spoken in more countries, some resources are translated
once i.e. the translations for the word "Name" but the
text on the homepage is translated more times in the same
language but each translation is appropiate for another country.
xml:
<resource name="hello">
<translation>
<language>fr</language>
<country>be</country>
<country>fr</country>
<!-- translation in french for france and belgium -->
<text>Bonjour</text>
</translation>
<translation>
<language>nl</language>
<country>be</country>
<!-- translation in dutch for belgium -->
<text>Goedendag</text>
</translation>
<translation>
<language>nl</language>
<country>nl</country>
<!-- translation in dutch for the netherlands -->
<text>Hallo</text>
</translation>
<translation>
<language>en</language>
<country>nl</country>
<country>be</country>
<!-- translation in english for the netherlands and belgium -->
<text>Hello</text>
</translation>
<translation>
<language>en</language>
<country>fr</country>
<!-- translation in english for france -->
<text>Bon Hello (just an example)</text>
</translation>
</resource>
xslt:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes"/>
<xsl:param name="country" select="'nl'" />
<xsl:param name="language" select="'nl'" />
<xsl:template match="//resource">
<xsl:apply-templates select="translation[language=$language and
country=$country]"/>
</xsl:template>
<xsl:template match="//translation">
<xsl:apply-templates select="text"/>
</xsl:template>
</xsl:stylesheet>
This works :-) Changing the 2 parameters also works :-)
(they are in the future passed to the stylesheet processor, already tested
with MSXML and it worked,
now it are just defaults if nothing is passed)
BUT I don't like the XML syntax...
I want this XML as input and I need an XSLT with the same result as above:
(not that this is also possible: country="be,fr,en,de" and even in some
cases
language="nl,fr,en" or something like that, I would like it if country="be,
nl, fr"
would be possible...)
xml:
<resource name="hello">
<translation language="fr" country="be,fr">Bonjour</translation>
<translation language="nl" country="be">Goedendag</translation>
<translation language="nl" country="nl">Hallo</translation>
<translation language="en" country="nl, be">Hello</translation>
<translation language="en" country="fr">Bon Hello (just an
example)</translation>
</resource>
xslt:
????
Can anybody help me out?
Thanks in advance,
Rogier Hofboer
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] rewriting xslt 1 to xslt , Bryan Rasmussen | Thread | RE: [xsl] How to select elements ba, Michael Kay |
| Re: [xsl]: Context inside nested fo, Trevor Nash | Date | Re: [xsl] how to format page number, JZhang |
| Month |