2013-02-13 71 views
3

我知道我可以用數值求和多個節點。 我怎麼能在一組節點上做一個「布爾和」?例如:XSLT中的布爾「求和」

<a> 
    <b>false</b> 
    <b>false</b> 
    <b>true</b> 
    <b>false</b> 
</a> 

我怎麼能得到所有的<b>節點值的布爾OR? (這應該是'真實的')。

+0

今天,我還了解到,在假XML()的輸出,那就是字符串'false',它本身具有布爾值true()。 – Justsalt 2013-02-15 14:28:27

回答

3

使用

boolean(/*/b[. = 'true']) 

這產生了表達的布爾值:

/*/b[. = 'true'] 

和準確當上述表達式選擇爲真至少一個節點 - 也就是說,當b是頂部元素的子元素,並且其字符串值是字符串'true


如果您還想計算 「布爾產品」(使用,做到:

not(/*/b[. = 'false']) 
+1

太棒了!我擔心我會進入遞歸模板的叢林。非常感謝它可以放在一個單一的表達式中,也適用於「布爾產品」。 – Justsalt 2013-02-14 13:12:45

+0

@Justsalt,不客氣。是的,XPath是一門偉大的語言。 – 2013-02-14 15:26:49

+0

@JLRishe,感謝編輯 - 讚賞。 – 2013-02-14 15:37:26

0

你可以算真值:

<xsl:if test="count(a/b[text()='true']) > 0"> 
     true 
</xsl:if> 

如果有任何真值或將是真實的。

+1

如果它是基於文本,你不需要計數:'/ a/b [。='true']' – 2013-02-13 22:01:52