我正在使用XSLT樣式表。我有一個節點(節點A)和一羣孩子,我正在循環另一個節點(節點B)的孩子。我想每一個時間節點B的孩子也是節點A的孩子做一些事情,所以我有這樣的代碼:爲什麼我必須將此節點分配給樣式表中的變量?
<xsl:if test="$prodbins/bin[./text()=/root/Line[1]/Element[6]/text()]">
但不起作用(測試失敗;表達式返回false ),即使表達式的左側和右側在單獨計算時相等。
但是,當我這樣做:
<xsl:variable name="curbin" select="/root/Line[1]/Element[6]/text()"/>
<xsl:if test="$prodbins/bin[./text()=$curbin]">
的表達式的值爲true。爲什麼我必須使用$ curbin變量來獲得我期待的結果?
你可以嘗試'的'(notice current()function) - 如果查詢變量,我不記得它是否有效。它不起作用的原因是因爲你查詢變量'/'查找變量內容的根節點,而不是你正在變換的源文檔。如果我沒有記錯,'current()'應該返回你所在模板的上下文元素。 –
Pawel
這確實有效。讓我看看我是否理解你是正確的 - 在'test'子句中,'/'是指'$ prodbins'的根,而不是文檔的根?非常有趣 - 我不知道。想要將其作爲答案發布?看起來對我來說是決定性的...... – Aerik
@Aerik,這沒有意義,'/'總是選擇當前上下文節點所屬的文檔。你正在處理多個文檔嗎? – acelent