如何使用命名空间获取标签的属性值?

时间:2013-07-12 07:41:21

标签: xml xslt xpath

我有这个例子:

<soapenv:Envelope 
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:wor="http://services.tdeu.telekom.net/ServAndResMgmt/TechOrderMgmt/WorkorderProvider_v01.00" 
    xmlns:typ="http://services.tdeu.telekom.net/ServAndResMgmt/TechOrderMgmt/WorkorderProvider_v01.00/types"
    xmlns:csdg="http://schemas.telekom.net/csdg_v01.01" 
    xmlns:typ1="http://system-services.t-home.telekom.de/ServiceManagement/TechnicalOrderManagement/Workorder_v01.00/types" 
    xmlns:com="http://system-services.t-home.telekom.de/ServiceManagement/OIS_Services_v01.00/common">
<!-- other tags -->
</soapenv:Envelope>

如何通过xpath获取“soapenv:Envelope”标签的属性值? 我尝试了//*:Envelope/@*[local-name()='xmlns:soapenv'],但它不起作用

1 个答案:

答案 0 :(得分:1)

严格地说,这些声明不是属性,而是命名空间节点。要使用XPath获取它们,它取决于您使用的XPath版本。

对于XPath 1,请使用:

/*/namespace::*

对于XPath 2,使用:fn:in-scope-prefixesfn:namespace-uri-for-prefix来获取前缀和关联的命名空间uri。