鉴于这个 XML 片段(我已经删除了多余的绒毛):
<Event name="DataComplete">
<Task id="d20a0053-7678-43ba-bc8a-ece24dcff15b"/>
<DataItems>
<DataItem name="Survey" type="task">
<Value status="NotStarted" taskId="00000000-0000-0000-0000-000000000000" />
</DataItem>
<GroupDataItem name="CT_Visit"> --- this may repeat
<ItemGroup id="1" >
<DataItem name="Special Contractor" type="string">Yes</DataItem>
什么 xPath 表达式将确定名称为“Special Contractor”的任何 DataItem 是否具有值“Yes”。
我正在尝试这样的事情:
Yes = /Event/Task/DataItems/GroupDataItem/ItemGroup/DataItem/@[normalize-space() = 'Special Contractor']
许多变体通常会导致“无效的 xPath 表达式”。
任何线索最受欢迎。谢谢!
[编辑]
感谢 Jiri 和 Will 的回答。Will 很接近,但正如我的问题所述,我正在尝试确定是否有任何* 元素具有 value Yes
。我应该更明确地说我需要一个布尔值,真或假。改编威尔的回答让我想到了这一点:
"Yes" = //Event/Task/DataItems/GroupDataItem/ItemGroup/DataItem[@name='Special Contractor']
这将返回一个简单的Boolean='true'
or Boolean='false'
。
多谢你们!