属性の生成<xsl:attribute>の活用

・<xsl:attribute>で生成する属性値を、条件処理<xsl:choose>で変化さす。

[サンプルXML文書を表示](下のフレームに)

XMLソース

<?xml version="1.0" encoding="Shift_JIS" ?>
<?xml-stylesheet type="text/xsl" href="attribute02.xsl"?>
<start>
  <top>属性の生成の活用</top>
  <contents>
    <data><sum>1234</sum></data>
    <data><sum>7529</sum></data>
    <data><sum>3800</sum></data>
    <data><sum>2084</sum></data>
    <data><sum>6610</sum></data>
    <data><sum>8902</sum></data>
    <data><sum>1003</sum></data>
    <data><sum>4321</sum></data>
    <data><sum>5234</sum></data>
  </contents>
  <end>以上です(00/11/2)</end>
</start>

XSLソース

<?xml version="1.0" encoding="Shift_Jis"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
  <xsl:template match="/">
    <H4><xsl:value-of select="start/top"/></H4>
    <xsl:apply-templates select="start/contents"/>
  </xsl:template>
  
  <xsl:template match="contents">
    <xsl:for-each select="data">
      <DIV>
        <xsl:attribute name="style">color:
          <xsl:choose>
    		<xsl:when test="sum[.$lt$ 2000]">red</xsl:when>
    		<xsl:when test="sum[.$gt$ 2001 and .$lt$ 4000]">blue</xsl:when>
    		<xsl:when test="sum[.$gt$ 4001 and .$lt$ 6000]">green</xsl:when>
    		<xsl:otherwise>navy</xsl:otherwise>
  	    </xsl:choose>
        </xsl:attribute>
 	  <xsl:value-of/>
 	</DIV>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>

end(00/11/2)