布尔值;sum";在XSLT中

布尔值;sum";在XSLT中,xslt,boolean,Xslt,Boolean,我知道我可以用数值对多个节点求和。 如何在一组节点上进行“布尔和”?例如: <a> <b>false</b> <b>false</b> <b>true</b> <b>false</b> </a> 假的 假的 真的 假的 如何获取所有节点值的布尔或?(应为“真”)。您可以计算真值: <xsl:if test="count(a/b[text()='tru

我知道我可以用数值对多个节点求和。 如何在一组节点上进行“布尔和”?例如:

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

假的
假的
真的
假的

如何获取所有
节点值的布尔或?(应为“真”)。

您可以计算真值:

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

真的
如果存在任何真值,或将为真。

使用:

boolean(/*/b[. = 'true'])
 /*/b[. = 'true']
这将生成表达式的布尔值

boolean(/*/b[. = 'true'])
 /*/b[. = 'true']
且当上述表达式选择至少一个节点时,该值恰好为真,也就是说,存在一个
b
,该节点是顶层元素的子元素,其字符串值为字符串
'true


如果您还想计算“布尔乘积”(使用and),请执行以下操作:

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

如果它是基于文本的,您不需要计算:
/a/b[.='true']
太好了!我担心我会进入递归模板的丛林。非常感谢它可以放在一个表达式中,也感谢“布尔乘积”。@Justsalt,欢迎您。是的,XPath是一种很棒的语言。今天我还学习了false()的XML输出,即字符串'false',本身具有布尔值true()。