У меня есть две переменные в моем шаблоне xslt 1.0, каждый из которых содержит набор узлов (выбран из xpath). Я хочу определить, содержится ли узел в одной переменной в узле, установленном в другом. Например, предположим, что у меня есть глава с вложенными разделами. Я хочу, чтобы увидеть, если $b
содержится в $a
:Имеет ли xpath nodeet еще один
<xsl:variable name="a" select="chapter//section" />
<xsl:variable name="b" select="chapter//section" />
Я попытался получить пересечение nodesets, чтобы увидеть, если $a
является первым общим элементом разделяют как $a
и $b
, но это не работает:
<xsl:if test="$a/ancestor-or-self::*[count(.|$b) = count($b/ancestor::*)][1] = $a">
Добавление некоторого контекста. Я создаю интерфейс с вкладками для дерева html-страниц с этим xslt, и проблема, которую я пытаюсь решить, - поставить class = "current" на соответствующую вкладку. Проверяя каждый раздел, чтобы узнать, является ли он дочерним элементом раздела вкладки, он получает класс = «текущий», и поэтому вкладка будет выглядеть так, как будто она находится сверху.
Спасибо за ваш ответ. Я добавил некоторый контекст к вопросу, потому что мне трудно объяснить. Если я только рассчитываю узлы, мне кажется, что следующее приведет к путанице, поскольку каждый родитель имеет такое же число дочерних узлов. Я не понимаю? Раздел A Раздел A.1 Раздел B Раздел B.1 –
Tim
@ Тим: Ваша главная проблема заключается в том, что вы Бесполезный Попробуйте выражение XPath в ответе - если вы d сделал это, вы не будете задавать такие вопросы в комментариях. Выражение в этом ответе является самым прямым (и самым коротким) способом проверки включения узла. Вы пытаетесь найти другие способы, и они могут работать в одной ситуации, но не в другом - это может быть не самый полезный способ провести время. Для получения дополнительной информации читайте здесь: http://www.dpawson.co.uk/xsl/sect2/muench.html#d9944e108. +1 от меня. –
@Dimitre, я не * понимать * ответ. Благодаря вам и Майклу я теперь вижу, что '|' является оператором объединения, и я думал, что это просто логический 'или'. Я поддержал ответ Майкла и принял твое. Я изучаю. Для моей конкретной ситуации я думаю, что мое решение в порядке, но это не ответ на мой оригинальный вопрос. – Tim