小编ral*_*int的帖子

local-name如何在xml节点中查找属性?

我正在尝试在这样的XML节点中选择一个属性:

<tdf:TrustedDataObject xmlns="urn:com:bank:baml:tdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gml="http://www.opengis.net/gml" >
Run Code Online (Sandbox Code Playgroud)

我能够使用Firepath找到节点,如下所示:

/*[local-name()='TrustedDataObject']
Run Code Online (Sandbox Code Playgroud)

但是如果我想在节点中选择一个属性,比如gml属性,我不知道该怎么做.我尝试过几种不同的方式:

/*[local-name()='TrustedDataObject']/@gml
Run Code Online (Sandbox Code Playgroud)

要么

/*[local-name()='TrustedDataObject'][gml]
Run Code Online (Sandbox Code Playgroud)

他们不匹配任何东西.

有人有什么建议吗?我知道这不是完整的代码,我现在无法访问整个文档,所以我道歉.

编辑 - 好的,我不确定是否应该开始另一个问题或只是编辑我的原文.我理解在尝试访问命名空间属性时存在一些限制,但我真正想要做的是在NoticeText中的属性上创建一个内容节点,如 - ownerProducer和pocType.

<document>
   <tdf:TrustedDataObject xmlns="urn:com:bank:baml:tdf" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gml="http://www.opengis.net/gml" >
      <ism:Notice ism:classification="X" ism:ownerProducer="ABC" ism:noticeType="POC" ism:externalNotice="true">
        <ism:NoticeText ism:classification="X" ism:ownerProducer="ABC" ism:pocType="JJJ-710">John Smith, Walmart, jsmith@walmart.com</ism:NoticeText>
      </ism:Notice>
   </tdf:TrustedDataObject>
<document>
Run Code Online (Sandbox Code Playgroud)

再次,我认为能够遍历到NoticeText节点,使用local-name()应该工作.像这样的东西?

//*[local-name()='NoticeText']/@ownerProducer  
Run Code Online (Sandbox Code Playgroud)

再次感谢您的帮助.也许你告诉我所有这些属性都无法通过xpath访问...

xml xslt

1
推荐指数
1
解决办法
6758
查看次数

标签 统计

xml ×1

xslt ×1