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

RE: [xsl] XSLT (2) namespace safe i18n patterns


Subject: RE: [xsl] XSLT (2) namespace safe i18n patterns
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 23 Nov 2009 16:35:33 -0000

> Currently using prefix matching (this is what needs 
> improving/fixing) I can do something like:
> 
> <xsl:variable name="fullname" select="string-join(($lang, 
> $name), ':')"/> <xsl:for-each select="$source">
>      <xsl:value-of select="if (string(@*[name() eq $fullname])) then
> @*[name() eq $fullname] else @*[name() eq $name]"/></xsl:for-each>

It's not clear to me why you are concerned with the prefix. 

I assume that when you wrote this:

<global-element
    xmlns:fr="http://www.somedomain.com/fr"
    xmlns:en="http://www.somedomain.com/fr"
    xmlns:de="http://www.somedomain.com/fr"
    more-attributes=". . ."
 >

you really meant

<global-element
    xmlns:fr="http://www.somedomain.com/fr"
    xmlns:en="http://www.somedomain.com/en"
    xmlns:de="http://www.somedomain.com/de"
    more-attributes=". . ."
 >

and then your code above would become something like

<xsl:variable name="fullname" 
              select="QName(concat('http://www.somedomain.com/', $lang),
$name)"/> 
<xsl:for-each select="$source">
   <xsl:value-of select="if (string(@*[node-name() eq $fullname])) 
                         then @*[node-name() eq $fullname] 
                         else @*[name() eq $name]"/>
</xsl:for-each>

Regards,

Michael Kay
http://www.saxonica.com/
http://twitter.com/michaelhkay 


Current Thread