您可以做的是将您的 xsl:choose 放入一个变量中,然后更改选择以返回 $var1、$var2、$var3 或 $var4。然后,使用这个新变量的值写出img元素
<xsl:variable name="imgvar">
<xsl:choose>
<xsl:when test="status = 0 or type = 2">
<xsl:value-of select="$var1" />
</xsl:when>
<xsl:when test="status = 1 or type = 24">
<xsl:value-of select="$var2" />
</xsl:when>
<xsl:when test="status = 2 or type = 4">
<xsl:value-of select="$var3" />
</xsl:when>
<xsl:when test="status = 4 or type = 22">
<xsl:value-of select="$var4" />
</xsl:when>
</xsl:choose>
</xsl:variable>
<img id="img_{$imgvar}_check" height="14" width="13" src="{$imgvar}.png" class="{$imgvar}" onclick="check({$imgvar})" alt="{$imgvar}" title="{$imgvar}"/>
我强烈怀疑这不是您想要的,因为在您的img元素的所有属性中使用相同的变量似乎不正确。
另一种方法是使用命名模板,然后从 xsl:choose 调用它
<xsl:template name="img">
<xsl:param name="imgvar">
<img id="img_{$imgvar}_check" height="14" width="13" src="{$imgvar}.png" class="{$imgvar}" onclick="check({$imgvar})" alt="{$imgvar}" title="{$imgvar}"/>
</xsl:template>
<xsl:variable name="imgvar">
<xsl:choose>
<xsl:when test="status = 0 or type = 2">
<xsl:call-template name="img">
<xsl:with-param name="imgvar" select="$var1" />
</xsl:call-template>
</xsl:when>
<xsl:when test="status = 1 or type = 24">
<xsl:call-template name="img">
<xsl:with-param name="imgvar" select="$var2" />
</xsl:call-template>
</xsl:when>
<xsl:when test="status = 2 or type = 4">
<xsl:call-template name="img">
<xsl:with-param name="imgvar" select="$var3" />
</xsl:call-template>
</xsl:when>
<xsl:when test="status = 4 or type = 22">
<xsl:call-template name="img">
<xsl:with-param name="imgvar" select="$var4" />
</xsl:call-template>
</xsl:when>
</xsl:choose>
</xsl:variable>
如果需要,这显然可以扩展为使用额外的参数。
另一种方法是将 xsl:choose 放在img元素中,并为每个选项写出不同的属性。
<img height="14" width="13">
<xsl:choose>
<xsl:when test="status = 0 or type = 2">
<xsl:attribute name="id">img_<xsl:value-of select="$var1" /></xsl:attribute>
<xsl:attribute name="src"><xsl:value-of select="$var1" />.png</xsl:attribute>
</xsl:when>
<xsl:when test="status = 1 or type = 24">
<xsl:attribute name="id">img_<xsl:value-of select="$var2" /></xsl:attribute>
<xsl:attribute name="src"><xsl:value-of select="$var2" />.png</xsl:attribute>
</xsl:when>
<xsl:when test="status = 2 or type = 4">
<xsl:attribute name="id">img_<xsl:value-of select="$var3" /></xsl:attribute>
<xsl:attribute name="src"><xsl:value-of select="$var3" />.png</xsl:attribute>
</xsl:when>
<xsl:when test="status = 4 or type = 22">
<xsl:attribute name="id">img_<xsl:value-of select="$var4" /></xsl:attribute>
<xsl:attribute name="src"><xsl:value-of select="$var4" />.png</xsl:attribute>
</xsl:when>
</xsl:choose>
</img>
我想说使用xsl:call-template是这里最好的。