例えば xsl:value-of で取り出したテキストを、出力文書で属性値として使いたい場合があります。 そのようなとき、属性値に xsl:value-of を書くことはできません。
次のXML文書を考えてみます。 この要素が表現している画像ファイルのファイル名を、 HTMLのimg要素のsrc属性の値として使うことを考えます。
<!-- 適用先のXML文書の一部 --> <画像ファイル>電大太郎の大冒険.jpg</画像ファイル>
このとき、次のように書くことはできません。
<!-- これは間違い --> <img src="<xsl:value-of select="画像ファイル"/>"/>
ある要素に対して属性を指定したい場合、属性をその要素の子(孫)要素として記述する方法があります。 例えば img 要素に src 属性をつけたい場合、次のように、img 要素の子要素として xsl:attribute 要素を用意します。
<img> <xsl:attribute name='src'> <xsl:value-of select="画像ファイル"/> </xsl:attribute> </img>
xsl:attribute 要素は、その要素を含んでいる出力要素(この場合img要素)に属性を追加します。 この例では、出力結果は以下のようになります。
<img src="電大太郎の大冒険.jpg"/>
次の例は、span要素にstyle属性をつけます。 color というパラメータを参照しています。 'blue'というのはパラメータのデフォルト値です。
<xsl:param name="color" select="'blue'"/> <span> <xsl:attribute name='style'> color: <xsl:value-of select="$color"/>; </xsl:attribute> ここが青くなりますね </span>
以下のように変換されます。
<span style="color: blue;">ここが青くなりますね</span>