XSLT中的简单IF语句如果找到则删除一个元素

时间:2011-10-06 19:27:45

标签: xml xslt

我使用XSLT一次转换XML文件的一些不同结构。

其中一些元素的结构中包含<link></link>元素标记,其他元素包含<feedburner:origLink></feedburner:origLink><link></link>之一,或两者都有。

我的问题是如何在<feedburner:origLink></feedburner:origLink>标记找到时删除<link></link>

这就是我现在使用的,有些XML有两次<url></url>元素标记。

<xsl:template match="feedburner:origLink | link">
  <url>
        <xsl:apply-templates select="node() | @*" />
  </url>
</xsl:template>

2 个答案:

答案 0 :(得分:1)

在XSLT 2.0中,您可以使用

行的解决方案
<xsl:apply-templates select="(link, feedburner:origLink)[1]"/>

答案 1 :(得分:0)

一种方法是将元素与谓词匹配,该谓词指定另一个不存在:

<xsl:template match="feedburner:origLink[not(../link)] | link">
  <url>
        <xsl:apply-templates select="node() | @*" />
  </url>
</xsl:template>