<xsl:attribute> 要素
属性ノードを作成し、出力要素に割り当てます。
<xsl:attribute
name = "attribute-name"
namespace = "uri-reference">
</xsl:attribute>
属性
name
必ず指定します。 作成する属性の名前。 この値が修飾名 (QName) である場合、属性ノードは、namespace 属性によってオーバーライドされない限り、現在プレフィックスにバインドされている名前空間で作成されます。 name 属性の値は属性値テンプレートとして解釈されます (<xsl:value-of> 要素の場合と同様に、中かっこ内の式が評価され、文字列に変換されます)。 そのため、属性の名前を計算するか、元の XML から取得することができます。namespace
作成される属性の名前空間 URI (Uniform Resource Identifier)。 name 属性に QName が含まれている場合は、QName で指定されたプレフィックスが名前空間属性で指定されている名前空間にバインドされます。 その場合は、シリアル化のときに、名前空間宣言が追加されることがあります。 この値は、属性値テンプレートとして解釈されます。
要素情報
解説
この要素のコンテンツは、属性の値を指定します。
<xsl:copy> 要素など、出力を生成する要素内に <xsl:attribute> 要素を置くことによって、変換中に属性を追加または変更できます。 <xsl:attribute> は、<xsl:element> と組み合わせて使用するだけでなく、出力要素で直接使用することもできます。
要素に子要素を追加する前に、すべての属性を適用する必要があります。
例
XML ソースから値を取得する属性を生成する簡単な例を次に示します。 この例では、"imagenames/imagename" という XML ソースから適切なデータを取得する XPath 式を使って、<IMG src="value-from-XML-source"/> の形式で出力を生成します。
XSLT ファイル
<IMG>
<xsl:attribute name="src">
<xsl:value-of select="imagenames/imagename" />
</xsl:attribute>
</IMG>
出力
<IMG src=" imagenames/imagename"/>
<xsl:attribute> 要素は、ドキュメントを変換するまでわからない出力属性を動的に作成するのに非常に便利ですが、既に属性を知っている場合は、この要素を使用する必要はありません。 たとえば、前の例で、IMG 要素に src 属性が含まれている必要があることが既にわかっているかもしれません。 その場合は、ドキュメントを変換する前に、その要件がわかっているため、<xsl:attribute> 要素を使用する必要はありません。 次のコードを使用することで、変換構文を簡略化しながら、同じ結果を達成できます。
<IMG src="{imagenames/imagename}"/>
属性値テンプレートの代わりに <xsl:attribute> 要素を使用することで、次のことが可能になります。
属性の名前を計算する。
条件、テンプレート、および属性セットを属性の生成と組み合わせて使用する。
<xsl:copy> 要素または <xsl:element> 要素によって生成された要素に属性を追加する。
このセクションには、次に示す詳細な例も含まれています。