EDIT
Khi đọc bài viết của bạn một lần nữa, tôi nghĩ rằng phiên bản gốc của câu trả lời của tôi (dưới đây) phải không.
Bạn có một danh sách đã - Tờ khai biến của bạn lựa chọn một nút thiết lập của tất cả các <country>
nút đó là con của <Request>
(một node-set là XSLT tương đương với một mảng/danh sách):
<xsl:variable name="$country" select="Request/country" >
Nhưng vấn đề là, bạn thậm chí không cần danh sách đó dưới dạng biến riêng biệt; tất cả các bạn cần là:
<xsl:when test="Request[country=$country]"><!-- … --></xsl:when>
đâu Request[country=$country]
đọc như "Trong vòng <Request>
, nhìn vào mỗi <country>
và chọn nó nếu nó là bằng $country
." Khi biểu thức trả về một tập hợp nút không trống, $country
nằm trong danh sách.
Thực tế, những gì Rubens Farias đã nói từ đầu. :)
Câu trả lời gốc, lưu giữ hồ sơ.
Nếu bởi "danh sách" bạn có nghĩa là một chuỗi bằng dấu phẩy của thẻ:
<!-- 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>
danh sách đó thuộc về đầu vào XML của bạn? –
XML đầu vào như thế nào? Các nút văn bản mã quốc gia có phải là trẻ em hay yếu tố hoặc ví dụ: thuộc tính? –
jelovirt