它应该非常简单,我想限制我的结果,但是也想检查一个节点.由于某种原因,它不能在一个声明中将它们组合起来吗?
我有一个复选框(推荐),可勾选为"是".当我删除for-each中的限制5时,它会显示所有推荐为"是"的项目.当我从for-each测试中删除'recommended ='Yes'时,我将最后的项目限制在5个.将它们组合在一起不会产生任何结果.他们都不再工作了.我想在推荐'是'上过滤它们,我想将它们限制为5.
<xsl:for-each select="data/resorts/entry[position() < 2 and recommended = 'Yes']">
<xsl:sort select="top-pick-order" case-order="upper-first"/>
<a href="{$root}/koh-lipe-resorts/resort-view/{resort-name/@handle}">
<div id="top-pick-item">
<div id="top-pick-text-short">
<h3 class="item-heading"><xsl:value-of select="resort-name"/></h3>
<p>
<xsl:call-template name="truncate">
<xsl:with-param name="value" select="resort-description" mode="formatted"/>
<xsl:with-param name="length" select="110" />
</xsl:call-template>
</p>
</div>
</div>
</a>
</xsl:for-each>
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)<xsl:for-each select= "data/resorts/entry[position() < 6 and recommended = 'Yes']">
这将选择data/resorts/entry前两个中的所有元素,它们也具有recommended值的属性'Yes'.
但你想要:
data/resorts/entry[recommended = 'Yes'][position() < 6]
Run Code Online (Sandbox Code Playgroud)
此表达式首先指定所有 data/resorts/entry元素,然后仅将它们限制为已在已获取的节点列表中的位置小于6的元素.
请记住:该position()函数是上下文相关的,它不能在不改变其含义的情况下在表达式中自由移动!