2011-10-06 53 views
2

我使用XSLT一次轉換XML文件的一些不同結構。XSLT中的簡單IF語句如果找到,則刪除一個元素

它們中的一些在它們的結構中具有<link></link>元件標籤,而其他元件具有<feedburner:origLink></feedburner:origLink><link></link>或二者之一。

我的問題是如何在找到<link></link>標記時刪除<feedburner:origLink></feedburner:origLink>

這是我現在使用的,一些XML有<url></url>元素標籤的兩倍。

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

回答

1

在XSLT 2.0您可能能夠使用沿着

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

我正在使用1.0 ... – EnexoOnoma

0

一種方法是將該元件與謂詞指定另外一個是不是有匹配:

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

我剛測試過它。還有兩個元素,但也有一些元素擁有元素。 – EnexoOnoma

+0

您有知道您的源文檔是什麼樣子的好處。我們其他人只能猜測。你不能指望沒有看到XML文檔的人編寫代碼實際工作。 –

+0

@MichaelKay這是我的XML http://codepad.org/AaQk4dqU標準feedburner飼料 – EnexoOnoma