我有一个基本条件,检查变量是否为空,以及是否将变量设置为特定值,如此。
<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
关于我在这里做错了什么想法?
答案 0 :(得分:5)
变量在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>
答案 1 :(得分:0)
使用单个xsl:variable
作为<xsl:variable name="PIC" select="if (avatar != '') then avatar else 'placeholder.jpg'"/>
。