我已创建自定义xslt样式以在我的网站上显示新闻。我的问题是,我的一些新闻有一个横幅,其中一些没有。那么,如何通过使用XSLT来确定如何显示带有横幅的新闻或没有它的新闻?XSLT显示图片或显示空白
我知道什么字段包含横幅网址。所以我可以想象我必须遍历我的新闻,然后通过某种if语句的返回值来加载显示表单,该if语句检查新闻是否有横幅广告。
我是XSLT新手,所以我该怎么做?任何帮助appriciated。
我已创建自定义xslt样式以在我的网站上显示新闻。我的问题是,我的一些新闻有一个横幅,其中一些没有。那么,如何通过使用XSLT来确定如何显示带有横幅的新闻或没有它的新闻?XSLT显示图片或显示空白
我知道什么字段包含横幅网址。所以我可以想象我必须遍历我的新闻,然后通过某种if语句的返回值来加载显示表单,该if语句检查新闻是否有横幅广告。
我是XSLT新手,所以我该怎么做?任何帮助appriciated。
我认为你可以使用这样的事情:
<xsl:choose>
<xsl:when test="not(empty(imageurlfield))">
<!-- Display with image here -->
</xsl:when>
<xsl:otherwise>
<!-- Display without image here -->
</xsl:otherwise>
</xsl:choose>
我收到一个错误,说'empty()'是一个未知的XSLT函数? – diceler 2011-03-02 13:36:31
'empty()'是一个XPath/XSLT 2.0函数。 – 2011-03-02 14:38:42
您可以使用xsl:if标签来测试一些XPath的所有脑干:
<xsl:if test="./@banner">
<p class="banner"><xsl:value-of select="./@banner" /></p>
</xsl:if>
只需指定两个模板,一个新闻条目一面旗帜,一面没有。
<xsl:template match="newsitem[banner]">
<!-- pattern for news items with a banner -->
</xsl:template>
<xsl:template match="newsitem">
<!-- pattern for news items without a banner -->
</xsl:template>
上面的例子假设新闻项都包含在名为newsitem
的元素,含约旗帜的数据的子元素banner
,如果存在一个。这里的第二个模板被第一个包含banner
孩子的newsitem
元素取代。
问一个XSLT问题的正确方法是提供一个完整的(但尽可能最小的)XML文档,完整的想要的结果以及列出转换的任何规则/约束。请这样做,否则收到的答案的质量将只与您问题的质量相符。 – 2011-03-02 14:11:40
经典的XSLT方式是使用niether'xsl:if'或'xsl:choose'等指令进行模式匹配,与上面的回答类似。但是如果没有输入样本,我们无法向您显示如何。 – 2011-03-02 14:46:09