我正在开发一个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-->
除非该元素存在,否则我怎样才能使它不显示作者信息?
答案 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方式