属性セット <xsl:attribute-set

■(書式)
  <xsl:attribute-set name="属性セットの名前">
   <xsl:attribute>を使い個々の属性を定義
  </xsl:attribute-set>

・複数の属性をまとめて定義する。これを利用する場合は、任意の出力要素内で use-attribute-sets="属性セット名" を使う(参照1)。
・HTMLタグに直接使う場合は、xsl:use-attribute-sets="属性セット名" のようにXSLTの名前空間を指定する(参照2)。
・属性セットで適用された属性は、後で新しい属性を設定しオーバーライド(上書き書き換え)し変更できる(参照3)。

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

XMLソース

<?xml version="1.0" encoding="Shift_JIS" ?>
<?xml-stylesheet type="text/xsl" href="attribute05.xsl"?>
<root>
<title>2003年11月05日の東証株式第一部情報</title>
<info><name>銘柄</name><end>終値(円)</end><total>出来高(千株)</total></info>
<data>
<kabu><name code="6752">松下</name><end>1529</end><total>12302</total></kabu>
<kabu><name code="6753">シャープ</name><end>1786</end><total>3964</total></kabu>
<kabu><name code="6758">ソニー</name><end>4030</end><total>8220</total></kabu>
<kabu><name code="6764">三洋</name><end>516</end><total>7551</total></kabu>
<kabu><name code="6501">日立</name><end>692</end><total>21896</total></kabu>
<kabu><name code="6502">東芝</name><end>440</end><total>17832</total></kabu>
<kabu><name code="6701">NEC</name><end>1027</end><total>19229</total></kabu>
<kabu><name code="6702">富士通</name><end>708</end><total>16634</total></kabu> </data>
<end>以上です(2004/5/28)</end>
</root>

XSLソース

<?xml version="1.0" encoding="Shift_Jis"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="Shift_JIS"/>

<xsl:template match="/">
<html>
<head>
<style type="text/css">
.test1 {width:130px;background-color:silver;text-align:right}
.test2 {width:180px;text-align:right}
</style>
</head>
<body>
<center><H3><xsl:value-of select="root/title"/></H3></center>
<xsl:apply-templates select="root/data/kabu"/>
</body></html>
</xsl:template>
<!--class属性とstyle属性を含む属性セットを定義、名前は"cssStyle"-->
<xsl:attribute-set name="cssStyle">
<xsl:attribute name="class">test1</xsl:attribute>
<xsl:attribute name="style">color:blue;border:1px solid green</xsl:attribute>
</xsl:attribute-set>

<xsl:template match="kabu">
<p>
<xsl:element name="span" use-attribute-sets="cssStyle"> ・・・(参照1)
<xsl:value-of select="name"/></xsl:element>
<span xsl:use-attribute-sets="cssStyle"> ・・・(参照2)
終値は:<xsl:value-of select="end"/>円</span>
<span xsl:use-attribute-sets="cssStyle" ・・・(参照3)
class="test2" style="border-bottom:1px solid green">
出来高は:<xsl:value-of select="total"/>(千株)</span>
</p>
</xsl:template>
</xsl:stylesheet>

end(04/5/28)