来自 xml 文档的 select 命名空间的 xpath
xpath to select namespace from xml document
使用 xslt 1.0 (BizTalk 2016) 我正在寻找一种通用方法来 select 任何有效 xml 文档的命名空间
例如,我有以下 xml 文档:
<?xml version="1.0" encoding="utf-8"?>
<PortfolioActivation xmlns="http://www.random.com/bo/request/portfolioactivation">
<Portfolio>
<ExternalId>PRT-00000450</ExternalId>
<InternalId>c8b0239c-1e98-e911-a8b1-00224800449b</InternalId>
<Version>8627558</Version>
<Type>001</Type>
</Portfolio>
</PortfolioActivation>
鉴于 Root 元素值可以是任何东西,select 命名空间值的 xpath 是什么,即 http://www.random.com/bo/request/portfolioactivation
我曾希望“/*/@xmlns”会起作用,但它不起作用。
最外层元素的命名空间可以使用namespace-uri(/*)
找到。
或者,最外层元素范围内的默认命名空间是 /*/namespace::*[name()='']
。
这不是一回事。考虑
<p:root xmlns="a.ns" xmlns:p="b.ns"/>
第一个表达式会给你"b.ns",第二个会给你"a.ns"。从你的问题中不清楚你想要哪个。
请注意,命名空间不是 XDM 数据模型中的属性,因此您永远不会使用属性轴访问它们。 @xmlns
因此永远不会工作。
使用 xslt 1.0 (BizTalk 2016) 我正在寻找一种通用方法来 select 任何有效 xml 文档的命名空间
例如,我有以下 xml 文档:
<?xml version="1.0" encoding="utf-8"?>
<PortfolioActivation xmlns="http://www.random.com/bo/request/portfolioactivation">
<Portfolio>
<ExternalId>PRT-00000450</ExternalId>
<InternalId>c8b0239c-1e98-e911-a8b1-00224800449b</InternalId>
<Version>8627558</Version>
<Type>001</Type>
</Portfolio>
</PortfolioActivation>
鉴于 Root 元素值可以是任何东西,select 命名空间值的 xpath 是什么,即 http://www.random.com/bo/request/portfolioactivation
我曾希望“/*/@xmlns”会起作用,但它不起作用。
最外层元素的命名空间可以使用namespace-uri(/*)
找到。
或者,最外层元素范围内的默认命名空间是 /*/namespace::*[name()='']
。
这不是一回事。考虑
<p:root xmlns="a.ns" xmlns:p="b.ns"/>
第一个表达式会给你"b.ns",第二个会给你"a.ns"。从你的问题中不清楚你想要哪个。
请注意,命名空间不是 XDM 数据模型中的属性,因此您永远不会使用属性轴访问它们。 @xmlns
因此永远不会工作。