XSLT:如何摆脱 XPath 中默认命名空间的前缀? (xmlns=“...”)

2023-12-23

我有一个模板:

<xsl:stylesheet version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns="urn:jboss:domain:1.1"
    xmlns:d="urn:jboss:domain:1.1"
            >

...

<xsl:template match="//d:interfaces/d:interface[@name='management']/d:inet-address">
    ...
</xsl:template>

这有效。

<xsl:template match="//interfaces/interface[@name='management']/inet-address">
    ...
</xsl:template>

尽管我设置了默认命名空间,但为什么这不起作用?


<xsl:template match="//interfaces/interface[@name='management']/inet-address">
     ... 
</xsl:template> 

尽管我设置了默认命名空间,但为什么这不起作用?

这是任何 XSLT 和/或 XPath 列表中最常见的常见问题之一.

XPath 将任何无前缀的名称视为属于“无命名空间”-- 不管事实上可能有一个定义的默认命名空间并且在范围内。

引用W3C XPath 1.0 规范 http://www.w3.org/TR/xpath/#node-tests:

"节点测试中的 QName 使用以下命令扩展为扩展名称 来自表达式上下文的命名空间声明。这是一样的 对开始和结束标签中的元素类型名称进行扩展的方式 除了不使用使用 xmlns 声明的默认命名空间之外:如果 QName 没有前缀,则命名空间 URI 为 null"

因此,上面的模板规则匹配“无命名空间”中的元素,但 XML 文档的元素位于"urn:jboss:domain:1.1"命名空间——因此没有一个节点符合上述规则。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XSLT:如何摆脱 XPath 中默认命名空间的前缀? (xmlns=“...”) 的相关文章

  • 使用未命名命名空间而不是静态命名空间

    我可以假设在未命名命名空间中声明的对象相当于static namespace int x 1 static int x 2 FWIK 在这两种情况下 x将具有静态存储期限和内部链接 声明为的对象的所有规则也是如此static适用于未命名名称
  • PHP 中的 XPath 删除 HTML 标签

    我在 PHP 中使用 XPath 来检索 HTML 文档的一部分 假设我的 HTML 文档如下所示 div a href some link address com Hello a p Some text here p div div p
  • 使用 xPath 还是正则表达式?

    下面的两种方法都有相同的目的 扫描帖子的内容并确定是否至少有一个 img 标签具有包含正在测试的 关键字 的 alt 属性 我是 xPath 的新手 更愿意使用它 具体取决于该方法与正则表达式版本相比的昂贵程度 方法 1 使用 preg m
  • 运算符<<(流)转到哪个命名空间?

    如果我有一些为库本地对象定义的重载 ostream 运算符 它们可以转到 std 命名空间吗 如果我不在 std 命名空间中声明它们 那么我必须使用using ns operator lt lt 作为一个可能的后续问题 是否有任何运算符应该
  • 如何使用 saxon 加载多个 xml 文件

    我想使用 saxon 进行 xpath 查询 但我不知道加载多个 xml 文件 我正在尝试从 Windows 命令行使用 saxon 我在撒克逊手册中读到我可以使用以下命令 Query exe s myDataFile xml q myQu
  • ASP.NET:通过命名空间一次注册多个控件?

    是否可以在 aspx 文件中注册用户控件的完整命名空间 而不是单独注册每个控件 我创建了一堆用户控件并将它们收集到自己的命名空间 MyWebControls 中 如下所示 隐藏代码 namespace MyWebControls publi
  • 使用 XSLT 对重复的 XML 数据进行分组

    我有一个 XML 需要转换为更好的项目分组 需要对物品进行计数 不知道会有多少只狗 出现在列表中 我可能不知道有多少关于 会有狗 在示例中有三个 但也可以是 任何数字 如果这不能灵活 那么固定数量也可以 最好是 XSLT 1 0 这可能吗
  • 在表格标签中使用 EOP 标签划分页面

    我有一个包含多个段落标签的 XML 文件 每个段落在内容标签下都有不同类型的标签 该文件在不同位置包含 EOP 标记 我使用一个函数为每个问题页面划分为单独的 DIV 有时会在所附示例中的内部标记内 表标记内以及检索表中的所有数据时找到 E
  • XSLT打开其他xml文件

    我即将合并 XML 文件 并添加元信息 其相对路径在我的输入 XML 文件中指定 我要合并的文件位于名为 files 的子目录中 输入文件的结构如下
  • 遍历/循环 XSL 键:如何?

    有没有办法遍历一个键并输出它包含的所有值
  • 提供 xdm_node 时,saxonc 的 transform_to_file() 不生成输出文件

    这似乎是由 alinaOS 回答的SaxonC 11 1 transform to file 不生成输出文件 https stackoverflow com questions 71021778 saxonc 11 1 transform
  • XSLT 将平面树结构转换为列表

    我有一个描述eshop树结构的xml文件 我只需要获取所有子组的列表 我不知道结构中有多少个父 子级别 输入 xml 如下所示
  • 当 xml 具有名称空间前缀时,为什么只有某些 XPath 表达式才能找到节点

    在下面的示例代码中 任何采用 形式的 XPath元素名称 当源 xml 有命名空间前缀时返回 null 请参阅testWithNS 在底部的代码中 当源 xml 没有名称空间前缀时 所有列出的 XPath 表达式都会返回一个节点 请参阅te
  • XSLT-选择以下项目直到特定标记

    假设我有这个 XML 文件
  • 带有嵌套表的 XSLT 中的数据对齐问题

    我正在通过 FoundationPHP 使用 XSLT 和嵌套表生成 Word 文档 我想要的结果是 Table 1 Table 2 Image 1 Image 2 Label 1 Label 2 Data 1 Data 2 Table 3
  • 在 Laravel 中将自定义/新类文件放在哪里?

    我有关于如何使用 Yelp Fusion API 的 PHP 示例 它用OAuth php file https github com Yelp yelp api blob master v2 php lib OAuth php有几个班级
  • xpath:选择中断标签之前和之后的文本节点

    考虑以下因素 混合 br and br text1 br text2 br text3 br text4 br text5 如何找到每个文本节点 我正在考虑符合 br 标签之前或之后的条件的东西 但不确定是否 br and br 在 xpa
  • jquery:选择xpath或将xpath转换为css?

    我需要基于 xpath 选择 或者将 xpath 转换为 css 有插件或者内置功能吗 ex html body div a 4 each 并非所有 xpath 表达式都可以转换为类似 CSS 的选择器 或者不能有效地工作 您可以使用 eq
  • (Kiss)XML xpath 和默认命名空间

    我正在开发一个 iPhone 项目 需要解析一些 xml xml 可能包含也可能不包含默认名称空间 我需要知道如何解析 xml 以防它使用默认命名空间 由于我需要读取和写入 xml 因此我倾向于使用 KissXML 但我愿意接受建议 这是我
  • XSLT:如何在“匹配”属性中表示 OR?

    我想对与名称 A 或 B 匹配的元素执行一系列操作 我在想下面类似的事情 但它不起作用

随机推荐