EDIT
После прочтения вашего поста, я думаю, что оригинальная версия моего ответа (ниже) не так.
У вас уже есть список - ваше объявление переменной выбирает набор узлов из всех <country>
узлов, которые являются потомками <Request>
(набор узлов является эквивалентом XSLT массива список):
<xsl:variable name="$country" select="Request/country" >
Но дело в том, что вам даже не нужен этот список как отдельная переменная; все что вам нужно это:
<xsl:when test="Request[country=$country]"><!-- … --></xsl:when>
Где Request[country=$country]
читается как «Внутри <Request>
, посмотрите на каждый <country>
и выберите его, если он равен $country
». Когда выражение возвращает непустой набор узлов, $country
находится в списке.
Что, собственно, и сказал Рубенс Фариас с самого начала. :)
Оригинальный ответ, сохранен для записи.
Если под "списком" вы подразумеваете строку токенов, разделенных запятыми:
<!-- instead of a variable, this could be a param or dynamically calculated -->
<xsl:variable name="countries" select="'EG, KSA, UAE, AG'" />
<xsl:variable name="country" select="'KSA'" />
<xsl:choose>
<!-- concat the separator to start and end to ensure unambiguous matching -->
<xsl:when test="
contains(
concat(', ', normalize-space($countries), ', ')
concat(', ', $country, ', ')
)
">
<xsl:text>IN</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>OUT</xsl:text>
</xsl:otherwise>
</xsl:choose>