Условие работает для таблицы стилей XSLT 1.0, но не для таблицы стилей XSLT 2.0 - PullRequest
0 голосов
/ 05 мая 2009

Рассмотрим это условие, которое существует в шаблоне, который вызывается рекурсивно:

<xsl:if test="$i &lt;= $count">

Я использую процессор XSLT 2.0 (Saxon-B 9.1.0.6). Кажется, что условие работает только при запуске таблицы стилей XSLT 1.0. Когда версия таблицы стилей установлена ​​на 2.0 (как и должно быть), она перестает работать.

Есть идеи почему?

Вот и все:

<xsl:template name="for.loop">
    <xsl:param name="i" />
    <xsl:param name="count" />

    <xsl:if test="$i &lt;= $count">
    ...
    </xsl:if>

    <!-- Repeat the loop by recursion -->
    <xsl:if test="$i &lt;= $count">
        <xsl:call-template name="for.loop">
            <xsl:with-param name="i">
                <xsl:value-of select="$i + 1" />
            </xsl:with-param>
            <xsl:with-param name="count">
                <xsl:value-of select="$count" />
            </xsl:with-param>
        </xsl:call-template>
    </xsl:if>
</xsl:template>

Спасибо.

1 Ответ

1 голос
/ 05 мая 2009

Вот мое подозрение: в зависимости от типов данных $i и $coun t тест «меньше» может завершиться ошибкой в ​​2.0 (которая поддерживает больше типов данных, чем 1.0), где в 1.0 существует неявное преобразование это правильно делает.

Попробуйте преобразовать данные в нужный тип, прежде чем сравнивать, например, используя number().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...