XSLT:匹配命名空间中除一个元素之外的所有元素

标签 xslt

我想编写一个 XSLT 模板,它匹配一个命名空间中除一个元素之外的所有元素。例如,我想匹配所有元素 foo:*,但不匹配 foo:bar

是否可以在选择器中定义它,或者我是否必须在 xsl:template 中编写 xsl:if 条件(以及如何测试本地元素的名称)?

最佳答案

XSLT 1.0:

<xsl:template match="foo:*[not(local-name()='bar')]">
  <!--do stuff-->
</xsl:template>

XSLT 2.0:

<xsl:template match="foo:*[. except self::foo:bar]">
  <!--do stuff-->
</xsl:template>

关于XSLT:匹配命名空间中除一个元素之外的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7677487/

相关文章:

xml - 如果所有 child 都有一个属性

xslt - XSL 中每组值的最大总和

xml - XSLT - 从 URL 获取文件名

xslt - 序列是如何拼接的,为什么我的变量的值是文档节点?

xml - 使用 XSLT 将单词包装在标签中

javascript - XSLT 不适用于 IE 11,不会转换 xml

xml - 如何使用 xslt 从 XML 中读取注释并在元素中添加注释文本

xml - 是否可以使用 XSL/XPATH 区分 IE8 和 IE9?

xml - XSLT 中的算术运算

xslt - 如何在 XSLT 而不是 HTML 中进行注释