2
我有一个呈现文章的XSLT文件。我将一个变量传递给XSLT文件,该文件应该限制记录输出的数量。麻烦的是,这个'limit'变量是可选的 - 如果不存在,XSLT文件需要输出所有值;如果“限制”变量是一个数字,那么它只需要输出该数量的项目(大概使用position()测试)。XSLT中的条件位置检查
这里是我的代码:
<xsl:variable name="limit" select="/macro/limit"/>
<xsl:template match="/">
<xsl:variable name="allNodes" select="$localSiteRoot/descendant-or-self::*[articles != '']"/>
<xsl:for-each select="$allNodes">
<div class="articleItem">
<h3><xsl:value-of select="./articleHeader"/></h3>
<xsl:if test="./articleSubheader != ''">
<h4><xsl:value-of select="./articleSubheader"/></h4>
</xsl:if>
</div>
</xsl:for-each>
</xsl:template>
显然我只是做这周围的XSLT选择,并说
<xsl:choose>
<xsl:when select="$limit!= ''">
<xsl:if test="position() < $limit">
但后来我需要重复的代码的两倍。必须有更好的方式,也许使用模板,但我无法弄清楚它是如何工作的,而我的XSLT并不好。
任何人都可以用最好/最好的方式指出我正确的方向吗?
谢谢!
非常整齐 - 很喜欢它,谢谢! – Dan
@丹:不客气。 –