2012-10-05 133 views
1

我正在開發一個RSS管理器,各種RSS提要將包含各種元素,有些可能不包含這些元素。我想實現一個xsl:if語句,如果元素不存在於feed中就不顯示元素。XSL「if」語句不顯示元素如果它不存在

例如:

<xsl:template match="item"> <!--an item in a feed--> 
<xsl:value-of select="title" /> <!--display feed items title--> 

<xsl:value-of select="author" /> <!--to display item's author BUT not all feed items have an author--> 

我怎樣才能讓這個不顯示作者信息,除非該元素存在?

+0

顯然你可以使用 - 等 - 但我不明白如何測試條件。 – AlexM

+2

請提供源XML!我會用來匹配具有作者的項目並保存。最好的問候,彼得 – Peter

回答

3

如果使用XSLT編碼標準的遞歸下降的風格,那麼

<xsl:apply-templates select="author"/> 

達到要求的效果:如果沒有作者,則不輸出任何內容。

0

< xsl:apply-templates select =「item [title]」>僅當它包含「title」元素時纔會使用「item」模板。
@Peter:項目/作者不會與項目父搭配作者孩子,但筆者項目
@AlexM:我寧願不要模仿程序編程和使用XSLT的方式,而不是

+1

我認爲他更關心的是一件物品是否有作者。這就是我請求源XML的原因。沒有它,它大多隻是猜測。 – Peter

2

XSL從不抱怨節點的所有腦幹,簡單地說就是只有當節點存在默認情況下才會這樣做。

在上面的代碼中,它試圖找到<author>節點,如果發現它會複製else ignore。

如果你擔心不必要的空格,然後使用該命令:(假設當前節點是作者的母公司)

<xsl:if test='author'> 
    <xsl:value-of select="author" /> 
</xsl:if>