XSLT - xsl选择

时间:2013-06-20 15:47:51

标签: xslt

我有一个问题我需要在xsl choose子句中匹配两个参数,有没有办法实现这个?

例如:xsl:当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>

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分: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>

答案 2 :(得分: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>