Subject: RE: [xsl] with-parameter? From: "Michael Kay" <mhk@xxxxxxxxx> Date: Thu, 4 Sep 2003 11:40:08 +0100 |
You are passing your template a set of names: <xsl:with-param name="cname" select="following-sibling::component/name" /> when you should be passing a single name: <xsl:with-param name="cname" select="following-sibling::component[1]/name" /> When you test $cname = "x", it tests if any member of the set is equal to "x". Michael Kay > -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx] On Behalf Of kommersz > Sent: 04 September 2003 10:52 > To: XSL-List@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] with-parameter? > > > 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 > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] with-parameter?, kommersz | Thread | RE: [xsl] with-parameter?, Jarno . Elovirta |
RE: [xsl] with-parameter?, Jarno . Elovirta | Date | RE: [xsl] WHITESPACE WITHIN TAGS., Michael Kay |
Month |