XSL“if”语句如果不存在则不显示元素

时间:2012-10-05 06:40:25

标签: xslt rss

我正在开发一个RSS管理器,各种RSS源将包含各种元素,有些可能不包含这些元素。我想实现一个xsl:if语句,如果在feed中不存在元素,则不显示该元素。

例如:

<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-->

除非该元素存在,否则我怎样才能使它不显示作者信息?

3 个答案:

答案 0 :(得分:3)

如果使用XSLT编码的标准递归下降样式,那么

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

达到要求的效果:如果没有作者,则不输出任何内容。

答案 1 :(得分:2)

XSL从不抱怨节点的存在,简单来说就是仅在节点存在时才这样做默认处理。

在上面的代码中,它尝试查找<author>节点,如果发现它将复制,否则忽略。

如果您担心不必要的空格,请使用:(假设当前节点是作者的父节点)

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

答案 2 :(得分:0)

&lt; xsl:apply-templates select =“item [title]”&gt;只有当它具有“标题”元素时才会使用“项目”模板 @Peter:item / author不会与作者子项匹配项目,但作者与项目父项
不匹配 @AlexM:我不想模仿过程式编程而是使用XSLT方式