Как использовать функцию «Содержит» с внешним списком

#xslt-2.0

#xslt-2.0

Вопрос:

Мой XSLT проверяет языковой код, но по какой-то причине он не работает. Он включает в себя другой файл xsl, который содержит все возможные языковые коды.

 <xsl:include href="inc/iso639-2.xsl"/>
  

Этот файл выглядит следующим образом.

 <?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:variable name="iso639-2">
        <xsl:text>aar</xsl:text>
        <xsl:text>abk</xsl:text>
        <xsl:text>ace</xsl:text>
        <xsl:text>ach</xsl:text>
        <xsl:text>ada</xsl:text>
        <xsl:text>ady</xsl:text>
        <xsl:text>afa</xsl:text>
        <xsl:text>afh</xsl:text>
        <xsl:text>afr</xsl:text>
        <xsl:text>ain</xsl:text>
        <xsl:text>aka</xsl:text>
        <xsl:text>akk</xsl:text>
        <xsl:text>alb</xsl:text>
        <xsl:text>ale</xsl:text>
        <xsl:text>alg</xsl:text>
        <xsl:text>alt</xsl:text>
        <xsl:text>amh</xsl:text>
        <xsl:text>ang</xsl:text>
        <xsl:text>anp</xsl:text>
        <xsl:text>apa</xsl:text>
        <xsl:text>ara</xsl:text>
        <xsl:text>arc</xsl:text>
        <xsl:text>arg</xsl:text>
        <xsl:text>arm</xsl:text>
        <xsl:text>arn</xsl:text>
        <xsl:text>arp</xsl:text>
        <xsl:text>art</xsl:text>
        <xsl:text>arw</xsl:text>
...
  

Затем у меня есть это соответствие шаблону, которое выполняется, но тест проходит успешно, даже если языкового кода, такого как «zzz», нет в приведенном выше списке.

    <xsl:template match="etdms10:language | etdms11:language">
        <language>
            <xsl:choose>
                <xsl:when test="string-length(text()) = 3 and contains($iso639-2, lower-case(text())">
                    <languageTerm type="code" authority="iso639-2b">
                        <xsl:apply-templates/>
                    </languageTerm>
                </xsl:when>
                <xsl:otherwise>
                ...
  

Есть идеи, почему мой xsl:when успешен с языковыми кодами, такими как «zzz», когда этого не должно быть? Я действительно позаботился о том, чтобы языковые коды, такие как «zzz», не входили в этот список.
Спасибо
Спасибо

Комментарии:

1. Подумайте о том, чтобы показать минимальные, но полные образцы, чтобы мы могли воспроизвести проблему.

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

3. Просто случайное мнение: помещение данных в XSLT неоптимально . Только его создатель будет знать, почему он не использовал для этого XML-файл, который упростил бы выполнение запросов.