Subject: RE: [xsl] xsl:if From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Mon, 27 Sep 2004 09:18:25 +0100 |
You are declaring two different variables with the same name. The second variable goes out of scope as soon as you exit the xsl:if instruction. So all subsequent references are to the first variable. XSLT 1.0 makes your construct illegal, but some XSLT 1.0 processors (notably Xalan, IIRC) allow it. Unfortunately, the construct has been made legal in XSLT 2.0. Saxon should give you a warning that the second variable declaration is pointless, because it can never be referred to. The way to do this (in 1.0) is <xsl:variable name="currencyTmp"> <xsl:choose> <xsl:when test="exp1 = ''"> <xsl:value-of select="exp2"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="exp1"/> </ </ </ In 2.0 it's easier: <xsl:variable name="currencyTmp" select="if (exp1 = '') then exp2 else exp1"/> Michael Kay http://www.saxonica.com/ > -----Original Message----- > From: Andreas Andersson [mailto:andreas@xxxxxxxxxxxxxx] > Sent: 27 September 2004 08:38 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Subject: [xsl] xsl:if > > Hi! > > I'm trying to test if a variable is the empty string or not, I can't > find out how to do it with xsl:if. Here is what I have: > > <xsl:variable name="currencyTmp" select="select_value_in_some_cell"/> > <xsl:if test="$currencyTmp=''"> > <xsl:variable name="currencyTmp" > select="select_value_in_some_other_cell"/> > </xsl:if> > > I know that my selects work, but the ifs doesn't? > > Anyone know what I'm doing wrong? > > Thanks. > > -- > Andreas Andersson > IT Dept. > Travelstart Nordic > andreas@xxxxxxxxxxxxxx > http://www.travelstart.se
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] xsl:if, Andreas Andersson | Thread | RE: [xsl] xsl:if, KS.Bhaskar |
RE: [xsl] xsl:if, Eldho George | Date | [xsl] XSLT, XML and Identity transf, Michael PG |
Month |