2013-06-20 70 views
2

我有一个问题,我需要匹配xsl中的两个参数choose clause,有没有办法实现这个?XSLT - xsl选择

例如:xsl:when test =我需要检查两个参数,然后我可以检查 相同的价格,但没有降低ordertype。

<xsl:choose> 
    <xsl:when test="price = 10" && "OrderType='P' "> 
     <td bgcolor="#ff00ff"> 
     <xsl:value-of select="artist"/></td> 
    </xsl:when> 
    <xsl:when test="price = 10"> 
     <td bgcolor="#cccccc"> 
     <xsl:value-of select="artist"/></td> 
    </xsl:when> 
    <xsl:otherwise> 
     <td><xsl:value-of select="artist"/></td> 
    </xsl:otherwise> 
    </xsl:choose> 

回答

5
<xsl:choose> 
    <xsl:when test="price = 10 and OrderType='P' "> 
     <td bgcolor="#ff00ff"> 
     <xsl:value-of select="artist"/></td> 
    </xsl:when> 
    <xsl:when test="price = 10"> 
     <td bgcolor="#cccccc"> 
     <xsl:value-of select="artist"/></td> 
    </xsl:when> 
    <xsl:otherwise> 
     <td><xsl:value-of select="artist"/></td> 
    </xsl:otherwise> 
    </xsl:choose> 
+0

那么这很容易:)谢谢。 – AxV

+0

我也可能会建议您应该在选择之外编写TD和Value-of语句。在现实中,你有一个选择是选择颜色。该选择应该位于xsl:属性内。 –

1

在上面我的意见,我会做这种方式来拯救自己不断变化的“艺术家”或类似的东西的未来努力。该选择仅涉及的bgcolor并应适用于只(消除顺便否则条件):

<td> 
     <xsl:attribute name="bgcolor"> 
      <xsl:choose> 
       <xsl:when test="price = 10 and OrderType='P' "> 
        <xsl:text>#ff00ff</xsl:text> 
       </xsl:when> 
       <xsl:when test="price = 10"> 
        <xsl:text>#cccccc</xsl:text> 
       </xsl:when> 
      </xsl:choose> 
     </xsl:attribute> 
     <xsl:value-of select="artist"/> 
    </td> 
+0

这是一个很好的建议,但请记住,如果两个条件都不符合,那么您将拥有一个空的'bgcolor'属性。 – 2013-06-20 23:12:18

+0

啊,是的,你是正确的,并在HTML中......不是很差,在XSL FO一个不,不。我应该更清楚。您可以随时返回,并使用默认颜色或透明。 –

1

扩展以前的答案,我也建议把你的样式信息到CSS,柜面你想不仅仅是后期改变的背景。此外,你不需要需要<xsl:text>元素,他们只是保持空白到最低限度,但这应该不像你想象的那么多的属性问题。

另外,如果可能,我喜欢使用属性值模板来保持XSL尽可能接近输出值,但这纯粹是一种风格选择。

<xsl:variable name="cellClass"> 
    <xsl:choose> 
     <xsl:when test="price = 10 and OrderType='P' "> 
      cellPriceTenAndP 
     </xsl:when> 
     <xsl:when test="price = 10"> 
      cellPriceTen 
     </xsl:when> 
    </xsl:choose> 
</xsl:variable> 
<td class="{$cellClass}"> 
    <xsl:value-of select="artist"/> 
</td>