XSLT: проверить, есть ли у какой-либо группы элементов дочерний элемент с указанным значением - PullRequest
4 голосов
/ 04 марта 2010

Рассмотрим следующий XML:

<AllMyDataz>
    <Data>
       <Item1>A</Item1>
    </Data>
    <Data>
       <Item1>B</Item1>
    </Data>
    <Data>
       <Item1>A</Item1>
    </Data>
</AllMyDataz>

В моем преобразовании я хочу что-то сделать, только если какой-либо из элементов «Данные» содержит дочерний элемент Item1 со значением «A». Я также хочу сделать это только один раз, даже если несколько элементов «Данные» соответствуют критериям.

Я думаю, что мне нужно написать оператор <xsl:if test=""> для возврата true, если какой-либо Data / Item1 содержит значение "A".

Кто-нибудь знает, как это сделать с помощью оператора if или любым другим способом?

Заранее спасибо:)

для -Alex-

1 Ответ

7 голосов
/ 04 марта 2010
<xsl:template match="AllMyDataz">
  <xsl:if test="Data/Item1[.='A']">
    <!-- now do something -->
  </xsl:if>
</xsl:template>

Data/Item1[.='A'] выбирает все соответствующие узлы <Item1>, в результате чего получается набор узлов.

Когда набор узлов используется в логическом контексте, он оценивается в true, если он не пустой, и в false, если он пустой. Именно то, что вы хотели.

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