//* [ local-name()='component' and namespace-uri()='urn:hl7-org:v3' ]
使用此路径,我可以获得这样的节点:
<?xml version="1.0" encoding="utf-8"?>
<ClinicalDocument xmlns="urn:hl7-org:v3">
<component>
<structuredBody>
<component>
<section>
<code code="10164-2" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC"/>
<title>History of Present Illness</title>
<text>
</text>
</section>
</component>
<component> ...... </component>
<component> ...... </component>
</structuredBody>
</component>
</ClinicalDocument>
为了得到如下节点:
<component>
<section>
<code code="10164-2" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC"/>
<title>History of Present Illness</title>
<text>
</text>
</section>
</component>
我将路径更改为:
//* [ local-name()='component' and namespace-uri()='urn:hl7-org:v3' and position()=1]
但是,如何使用[code="10164-2"]
作为资格来获得相同的结果?
编辑2012-12-17
//:成分[1] //:成分[.//:部分/:代码[@码= '10164-2']]
这个xpath运行良好,我可以得到我想要的节点。如果我使用
,我该怎么办?// * [local-name()='component'和namespace-uri()='urn:hl7-org:v3'])[1]
选择父<component/>
节点,然后将[@ code ='10164-2']添加到谓词部分以获取我想要的<component/>
子节点。 (我不想在路径中使用:避免命名空间问题)
答案 0 :(得分:1)
只需在谓词中添加and section/code/@code='10164-2'
:
//*:component[namespace-uri()='urn:hl7-org:v3' and section/code/@code='10164-2']
注意:如果namespace-uri()='urn:hl7-org:v3'
不在该命名空间中,则可能必须删除component
。您在&#34; 中的示例,以便获得如下节点:&#34;没有命名空间。
此外,由于您标记了XPath 2.0问题,因此我使用*:component
代替local-name()
。
答案 1 :(得分:1)
使用强>:
((//*[local-name()='component'
and namespace-uri()='urn:hl7-org:v3']
)[1]
//*[local-name()='component'
and
namespace-uri()='urn:hl7-org:v3'
]
)[1]
基于XSLT的验证:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:copy-of select=
"((//*[local-name()='component'
and namespace-uri()='urn:hl7-org:v3']
)[1]
//*[local-name()='component'
and
namespace-uri()='urn:hl7-org:v3']
)[1]
"/>
</xsl:template>
</xsl:stylesheet>
在提供的XML文档上应用此转换时:
<component xmlns="urn:hl7-org:v3">
<structuredBody>
<component>
<section>
<code code="10164-2" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC"/>
<title>History of Present Illness</title>
<text>
</text>
</section>
</component>
<component> ...... </component>
<component> ...... </component>
</structuredBody>
</component>
评估XPath表达式并将此评估结果复制到输出中:
<component xmlns="urn:hl7-org:v3">
<section>
<code code="10164-2" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC"/>
<title>History of Present Illness</title>
<text/>
</section>
</component>