如何使用 XPath 通过另一个属性值获取属性内容?
How get attribute content by another attribute value with XPath?
我有XML喜欢:
<?xml version='1.0' encoding='UTF-8'?>
<ClinicalDocument xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns='urn:hl7-org:v3'
xmlns:ext='urn:hl7-RU-EHR:v1'
xsi:schemaLocation='urn:hl7-org:v3'>
<author>
<time value='20160809000000+0300'/>
<assignedAuthor>
<id root='1.2.643.5.1.13.3.25.1.1.100.1.1.70' extension='1'/>
<id root='1.2.643.100.3' extension='03480134121'/>
<id nullFlavor='NI'/>
</assignedAuthor>
</author>
</ClinicalDocument>
我必须在 id
中获取 extension
,root
的值 = 1.2.643.100.3
。
我必须使用 XPath 2.0。
我试过:
*[name()='ClinicalDocument']/*[name()='author']/*[name()='assignedAuthor']/*[name()='id' and @id='1.2.643.100.3']/@extension
。不工作
/*[name()='ClinicalDocument']/*[name()='author']/*[name()='assignedAuthor']/*[name()='id'][2]/@extension
,但是id
的顺序可以
混合。因此,我应该按 id
的值 检索
我需要它来通过 Java 的 XPathExpression
检索值
首先,绑定命名空间前缀,u:
到urn:hl7-org:v3
。
然后,这个 XPath,
//u:id[@root='1.2.643.100.3']/@extension
将 return 03480134121
,按要求。
如果您无法绑定命名空间前缀,您可以改用此 XPath,
//*[local-name() ='id' and @root='1.2.643.100.3']/@extension
这也将 return 03480134121
,根据要求。
正确的 XPath:/*[name()='ClinicalDocument']/*[name()='author']/*[name()='assignedAuthor']/*[local-name()='id' and @root='1.2.643.100.3']/@extension
我有XML喜欢:
<?xml version='1.0' encoding='UTF-8'?>
<ClinicalDocument xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns='urn:hl7-org:v3'
xmlns:ext='urn:hl7-RU-EHR:v1'
xsi:schemaLocation='urn:hl7-org:v3'>
<author>
<time value='20160809000000+0300'/>
<assignedAuthor>
<id root='1.2.643.5.1.13.3.25.1.1.100.1.1.70' extension='1'/>
<id root='1.2.643.100.3' extension='03480134121'/>
<id nullFlavor='NI'/>
</assignedAuthor>
</author>
</ClinicalDocument>
我必须在 id
中获取 extension
,root
的值 = 1.2.643.100.3
。
我必须使用 XPath 2.0。
我试过:
*[name()='ClinicalDocument']/*[name()='author']/*[name()='assignedAuthor']/*[name()='id' and @id='1.2.643.100.3']/@extension
。不工作/*[name()='ClinicalDocument']/*[name()='author']/*[name()='assignedAuthor']/*[name()='id'][2]/@extension
,但是id
的顺序可以 混合。因此,我应该按id
的值 检索
我需要它来通过 Java 的 XPathExpression
检索值首先,绑定命名空间前缀,u:
到urn:hl7-org:v3
。
然后,这个 XPath,
//u:id[@root='1.2.643.100.3']/@extension
将 return 03480134121
,按要求。
如果您无法绑定命名空间前缀,您可以改用此 XPath,
//*[local-name() ='id' and @root='1.2.643.100.3']/@extension
这也将 return 03480134121
,根据要求。
正确的 XPath:/*[name()='ClinicalDocument']/*[name()='author']/*[name()='assignedAuthor']/*[local-name()='id' and @root='1.2.643.100.3']/@extension