首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法获得父节点和子节点具有不同默认名称空间的xpath

无法获得父节点和子节点具有不同默认名称空间的xpath
EN

Stack Overflow用户
提问于 2013-06-02 23:23:43
回答 1查看 1K关注 0票数 0

在这里,我不得不使用xslt解析和转换给定的XML。为此,我需要编写xpath。

下面给出了示例xml。在ServiceProviderGroupPackage和SecondNode中都有不同的名称空间。我需要获得IReference Node的名称空间来获得它的值。

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8" ?>
<ServiceProviderGroupPackage Version="1.2.0" xmlns="http://webconnectivity.co.uk/ServiceProviderGroupPackage"
                             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                             xmlns:wsa="http://www.w3.org/2005/08/addressing">
  <FirstNode Version="1.2.0" xmlns="http://www.MySite.org/Standards/MySiteMsgSvc/1"
                    xmlns:rlc="http://www.MySite.org/standards/SecondNode/1"
                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  </FirstNode>
  <SecondNode Version="2010-2" xmlns:ac="http://www.MySite.org/Standards/MySiteMsgSvc/1"
                      xmlns="http://www.MySite.org/standards/SecondNode/1"
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                      xmlns:lloyds="http://www.lloyds.com/The-Market/Operating-at-Lloyds/Resources/Risk_codes">
    <Movement Sender="Sender" Receiver="Receiver">
      <Contract>
        <Type>direct</Type>
        <Nature>lm_proportional_or_nonproportional</Nature>
        <Reference>B0509311011UMR</Reference>
        <IReference>P00000062MM/13A</IReference>
      </Contract>
    </Movement>
  </SecondNode>
</ServiceProviderGroupPackage>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-02 23:39:58

如果没有覆盖,每个元素都继承父元素的命名空间,因此IReference元素具有与SecondNode元素http://www.MySite.org/standards/SecondNode/1相同的名称空间。

若要检索任意元素的命名空间,请使用namespace-uri(...)函数。

使用XPath 2.0,您可以使用通配符-运算符*而不是名称空间前缀:

代码语言:javascript
复制
namespace-uri(//*:IReference)

或者也是

代码语言:javascript
复制
//*:IReference/namespace-uri()

使用XPath 1.0时,您必须在谓词中检查名称:

代码语言:javascript
复制
namespace-uri(//*[local-name() = "IReference"])
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16888227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档