我知道我可以用數值求和多個節點。 我怎麼能在一組節點上做一個「布爾和」?例如:XSLT中的布爾「求和」
<a>
<b>false</b>
<b>false</b>
<b>true</b>
<b>false</b>
</a>
我怎麼能得到所有的<b>
節點值的布爾OR? (這應該是'真實的')。
我知道我可以用數值求和多個節點。 我怎麼能在一組節點上做一個「布爾和」?例如:XSLT中的布爾「求和」
<a>
<b>false</b>
<b>false</b>
<b>true</b>
<b>false</b>
</a>
我怎麼能得到所有的<b>
節點值的布爾OR? (這應該是'真實的')。
使用:
boolean(/*/b[. = 'true'])
這產生了表達的布爾值:
/*/b[. = 'true']
和準確當上述表達式選擇爲真至少一個節點 - 也就是說,當b
是頂部元素的子元素,並且其字符串值是字符串'true
。
如果您還想計算 「布爾產品」(使用和),做到:
not(/*/b[. = 'false'])
太棒了!我擔心我會進入遞歸模板的叢林。非常感謝它可以放在一個單一的表達式中,也適用於「布爾產品」。 – Justsalt 2013-02-14 13:12:45
@Justsalt,不客氣。是的,XPath是一門偉大的語言。 – 2013-02-14 15:26:49
@JLRishe,感謝編輯 - 讚賞。 – 2013-02-14 15:37:26
你可以算真值:
<xsl:if test="count(a/b[text()='true']) > 0">
true
</xsl:if>
如果有任何真值或將是真實的。
如果它是基於文本,你不需要計數:'/ a/b [。='true']' – 2013-02-13 22:01:52
今天,我還了解到,在假XML()的輸出,那就是字符串'false',它本身具有布爾值true()。 – Justsalt 2013-02-15 14:28:27