Hi,
<!-- this template should be the "translation table" -->
<xsl:template name="component.name">
<xsl:param name="cname" />
<xsl:choose>
<xsl:when test="$cname='0000000001'">
One(
<xsl:value-of select="$cname" />
)
</xsl:when>
<xsl:when test="$cname='0000000002'">
Two(
<xsl:value-of select="$cname" />
)
</xsl:when>
<xsl:when test="$cname='0000000003'">
Three(
<xsl:value-of select="$cname" />
)
</xsl:when>
<xsl:when test="$cname='0000000004'">
Four(
<xsl:value-of select="$cname" />
)
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$cname" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
[snip]
What I would expect, is that all '000000001' will be
substituted with 'One', and so on.
But why do you have the "(
<xsl:value-of select="$cname" />
)" in your stylesheet, then? Just use
<xsl:when test="$cname='0000000001'">One</xsl:when>
if you only want "One"
But doing all the above
with Xalan, IE, or Mozilla results in the following:
One(0000000001)Two(0000000005)
Two(0000000002)Three(0000000006)
Four(0000000004)Three(0000000003)
0000000007
Which is correct. What do you want?
I don't know how it may happen, that if I pass '0000000005',
it will print 'Two'?
No, because you don't have a xsl:when that would match "0000000005", so the
xsl:otherwise will be used and it will print out the cname parameter value.
Is this a bug, or normal behaviour?
It's a bug in your stylesheet if the stylesheet doesn't generate what you could
want it to generate.
However, if someone knows a better way to do this
"translation" of codes to descriptive text, please let me know.
E.g.
<xsl:template name="component.name">
<xsl:param name="cname" />
<xsl:choose>
<xsl:when test="$lookup[(_at_)key = $cname]">
<xsl:value-of select="$lookup[(_at_)key = $cname]/@value"/> (
<xsl:value-of select="$cname"/>)
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$cname"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:variable name="lookup" select="document('')/*/x:lookup/item"
xmlns:x="x"/>
<x:lookup xmlns:x="x">
<item key="0000000001" value="One" />
<item key="0000000002" value="Two" />
<item key="0000000003" value="Three" />
<item key="0000000004" value="Four" />
</x:lookup>
Cheers,
Jarno - Feindflug: Lagerhaft
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list