Il valore della variabile $ var come definito in:
<xsl:variable name="var" select="boolean('false')"/>
è
true()
Questo è becaus e in XPath "false
" è una stringa normale, al contrario di false()
, che è il costruttore per il valore boolean
false()
I due valori booleani in XPath sono (si noti che sono costruiti!):
true()
e false()
Il dettaglio di conve il valore di qualsiasi valore booleano è indicato nello XPath Spec.:
"La funzione boolean converte il suo argomento un booleano come segue:
un numero è vero se e solo se è né positivo o negativo nullo né NaN
un node-set è true se e solo se è non vuoto
una stringa è vera se e solo se è lunghezza è non-zero
un oggetto di un tipo diverso da quattro tipi di base viene convertito in un valore booleano in un modo che dipende da quel tipo "
Nel caso la stringa "false" non è il numero 0 e ha una lunghezza positiva, quindi viene applicata la regola nel terzo punto sopra, che produce true()
.
Pertanto, per definire una variabile in XSLT 1.0, il cui valore èfalse()
, si ha la necessità di scrivere la definizione come segue:
<xsl:variable name="vMyVar" select="false()"/>
o, se non esattamente ricordare questo, si può sempre scrivere:
<xsl:variable name="vMyVar" select="1 = 0"/>
(specificare qualsiasi espressione che restituisce false()
) e il processore XSLT farà il lavoro per voi.
In XSLT 2.0 è sempre meglio specificare esplicitamente il tipo della variabile:
<xsl:variable name="vMyVar" as="xs:boolean" select="false()"/>
fonte
2008-12-06 17:20:36
Solo un suggerimento, ma si può anche ottenere una migliore calibro di risposta se si scrive il titolo come una domanda corretta ed evitare la l33t parlare. –
Grazie ragazzi, mi dispiace per quello. – sydlawrence