如何修改XSL代码片段,仅在有数据时显示内容?
XSL条件渲染:无URL时隐藏链接容器
你的需求完全可以实现,用XSL的<xsl:if>就能轻松搞定,不用复杂的if/else逻辑(因为不需要输出else分支的内容)。
先看你原来的代码:
<div class="announcements__cta"> <a href="{$href1}" class="cta cta--link"><xsl:value-of select="$label1"/></a></div>
修改后的代码如下,加入条件判断:
<xsl:if test="$href1 != '' and $href1"> <div class="announcements__cta"> <a href="{$href1}" class="cta cta--link"><xsl:value-of select="$label1"/></a> </div> </xsl:if>
逻辑说明:
<xsl:if>的test属性是判断条件:这里同时检查$href1不是空字符串,且变量本身存在(因为你设置了链接为可选,可能存在变量未定义的情况)。- 只有当
$href1有有效内容时,才会渲染包裹链接的div容器;如果$href1为空或者不存在,这部分代码不会输出任何内容。
如果需要过滤掉全是空白字符的无效URL,可以用更严谨的判断:
<xsl:if test="normalize-space($href1) != ''"> <div class="announcements__cta"> <a href="{$href1}" class="cta cta--link"><xsl:value-of select="$label1"/></a> </div> </xsl:if>
normalize-space()会去掉字符串首尾的空白,同时把中间的连续空白换成单个空格,这样即使$href1是一串空格,也会被判定为空,不会渲染容器。
内容的提问来源于stack exchange,提问作者Scott Hallmark
相关产品推荐
相关产品推荐

