Nilai variabel $ var seperti yang didefinisikan di:
<xsl:variable name="var" select="boolean('false')"/>
adalah
true()
Ini karena di XPath " false
" adalah string biasa, bukan false()
, yang merupakan konstruktor untuk boolean
nilaifalse()
Dua nilai boolean di XPath adalah (perhatikan bahwa keduanya dibuat!):
true()
dan false()
Detail untuk mengonversi nilai apa pun ke boolean dijelaskan dalam Spesifikasi XPath .:
"Fungsi boolean mengubah argumennya menjadi boolean sebagai berikut:
suatu bilangan benar jika dan hanya jika tidak positif atau negatif nol atau NaN
set node benar jika dan hanya jika tidak kosong
sebuah string bernilai true jika dan hanya jika panjangnya bukan nol
objek dengan tipe selain dari empat tipe dasar diubah menjadi boolean dengan cara yang bergantung pada tipe itu "
Dalam kasus Anda, string "false" bukanlah angka 0 dan memiliki panjang positif, sehingga aturan dalam poin ke-3 di atas diterapkan, menghasilkan true()
.
Oleh karena itu, untuk mendefinisikan variabel dalam XSLT 1.0, yang nilainya adalah false()
, seseorang perlu menulis definisi sebagai berikut:
<xsl:variable name="vMyVar" select="false()"/>
atau, jika Anda tidak terlalu mengingatnya, Anda selalu dapat menulis:
<xsl:variable name="vMyVar" select="1 = 0"/>
(tentukan ekspresi apa pun yang mengevaluasi false()
) dan prosesor XSLT akan melakukan pekerjaan untuk Anda.
Di XSLT 2.0, selalu lebih baik untuk secara eksplisit menentukan jenis variabel:
<xsl:variable name="vMyVar" as="xs:boolean" select="false()"/>