以下是我的回复数据:
<Bundle xmlns="http://hl7.org/fhir">
<id value="ffd821ee-f4d0-43fc-8eb1-df1d9bd63340"/>
<meta>
<lastUpdated value="2015-08-05T09:14:57.242-04:00"/>
</meta>
<type value="searchset"/>
<base value="http://fhirtest.uhn.ca/baseDstu2"/>
<total value="535"/>
<link>
<relation value="self"/>
<url value="http://fhirtest.uhn.ca/baseDstu2/Patient?_format=xml"/>
</link>
<link>
<relation value="next"/>
<url value="http://fhirtest.uhn.ca/baseDstu2?_getpages=0bad92c1-cfe3-4a23-bd20-e24e854c16da&_getpagesoffset=10&_count=10&_format=xml&_pretty=true"/>
</link>
</Bundle>
我需要阅读value
标记的<link><url>
属性value
属性<relation>
为next
。
所以,我的预期输出是http://fhirtest.uhn.ca/baseDstu2?_getpages=0bad92c1-cfe3-4a23-bd20-e24e854c16da&_getpagesoffset=10&_count=10&_format=xml&_pretty=true
。
读取此内容的XPath表达式是什么?
答案 0 :(得分:1)
答案取决于您用来评估XPath表达式的工具或库。如果在最外层元素上声明的默认名称空间自动可用于XPath引擎或被忽略,则以下操作将执行:
string(/Bundle/link[relation/@value = 'next']/url/@value)
如果不是这种情况,则需要将此命名空间URI与前缀(特定于工具或库)一起注册,然后在XPath表达式中使用前缀:
string(/fhi:Bundle/fhi:link[fhi:relation/@value = 'next']/fhi:url/@value)
由于您使用XSLT标记了此问题,或许您在XSLT中使用XPath?然后在xsl:stylesheet
元素上声明此命名空间:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fhi="http://hl7.org/fhir">
或者,要完全忽略名称空间(不推荐),请使用
string(/*[local-name() = 'Bundle']/*[local-name() = 'link'][*[local-name() = 'relation']/@value = 'next']/*[local-name() = 'url']/@value)
在所有情况下,结果都是
http://fhirtest.uhn.ca/baseDstu2?_getpages=0bad92c1-cfe3-4a23-bd20-e24e854c16da&_getpagesoffset=10&_count=10&_format=xml&_pretty=true