XSLT:针对每个问题

XSLT:针对每个问题,xslt,Xslt,应该很简单,, 我想限制每个节点的结果,但也要检查一个节点。 出于某种原因,将两者合并在一个语句中不起作用 我有一个复选框(推荐),可以勾选“是”。 当我删除for each中的限制5时,它会显示“是”上建议的所有项目。当我从for each测试中删除'recommended='Yes'时,我将最后一项限制到5。把它们放在一起什么结果都没有。他们都不工作了。 我想根据推荐的“是”筛选它们,并将它们限制为5个 <xsl:for-each select="data/resorts/entry[

应该很简单,, 我想限制每个节点的结果,但也要检查一个节点。 出于某种原因,将两者合并在一个语句中不起作用

我有一个复选框(推荐),可以勾选“是”。 当我删除for each中的限制5时,它会显示“是”上建议的所有项目。当我从for each测试中删除'recommended='Yes'时,我将最后一项限制到5。把它们放在一起什么结果都没有。他们都不工作了。 我想根据推荐的“是”筛选它们,并将它们限制为5个

<xsl:for-each select="data/resorts/entry[position() &lt; 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>

由于您没有提供一些示例数据,因此我只能假设
推荐的
的一个属性。在这种情况下,您需要在select语句中包含
@推荐的

<xsl:for-each select="data/resorts/entry[position() &lt; 2 and @recommended = 'Yes']">

此表达式首先指定所有
数据/resorts/entry
元素,然后将它们仅限于那些在已获得的节点列表中的位置小于6的元素


记住
position()
函数是上下文敏感函数,它不能在表达式中自由移动而不改变其含义

请包括输入XSLT的示例(包括匹配和非匹配节点)。同时描述你得到的结果和你的期望。因为这个问题没有包含足够的信息来帮助你。好问题,+1。请参阅我的答案以获得解释和完整的解决方案。:)感谢Dimitre的解释和解决方案!现在很有魅力。
<xsl:for-each select=
   "data/resorts/entry[position() &lt; 6
  and
    recommended = 'Yes']">
data/resorts/entry[recommended = 'Yes'][position() &lt; 6]