Переменная XSLT не работает в xsl: value-of select = - PullRequest
0 голосов
/ 08 января 2019

Я работаю над некоторым XSLT и создал переменную, которая будет использоваться в цикле, который будет увеличивать индекс по мере его прохождения, поэтому переменная $ index является переменной.

Вот что у меня есть:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">    
    <xsl:template match="/xml">
        <html>
            <head>
                <title><xsl:value-of select="module/name[@ID='SDCModule001']/title "/></title>
            </head>

            <body>
                <xsl:apply-templates select="module/name[@ID='SDCModule001']"/>                
            </body> 
        </html> 
    </xsl:template> 

    <xsl:template name="stepList" match="name">

        <xsl:param name="index" select="1" />
        <xsl:param name="total" select="numSteps" />

        <xsl:variable name="step" select="concat('step', $index)"/>
        <xsl:if test="not($index = $total)">
            <p><xsl:value-of select="step1" /><xsl:value-of select="$step" /></p>
        </xsl:if>
    </xsl:template>
</xsl:stylesheet>

Когда я помещаю информацию в абзаце на странице (<p><xsl:value-of select="step1" /> - <xsl:value-of select="$step" /></p>), я получаю:

Сделай это 1 - шаг1

«Do this 1» - это то, что читается из XML и является правильным. Я не уверен, почему <xsl:value-of select="$step" /> возвращает «step1», а не «Do this 1», потому что <xsl:value-of select="$step" /> должно переводиться в <xsl:value-of select="step1" />.

Любая подсказка, где я иду не так здесь?

Спасибо.

1 Ответ

0 голосов
/ 08 января 2019

XSLT не является языком макросов.

В макроязыке переменные содержат фрагменты текста выражения, поэтому, если $ x содержит текст «delete file 'z'», то оценка $ x приводит к удалению файла.

XSLT - это обычный язык выражений, в котором переменные содержат значения. Оценка переменной, содержащей текст «delete file 'z'», просто возвращает этот текст, но не вызывает удаления каких-либо файлов. Аналогично, если значение переменной $ v1 равно «$ v2», результатом оценки будет строка «$ v2», а не содержимое переменной $ v2.

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