XPath:计算具有不同名称的真子节点?

时间:2013-06-04 05:31:32

标签: xpath infopath

是否可以在下面的XML中使用XPath计算以下TRUE节点(具有不同的名称)?

<my:templateBase>
  <my:executive>true</my:executive>
  <my:seniorManager>false</my:seniorManager>
  <my:manager>false</my:manager>
  <my:supervisor>false</my:supervisor>
  <my:directReport>false</my:directReport>
</my:templateBase>

我似乎无法解决XPATH,例如count(templateBase/*[?=true()])

2 个答案:

答案 0 :(得分:1)

查找包含文本“true”的所有元素并计算它们。

count(//my:templateBase/*[text() = 'true'])

确保正确注册命名空间或使用*代替my作为通配符命名空间,例如

count(//*:templateBase/*[text() = 'true'])

我不知道Infopath,也许它也只是省略了命名空间。

如果您还想搜索子节点以获取文本“true”,请使用

count(//my:templateBase//*[text() = 'true'])

答案 1 :(得分:-1)

xpath是

count(//my:templateBase/*[. = 'true']

请注意,您的XML中明显有一些名称空间my。也许你必须让你的处理器知道这个命名空间。您还可以使用通配符,即*:templateBase