Der Wert der Variablen $ var wie definiert in:
<xsl:variable name="var" select="boolean('false')"/>
ist
true()
Dies liegt daran, dass in XPath " false
" im Gegensatz zu " " eine gewöhnliche Zeichenfolge ist false()
, die der Konstruktor für den boolean
Wert istfalse()
Die zwei booleschen Werte in XPath sind (beachten Sie, dass sie konstruiert sind!):
true()
und false()
Die Details zum Konvertieren eines Werts in einen Booleschen Wert sind in der XPath- Spezifikation aufgeführt :
"Die boolesche Funktion konvertiert ihr Argument wie folgt in einen booleschen Wert:
Eine Zahl ist genau dann wahr, wenn sie weder eine positive oder negative Null noch NaN ist
Ein Knotensatz ist genau dann wahr, wenn er nicht leer ist
Ein String ist genau dann wahr, wenn seine Länge ungleich Null ist
Ein Objekt eines anderen Typs als der vier Grundtypen wird in einer von diesem Typ abhängigen Weise in einen Booleschen Wert konvertiert. "
In Ihrem Fall ist die Zeichenfolge "false" nicht die Zahl 0 und hat eine positive Länge. Daher wird die Regel im obigen dritten Aufzählungszeichen angewendet und ergibt true()
.
Um eine Variable in XSLT 1.0 zu definieren, deren Wert lautet false()
, muss die Definition daher wie folgt geschrieben werden:
<xsl:variable name="vMyVar" select="false()"/>
oder, wenn Sie sich nicht genau daran erinnern, können Sie immer schreiben:
<xsl:variable name="vMyVar" select="1 = 0"/>
(Geben Sie einen Ausdruck an, der ausgewertet wird false()
), und der XSLT-Prozessor erledigt die Arbeit für Sie.
In XSLT 2.0 ist es immer besser, den Typ der Variablen explizit anzugeben :
<xsl:variable name="vMyVar" as="xs:boolean" select="false()"/>