XSLT不匹配的某些属性(XSLT do not match certain attributes)

2019-06-26 03:22发布

是否有可能匹配不属于属性的子集的属性? 例如,我想匹配的一切,但@ attR1和@ attR2位。 是否有写类似以下内容的模板匹配语句,或者我要对这个错误的方式方法吗?

<xsl:template match="NOT(@attr1) and NOT(@attr2)">      

谢谢

Answer 1:

最简单的方法是使用两个模板:

<xsl:template match="@attr1|@attr2"/>
<xsl:template match="@*">
    ....
</xsl:template>

第一个模板会抓住那些你想忽略参考,并简单地起来。 第二个将匹配剩余的属性。



Answer 2:

什么是运问的是可能的。 使用以下命令:

<xsl:template match="@*[local-name()!='attr1' and local-name()!='attr2']">
    ....
</xsl:template>

如果你想改变一个属性或添加,如果缺少withing单一的复制操作,这是特别有用的。 对方回答不这样的情况下工作。 例如

  ...
  <xsl:copy>
     <xsl:attribute name="attr1">
        <xsl:value-of select="'foo'"/>
     </xsl:attribute>
     <xsl:apply-templates select="@*[local-name()!='attr1']|node()"/>
  </xsl:copy>
  ...


文章来源: XSLT do not match certain attributes
标签: xslt xpath