Der Wert der Variablen $var, wie in definiert:
<xsl:variable name="var" select="boolean('false')"/>
ist
true()
Dies liegt daran, dass in XPath " false
" ist eine gewöhnliche Zeichenkette, im Gegensatz zu false()
der der Konstruktor für die boolean
Wert false()
Die beiden booleschen Werte in XPath sind (Beachten Sie, dass sie konstruiert sind!):
true()
und false()
Die Einzelheiten der Umwandlung eines beliebigen Wertes in einen booleschen Wert sind in der XPath-Spezifikation .:
"Die boolean wandelt ihr Argument wie folgt in einen booleschen Wert um:
-
eine Zahl ist wahr, wenn und nur wenn sie weder eine positive oder negative Null ist noch NaN
-
eine Knotenmenge ist wahr, wenn und nur wenn sie nicht-leer ist
-
eine Zeichenkette ist wahr, wenn und nur wenn ihre Länge ungleich Null ist
-
ein Objekt von einem anderen Typ als den vier Grundtypen wird in Abhängigkeit von diesem Typ in einen Booleschen Wert umgewandelt "
In Ihrem Fall ist die Zeichenkette "false" nicht die Zahl 0 und hat eine positive Länge, so dass die Regel im dritten Aufzählungspunkt oben angewandt wird und folgendes ergibt true()
.
Um also eine Variable in XSLT 1.0 zu definieren, deren Wert false()
muss man die Definition wie folgt schreiben:
<xsl:variable name="vMyVar" select="false()"/>
oder, wenn Sie sich nicht mehr genau daran erinnern, können Sie auch schreiben:
<xsl:variable name="vMyVar" select="1 = 0"/>
(geben Sie einen beliebigen Ausdruck an, der den Wert false()
) und der XSLT-Prozessor wird die Arbeit für Sie erledigen.
In XSLT 2.0 ist es immer besser, den Typ explizit anzugeben der Variablen:
<xsl:variable name="vMyVar" as="xs:boolean" select="false()"/>