2016-07-20 2 views
0

У меня есть основное условие, которое проверяет, является ли переменная пустой, и если она задана переменной для определенного значения.Установка значения в переменной, если условия с использованием XSL

<xsl:variable name="PIC" select="avatar"/> 

<xsl:choose> 
    <xsl:when test="avatar !=''"> 
    <xsl:variable name="PIC" select="avatar"/> 
    </xsl:when> 
    <xsl:otherwise> 
    <xsl:variable name="PIC" select="'placeholder.jpg'"/> 
    </xsl:otherwise> 
</xsl:choose> 

В основном var PIC настроен на то, что возвращается avatar. Затем выполняется тест, чтобы проверить, если он не пуст и назначен для var PIC, и если он пуст, вместо этого вместо placeholder.jpg добавляется var PIC.

Теперь по некоторым причинам я получаю следующее предупреждение

A variable with no following sibling instructions has no effect

Любые идеи о том, что я делаю неправильно здесь?

ответ

1

Переменные неизменяемы в XSLT и не могут быть изменены после установки. Объявления переменных в xsl:choose - это просто новые объявления, которые локальны в области видимости для текущего блока. (Говорят, что они «теневые» исходную переменную).

Что вам нужно сделать, это ...

<xsl:variable name="PIC"> 
    <xsl:choose> 
    <xsl:when test="avatar !=''"> 
     <xsl:value-of select="avatar"/> 
    </xsl:when> 
    <xsl:otherwise> 
     <xsl:value-of select="'placeholder.jpg'"/> 
    </xsl:otherwise> 
    </xsl:choose> 
</xsl:variable> 
+0

Узнал что-то новое сегодня, спасибо за подробное объяснение за вашим примером, оцените его. – BaconJuice

0

Используйте один xsl:variable в <xsl:variable name="PIC" select="if (avatar != '') then avatar else 'placeholder.jpg'"/>.

Смежные вопросы