2

我有一个问题,我需要匹配 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>
4

3 回答 3

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>
于 2013-06-20T15:49:00.610 回答
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>
于 2013-06-20T22:55:15.117 回答
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>
于 2013-06-20T23:16:59.577 回答