属性の指定

出力する要素への属性の指定

例えば 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>