Giá trị của biến $ var theo quy định tại:
<xsl:variable name="var" select="boolean('false')"/>
là
true()
Đây là becaus e trong XPath "false
" là một chuỗi bình thường, như trái ngược với false()
, đó là các nhà xây dựng cho giá trị boolean
false()
Hai giá trị boolean trong XPath là (lưu ý rằng chúng được xây dựng!):
true()
và false()
các chi tiết của conve rting bất kỳ giá trị nào để boolean được đánh vần trong số XPath Spec.:
"Chức năng boolean chuyển đổi đối số của nó để một boolean như sau:
một số là đúng khi và chỉ khi nó không phải là tích cực hay tiêu cực zero cũng không NaN
một tập hợp nút là đúng nếu và chỉ khi nó là không trống
một chuỗi là đúng nếu và chỉ khicủa nóchiều dài không phải là zero
một đối tượng của một loại khác với bốn loại cơ bản được chuyển thành một boolean trong một cách mà phụ thuộc vào kiểu đó "
Trong trường hợp của bạn chuỗi "false" không phải là số 0 và có độ dài dương, do đó, quy tắc trong dấu đầu dòng thứ 3 ở trên được áp dụng, sinh lãi true()
.
Vì vậy, để xác định một biến trong XSLT 1.0, có giá trị làfalse()
, người ta cần phải viết định nghĩa như sau:
<xsl:variable name="vMyVar" select="false()"/>
hoặc, nếu bạn không nhớ chính xác này, bạn luôn có thể viết:
<xsl:variable name="vMyVar" select="1 = 0"/>
(chỉ định mọi biểu thức đánh giá là false()
) và bộ xử lý XSLT sẽ thực hiện công việc cho bạn.
Trong XSLT 2.0 nó luôn luôn là tốt hơn để xác định rõ kiểu dữ liệu của biến:
<xsl:variable name="vMyVar" as="xs:boolean" select="false()"/>
Nguồn
2008-12-06 17:20:36
Chỉ cần một gợi ý, nhưng bạn cũng có thể có được một tầm cỡ tốt hơn về câu trả lời nếu bạn viết tiêu đề của bạn như một câu hỏi thích hợp và tránh l33t nói. –
Xin cảm ơn các bạn, xin lỗi về điều đó. – sydlawrence