EDIT
Upon reading your post again, I think the original version of my answer (below) is not it.
You have a list already - your variable declaration selects a node-set of all <country>
nodes that are children of <Request>
(a node-set is the XSLT equivalent of an array/a list):
<xsl:variable name="$country" select="Request/country" >
But the point is, you don't even need that list as a separate variable; all you need is:
<xsl:when test="Request[country=$country]"><!-- … --></xsl:when>
Where Request[country=$country]
reads as "Within <Request>
, look at every <country>
and select it if it is equal to $country
." When the expression returns a non-empty node-set, $country
is in the list.
Which is, in fact, what Rubens Farias said from the start. :)
Original answer, kept for the record.
If by "list" you mean a comma-separated string of tokens:
<!-- 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>