У меня есть XSLT-файл, который отображает статьи. Я передаю переменную в файл XSLT, который должен ограничивать количество выводимых записей. Проблема в том, что эта переменная limit является необязательной - если ее там нет, XSLT-файл должен вывести все значения; если переменная limit является числом, то ей нужно только вывести это количество элементов (предположительно, с помощью теста position ()).
Вот мой код:
<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 не очень хорош.
Может ли кто-нибудь указать мне правильное направление с наилучшим / наиболее подходящим способом подойти к этому?
Спасибо!