xml - XPath - 仅获取此节点的命名空间节点(即不是祖先节点)

标签 xml xslt xpath namespaces

在 XSLT 中,以下 XPath 检索 的所有 namespace 的 namespace 节点。范围内 .这些包括为当前节点定义的命名空间,以及在当前节点的祖先中定义的命名空间。

<xsl:for-each select="namespace::*">
  ...
</xsl:for-each>

我只想检索为当前节点明确定义的命名空间节点,即不是从祖先作用域继承的那些节点。

如何?

最佳答案

一般来说,这是不可能的。您只能列出与任何父级命名空间节点都不匹配的命名空间节点:

<xsl:for-each select="namespace::*">
    <xsl:if test="not(../../namespace::*[name() = name(current())] = .)">
        <!-- different -->
    </xsl:if>
</xsl:for-each>

但这不会列出使用与父级相同的前缀和 URI 重新定义的命名空间节点。

关于xml - XPath - 仅获取此节点的命名空间节点(即不是祖先节点),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39452537/

相关文章:

c# - 反序列化列表错误

java - 将 Xml 转换为 JSON 的方法(包含示例)

java - org.apache.xalan.processor.TransformerFactoryImpl 上的 AbstractMethodError

css - 使用 nightwatch 单击按标签列表中的子元素

xml - 如何使用 XPath 选择最新/最新(基于时间戳)的 N 个元素?

python - 继承 ElementTree 解析器以保留注释

javascript - 让用户下载经过处理的 SVG

php - 将计划的 XML 解析放入 SQL 数据库的最简单方法是什么?

XSLT(XML 到 XML)输出包含来自源的不匹配数据

java - Selenium - 错误 : The expression is not a legal expression for xpath