Проверьте, является ли параметр одним из нескольких значений в XSLT

Возможный дубликат:
Выражение XSLT, чтобы проверить, принадлежит ли переменная множеству элементов

Учитывая параметр, $nameЧто такое короткий и чистый способ проверить, равно ли его значение одному из конечного числа значений?

Например, скажем, я хотел объединить первые 3 из этих when тесты, потому что их содержание было точно таким же.

<choose>
  <when test="$name='Alice'">
  <when test="$name='Bob'">
  <when test="$name='Cindy'">
  <when test="$name='Dave'">
  <otherwise>

Что-то вроде test="$name in ['Alice','Bob','Cindy']"кроме действительного:P

2 ответа

Решение

С XSLT 2.0 достаточно использовать $name = ('Alice', 'Bob', 'Cindy'),

Используйте (как в XSLT 1.0, так и в XSLT 2.0):

contains('|Alice|Bob|Cindy|', concat('|', $name, '|'))

и, как уже упоминал Мартин Хоннен, только в XPath 2.0 (XSLT 2.0) можно просто написать:

$name = ($seqOfNames)
Другие вопросы по тегам