-3

我需要修改 XSL 文件,使促销中的 cd 价格以红色显示。

这是我的xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="catalog.xsl"?>
<catalog>
    <cd promotion="Yes">
        <title>Empire Burlesque</title>
        <artist>Bob Dylan</artist>
        <country>USA</country>
        <company>Columbia</company>
        <price>110</price>
        <year>1985</year>
    </cd>
    <cd promotion="No">
        <title>Hide your heart</title>
        <artist>Bonnie Tyler</artist>
        <country>UK</country>
        <company>CBS Records</company>
        <price>99</price>
        <year>1988</year>
    </cd>
    <cd promotion="Yes">
        <title>Greatest Hits</title>
        <artist>Dolly Parton</artist>
        <country>USA</country>
        <company>RCA</company>
        <price>75</price>
        <year>1982</year>
    </cd>
</catalog>

这是我的 xsl 文件。我尝试使用选择和时间,但它不起作用。我已经评论了那部分。

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <html>
  <body>
    <h2>My CD Collection</h2>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th>Title</th>
        <th>Artist</th>
        <th>Price</th>
        <th>Year</th>
      </tr>
      <xsl:for-each select="catalog/cd">
      <tr>
          <td><xsl:value-of select="title"/></td>
          <td><xsl:value-of select="artist"/></td>
          <td><xsl:value-of select="price"/></td>
            <!--<xsl:choose>
                <xsl:when>
                    <td bgcolor="#ff00ff"><xsl:value-of select="price"/></td>
                    <xsl:otherwise>
                          <td><xsl:value-of select="price"/></td>
                    </xsl:otherwise>
                </xsl:when>
            </xsl:choose>!-->
            <td><xsl:value-of select="year"/></td>
        </tr>
      </xsl:for-each>
    </table>
  </body>
  </html>
</xsl:template>
</xsl:stylesheet>
4

1 回答 1

0

解决这个问题的最好方法是使用xsl:apply-templates和使用模板来匹配price具有属性的父元素promotional="Yes"

只需将td价格更改为:

<td><xsl:apply-templates select="price"/></td>

并添加此模板:

<xsl:template match="price[../@promotion='Yes']">
    <xsl:attribute name="bgcolor">#ff00ff</xsl:attribute>
    <xsl:value-of select="."/>
</xsl:template>
于 2013-03-03T07:55:46.473 回答