Subject: [xsl] with-parameter? From: kommersz <kommersz@xxxxxxxxxxx> Date: Thu, 4 Sep 2003 11:52:18 +0200 (CEST) |
Hi all! I got the following problem. I've tried to make a translation in an XSLT file, which converts codes into human readable format based upon an internal "translation table". I produced the following xsl: <?xml version="1.0" encoding="iso-8859-2"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/root"> <html> <body> <xsl:for-each select="component"> <xsl:if test="position() mod 2=1"> <xsl:call-template name="component.name"> <xsl:with-param name="cname" select="name" /> </xsl:call-template> <xsl:choose> <xsl:when test="following-sibling::component"> <xsl:call-template name="component.name"> <xsl:with-param name="cname" select="following-sibling::component/name" /> </xsl:call-template> </xsl:when> </xsl:choose> <br /> </xsl:if> </xsl:for-each> </body> </html> </xsl:template> <!-- 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> Tried to apply it to the following xml: <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="test.xsl"?> <root> <component> <name>0000000001</name> </component> <component> <name>0000000005</name> </component> <component> <name>0000000002</name> </component> <component> <name>0000000006</name> </component> <component> <name>0000000004</name> </component> <component> <name>0000000003</name> </component> <component> <name>0000000007</name> </component> </root> What I would expect, is that all '000000001' will be substituted with 'One', and so on. 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 I don't know how it may happen, that if I pass '0000000005', it will print 'Two'? Is this a bug, or normal behaviour? However, if someone knows a better way to do this "translation" of codes to descriptive text, please let me know. Thanks a lot k XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] XSL Taglib problem, Paul Barclay | Thread | RE: [xsl] with-parameter?, Michael Kay |
[xsl] XSL Taglib problem, Paul Barclay | Date | Re: [xsl] setting and returning var, David Carlisle |
Month |