XSLT: для каждой проблемы - PullRequest
       0

XSLT: для каждой проблемы

2 голосов
/ 27 октября 2010

Это должно быть очень просто, я хочу ограничить свои результаты в этом для каждого, но также хочу проверить узел.По какой-то причине не работает объединение их обоих в одном выражении?

У меня есть флажок (рекомендуется), который можно поставить галочкой на 'Да'Когда я убираю лимит 5 в for-each, он показывает все пункты, которые рекомендованы на «Да».Когда я удаляю «рекомендовано =« Да »» из теста «для каждого», я ограничиваю последние пять пунктов до 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>

Ответы [ 2 ]

5 голосов
/ 27 октября 2010
<xsl:for-each select=
   "data/resorts/entry[position() &lt; 6
  and
    recommended = 'Yes']">

Это выберет все элементы data/resorts/entry среди первых двух, которые также имеют атрибут recommended со значением 'Yes'.

НоВы хотите :

data/resorts/entry[recommended = 'Yes'][position() &lt; 6]

это выражение сначала определяет все data/resorts/entry элементы, а затем ограничивает их только теми, чья позиция в уже полученном списке узлов меньше 6.

Помните : функция position() является контекстно-зависимой и не может свободно перемещаться по выражению без изменения его значения!

0 голосов
/ 27 октября 2010

Поскольку вы еще не предоставили некоторые примеры данных, я могу только предположить, что recommended является атрибутом <entry />.В этом случае вам нужно иметь @recommended в вашем операторе выбора:

<xsl:for-each select="data/resorts/entry[position() &lt; 2 and @recommended = 'Yes']">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...