-3

プロモーション中の CD の価格が赤色で表示されるように、XSL ファイルを変更する必要があります。

ここに私の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ファイルです。choose と when を使用しようとしましたが、機能しません。その部分にコメントしました。

<?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を一致させることです。pricepromotional="Yes"

tdfor price を次のように変更するだけです。

<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 に答える