[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
Hmm, maybe I should try to explain it better.
This should be transformed in a table that looks like:
I use the following stylesheet:
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/ Transform">
<xsl:param name="locale"/>
<xsl:variable name="locale2" select="substring-before ($locale,'_')"/>
<xsl:key name="l" match="entry" use="concat(../../@name,' ',@key)"/>
<xsl:key name="help" match="help" use="concat(../../@name,' ')"/>
<xsl:template match="factory">
<table>
<xsl:for-each select="parameter">
<tr>
<td>
<xsl:choose>
<xsl:when test="key('l',concat($locale,' parameter.caption'))">
<xsl:apply-templates select="key('l',concat ($locale,' parameter.caption'))"/>
</xsl:when>
<xsl:when test="key('l',concat($locale2,' parameter.caption'))">
<xsl:apply-templates select="key('l',concat ($locale2,' parameter.caption'))"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="key('l',' parameter.caption')"/>
</xsl:otherwise>
</xsl:choose>
</td>
<td>
<xsl:choose>
<xsl:when test="key('l',concat($locale,' parameter.description'))">
<xsl:apply-templates select="key('l',concat ($locale,' parameter.description'))"/>
</xsl:when>
<xsl:when test="key('l',concat($locale2,' parameter.description'))">
<xsl:apply-templates select="key('l',concat ($locale2,' parameter.description'))"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="key('l',' parameter.description')"/>
</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</xsl:for-each>
<table>
</xsl:template>
</xsl:transform>
However, if there are two parameters, with caption n and r this returns:
and not
I would really appreciate any help on this.
Fwd: [xsl] i18n and l10n question
Subject: Fwd: [xsl] i18n and l10n question From: Nico Van Cleemput <Nicolas.VanCleemput@xxxxxxxx> Date: Mon, 13 Nov 2006 09:26:17 +0100 |
Hmm, maybe I should try to explain it better.
This is my XML-file: <factory> <parameter> <name></name> <type></type> <i18n> <properties> <entry key="parameter.caption">caption</entry> <entry key="parameter.description">description</entry> </properties> <node name="nl"> <properties> <entry key="parameter.caption">caption</entry> <entry key="parameter.description">description</entry> </properties> </node> </i18n> </parameter> <parameter> <name></name> <type></type> <i18n> <properties> <entry key="parameter.caption">caption</entry> <entry key="parameter.description">description</entry> </properties> <node name="nl"> <properties> <entry key="parameter.caption">caption</entry> <entry key="parameter.description">description</entry> </properties> </node> </i18n> </parameter> </factory>
This should be transformed in a table that looks like:
<table> <tr><td>caption</td><td>description</td></tr> ... </table>
I use the following stylesheet:
<xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/ Transform">
<xsl:param name="locale"/>
<xsl:variable name="locale2" select="substring-before ($locale,'_')"/>
<xsl:key name="l" match="entry" use="concat(../../@name,' ',@key)"/>
<xsl:key name="help" match="help" use="concat(../../@name,' ')"/>
<xsl:template match="factory">
<table>
<xsl:for-each select="parameter">
<tr>
<td>
<xsl:choose>
<xsl:when test="key('l',concat($locale,' parameter.caption'))">
<xsl:apply-templates select="key('l',concat ($locale,' parameter.caption'))"/>
</xsl:when>
<xsl:when test="key('l',concat($locale2,' parameter.caption'))">
<xsl:apply-templates select="key('l',concat ($locale2,' parameter.caption'))"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="key('l',' parameter.caption')"/>
</xsl:otherwise>
</xsl:choose>
</td>
<td>
<xsl:choose>
<xsl:when test="key('l',concat($locale,' parameter.description'))">
<xsl:apply-templates select="key('l',concat ($locale,' parameter.description'))"/>
</xsl:when>
<xsl:when test="key('l',concat($locale2,' parameter.description'))">
<xsl:apply-templates select="key('l',concat ($locale2,' parameter.description'))"/>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="key('l',' parameter.description')"/>
</xsl:otherwise>
</xsl:choose>
</td>
</tr>
</xsl:for-each>
<table>
</xsl:template>
</xsl:transform>
However, if there are two parameters, with caption n and r this returns:
<table> <tr><td>nr</td><td>description 1description 2</td></tr> <tr><td>nr</td><td>description 1description 2</td></tr> </table>
and not
<table> <tr><td>n</td><td>description 1</td></tr> <tr><td>r</td><td>description 2</td></tr> </table>
I would really appreciate any help on this.
Thanks in advance, Nico Van Cleemput
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] i18n and l10n question, Nicolas Van Cleemput | Thread | Re: [xsl] i18n and l10n question, Florent Georges |
[xsl] Standards checkers for XSLT, Kamal Bhatt | Date | [xsl] Custom Ordered Lists, Philip Vallone |
Month |