Могу ли я использовать оператор «и» в xsl для каждого? - PullRequest
8 голосов
/ 08 февраля 2010

Просто я могу выполнить следующее в xsl?

 <xsl:for-each select="trip/instance[.!=''] and trip/result[.!='']">
 </xsl:for-each>

В: Когда я использую select = "" в for-each, это меняет область действия моего селектора для кода, который я использую внутри for-each?

Ответы [ 2 ]

7 голосов
/ 08 февраля 2010

Вы можете использовать 'и' для каждого цикла, но не так, как вы упомянули (не будучи уверенным, чего именно вы хотите достичь)

Я предполагаю, что ваши требования что-то вроде,

1) Вы хотите перебрать Trip, чьи оба дочерних объекта (instance и result) не нулевые, В этом случае вы должны написать так ..

<xsl:for-each select="trip[instance!='' and result!='']>

если среди экземпляра и результата есть ноль, то ваш цикл не входит в элемент, а именно trip.


2) Вы хотите найти всех instance и result дочерних элементов в родительском trip, чьи значения не равны NULL. В этом случае вам не нужно and ..

<xsl:for-each select="trip/instance[.!=''] | trip/result[.!='']">

Это будет работать.

Теперь ответьте на свой вопрос ..
с циклом FOR-EACH вы можете установить область действия селектора.
для примера: в случае (1) область селектора была "root_name//trip", а в случае (2) область селектора была "root_name//trip/instance" также "root_name//trip/result" ..

Надеюсь, я правильно понял ваш вопрос и ответил на него как понятный ..

6 голосов
/ 08 февраля 2010

Нет, вы не можете использовать and в атрибуте select.

Вы хотите использовать оператор union: |, который ведет себя как и и как или , в зависимости от того, как вы к этому относитесь ,

Он выдаст вам отдельный список обоих наборов узлов и вернет их в том порядке, в котором он их находит (не все instance, а затем все result элементы).

 <xsl:for-each select="trip/instance[.!=''] | trip/result[.!='']">
 </xsl:for-each>

Внутри for-each контекст будет переключаться между каждым из выбранных узлов во время каждой итерации. Вы можете получить доступ к текущему узлу с помощью . или current().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...