如果条件使用XSL,则在变量中设置值

时间:2016-07-20 13:43:43

标签: xslt xslt-2.0

我有一个基本条件,检查变量是否为空,以及是否将变量设置为特定值,如此。

<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

关于我在这里做错了什么想法?

2 个答案:

答案 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'"/>