Xslt 使用XSL在if条件上设置变量中的值
我有一个基本条件,检查变量是否为空,以及是否将变量设置为一个特定值Xslt 使用XSL在if条件上设置变量中的值,xslt,xslt-2.0,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:
<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
返回的任何内容。然后进行测试,检查它是否为空并分配给varPIC
,如果为空,则将值占位符添加到varPIC
现在出于某种原因,我不断得到以下警告
没有以下同级指令的变量无效
关于我这里做错了什么,你有什么想法吗?变量在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>
使用单个xsl:variable
,因为
今天学到了一些新东西,感谢您在示例背后的详细解释,非常感谢。