我设法根据他们的类别对我的项目进行排序,但现在我想限制每个类别显示的项目数量。这是我到目前为止所得到的:
<xsl:for-each select="udt:Data[count(. | key('data-by-Cat', udt:Cat)[1]) = 1]">
<xsl:sort select="udt:Zap" />
<div class="wrapper">
<h3>
<xsl:value-of select="udt:Cat" disable-output-escaping="yes" />
</h3>
<xsl:variable name="currentData" select="key('data-by-Cat', udt:Cat)" />
<xsl:if test="$currentData">
<div class="my-item-container">
<xsl:apply-templates select="$currentData" mode="list">
</xsl:apply-templates>
</div>
</xsl:if>
</div>
</xsl:for-each>
这是我的XML示例:
<UserDefinedTable>
<Data>
<UserDefinedRowId>4057</UserDefinedRowId>
<Title>Item title 1</Title>
<Cat>Category 1</Cat>
<Link>google.com</Link>
</Data>
</UserDefinedTable>
答案 0 :(得分:0)
尝试在xsl:sort
标记下添加此行:
<xsl:if test="not(position() > 10)">
这只会显示10个项目。
你可以在没有()的情况下做到:
<xsl:if test="position() < 3">
如果您对'<' '>'
符号有疑问,请使用<
和>
答案 1 :(得分:0)
我认为你需要做的就是......
<xsl:variable name="currentData" select="key('data-by-Cat', udt:Cat)[position() <= 10]" />
或者,如果您希望在没有限制的情况下在其他地方使用$currentData
,您可以将条件放在xsl:apply-templates
而不是
<xsl:apply-templates select="$currentData[position() <= 10]" mode="list">