XSLT 如何避免 select 个节点

XSLT how to avoid to select nodes

大家好,我想应用我的后续节点,但有两个节点我不会 select。我怎样才能避免做 select 2 个节点,但我怎样才能在 select 中连接我的语句。我使用氧气和 xslt 2.0.

<xsl:apply-templates select="*[not(local-name() = 'pc')] |
   *[not(local-name() = 'computer')]"/>

xml-文件

 <a/>
  <b/>
  <pc/>
  <computer/>
  <a/>
  <b/>
  <c/>

等等..

预计 select 节点 , ,

你的表达意思是"give me everything that is not a pc plus everything that is not a computer"。由于 pc 不是 computer,反之亦然,| 的每一侧都在选择另一侧排除的节点,最终得到所有内容。您需要针对同一节点测试这两个条件,例如 "give me every element that is neither a pc nor a computer":

<xsl:apply-templates select="*[not(local-name() = 'pc')][not(local-name() = 'computer')]"/>

但是由于您使用的是 XSLT 2.0,因此可以使用命名空间通配符和 except 运算符更简洁地表达这一点:

<xsl:apply-templates select="* except (*:pc, *:computer)"/>

根据您的文档和样式表声明的命名空间(如果有),您可能不需要 *: 或者您可以将其替换为固定前缀以正确使用命名空间而不是忽略它们。