我正在尝试检索元素
的一个(也是唯一一个)/Document/docOf/serviceEvent/effectiveTime/@value
时的
/Document/docOf/tempId/@root="1.3.5"
docOf元素可以按任何顺序出现,不能保证具有被追捧的tempId的元素是xml中的第一个元素。
我一直在尝试将position()函数与tempId / @ root =“1.3.5”结合使用 但发现它不按照我打算的方式工作。如果我写
tempId/@root="1.3.5" and position()=1
我得到了正确的结果,但只有当tempId / @ root =“1.3.5”元素出现在具有其他tempIds的元素之前。如何从具有正确tempId / @ root的元素中检索effectiveTime / @值并仅检索一次?
<Document>
<docOf>
<tempId root="1.3.2"codeSystem="11.2.3"/>
<serviceEvent>
<code code="UXZX0A"/>
</serviceEvent>
</docOf>
<docOf>
<tempId root="1.3.5"/>
<serviceEvent classCode="ACT">
<effectiveTime value="20101122145613+0100"/>
</serviceEvent>
</docOf>
<docOf>
<tempId root="1.3.5"/>
<serviceEvent classCode="ACT">
<effectiveTime value="20101122145613+0100"/>
</serviceEvent>
</docOf>
<docOf>
<tempId root="1.3.2"/>
<serviceEvent>
<code code="UXZX0A" codeSystem="11.2.3"/>
</serviceEvent>
</docOf>
</Document>
答案 0 :(得分:1)
尝试:
/Document/docOf[tempId/@root='1.3.5'][1]/serviceEvent/effectiveTime/@value
首先获取root = 1.3.5的所有文档,然后从该集合中选择第一个节点。然后它从中提取value
属性。