当前位置: 首页 > 知识库问答 >
问题:

xpath从xml文档中选择名称空间

孙绍辉
2023-03-14

使用xslt 1.0(BizTalk 2016)我正在寻找一种通用的方法来选择任何有效的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>

假设根元素的值可以是任何东西,那么选择名称空间值的xpath是什么http://www.random.com/bo/request/portfolioactivation

我原本希望“/*/@xmlns”能起作用,但事实并非如此。

共有1个答案

归和惬
2023-03-14

最外层元素的名称空间可以使用名称空间uri(/*)找到。

或者,位于最外层元素范围内的默认名称空间是/*/namespace::*[name()='']

这不是一回事。考虑

<p:root xmlns="a.ns" xmlns:p="b.ns"/>

第一个表达会给你“b.ns”,第二个会给你“a.ns”。从你的问题中不清楚你想要哪个。

请注意,名称空间不是XDM数据模型中的属性,因此永远不会使用属性轴访问它们<因此,code>@xmlns将永远无法工作。

 类似资料:
  • 我是XPath和XML的新手。我想知道是否有一个XPath表达式可以从整个XML文档中选择所有属性名称及其各自的值。 作为一个简单的例子,我有: 我想要这个: 问题是我希望这个表达式适用于任何XML文档。关于我如何做到这一点的任何其他建议也欢迎。谢谢你。

  • 问题内容: 作为Java 6应用程序的一部分,我想在XML文档中找到所有名称空间声明,包括所有重复项。 编辑 :根据马丁的要求,这是我正在使用的Java代码: 假设我有这个XML文档: 为了找到所有名称空间声明,我 使用xPath 1.0 将此xPath语句应用于XML文档: 它找到4个名称空间声明,这是我期望的(和期望的): 但是,如果我 改用xPath 2.0 ,则会得到16个名称空间声明(每

  • 本文向大家介绍xpath 示例XML(无名称空间),包括了xpath 示例XML(无名称空间)的使用技巧和注意事项,需要的朋友参考一下 示例 这是一些示例XML,可以针对这些XML编写示例XPath:            

  • 问题内容: 我的XML看起来像 当我在下面运行TSQL时,它完成但不返回状态码值 问题答案: 您需要定义 名称空间 -而不是前缀!-在您的声明中。 试试这个:

  • 问题内容: 我想操作具有默认名称空间但没有前缀的xml文档。有没有办法使用没有名称空间uri的xpath,就像没有名称空间一样? 我相信,如果将documentBuilderFactory的namespaceAware属性设置为false,那应该是可能的。但就我而言,它不起作用。 我的理解是不正确的还是我在代码中做错了? 这是我的代码: 这是我的xml: 问题答案: 使用默认名称空间(无前缀)的文

  • 问题内容: 有“原始” XML 以这种方式解析XML 然后我试图通过XPath提取会话ID 在这里测试 http://www.xpathtester.com/xpath/678ae9388e3ae2fc8406eb8cf14f3119 当XML简化为此 这个XPath可以完成工作 如何使用Java从“原始” XML中提取会话ID? 更新:JDK 1.6 问题答案: 答案是您需要正确使用名称空间和名