Ответ 1
Попробуйте следующее:
<xsl:template match= "A | B" >
Я хочу выполнить ряд операций над элементами, которые соответствуют имени "A" или "B". Я думаю о чем-то подобном ниже, но это не работает.
<xsl:template match= " 'A' or 'B'" >
<!-- whatever I want to do here -->
</xsl:template>
Не удалось найти подходящую для него ссылку на язык XSLT. Пожалуйста помоги! Спасибо!!
Попробуйте следующее:
<xsl:template match= "A | B" >
Обычно A | B
- это правильный способ сделать это. Но характер канала - это в основном объединение двух полных выражений XPath. Это может раздражать его использование в таком случае:
/red/yellow/blue/green/gold | red/orange/blue/green/gold
так как вы повторяете всю полноту выражения, за исключением того, что изменяется одна маленькая часть.
В подобных случаях часто имеет смысл использовать предикат и функцию name()
:
/red/*[name() = 'yellow' or name()='orange']/blue/green/gold
Этот метод дает вам доступ к гораздо более широкому диапазону логических операций. Он также (предположительно) быстрее, так как навигатор XPath должен проходить только те узлы, которые он тестировал.
Я думаю, что более удобно использовать этот XPath
/red/(yellow | orange)/blue/green/gold
а не
/red/*[name() = 'yellow' or name()='orange']/blue/green/gold
<xsl:template match= " 'A' or 'B'" >
Есть несколько проблем с этим шаблоном соответствия:
Шаблон соответствует узлам, а не строкам. Следовательно, имена элементов, которые должны быть сопоставлены, не должны указываться как строки с кавычками.
оператор XPath "или" действует на два булевых значения, а не на узлах. Здесь необходимо другой оператор XPath - оператор объединения "|" .
Принимая во внимание вышесказанное, вы правильно укажете правило шаблона как:
<xsl:template match= "A | B" >
<!-- whatever I want to do here -->
</xsl:template>
Ниже была получена информация из: http://www.cafeconleche.org/books/bible2/chapters/ch17.html#d1e2090
Я перефразирую, пожалуйста, найдите текст "Использование оператора или оператора" в этом документе.
Синтаксис:
<xsl:template match="A|B">
<!-- Do your stuff> -->
</xsl:template>