xsl-list
[Top] [All Lists]

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

2009-11-23 11:36:09
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 


--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--