<xsl:attribute-set> 要素

属性の名前付きセットを定義します。

<xsl:attribute-set
  name = QName
  use-attribute-sets = QNames
</xsl:attribute-set>

属性

  • name
    必ず指定します。 属性セットの修飾名 (XSLT)。 name 属性の値は修飾名です。

  • use-attribute-sets
    修飾名 (XSLT) として指定された、空白で区切られた属性セットのリスト。 この属性を指定することで、列挙された属性のセット内の各属性を宣言します。

要素情報

出現回数

無制限

親要素

xsl:stylesheetxsl:transform

子要素

xsl:attribute

解説

<xsl:attribute-set> 要素のコンテンツは、セット内の属性を指定する 0 個以上の <xsl:attribute> 要素で構成されます。 属性セットを使用するには、<xsl:element> 要素、<xsl:copy> 要素、または <xsl:attribute-set> 要素で use-attribute-sets 属性を指定します。

<xsl:attribute-set> 要素で use-attribute-sets 属性を使用すると属性セットが自身を直接または間接的に使用してしまう場合は、エラーが発生します。

use-attribute-sets 属性を指定することは、1 つの要素で複数の属性を宣言する方法として効率的です。 <xsl:attribute> を使用して同じ結果を得るには、個々の名前付き属性セット内の個々の属性について <xsl:attribute> 要素を使用する必要があります。 これらの <xsl:attribute> 要素を、<xsl:element> 要素、<xsl:copy> 要素、または <xsl:attribute-set> 要素のコンテンツとして追加します。

リテラル結果要素で xsl:use-attribute-sets 属性を指定することによって属性セットを使用することもできます。 リテラル結果要素の場合、属性は次の順序で追加されます。

  1. xsl:use-attribute-sets 属性で指定されている属性が、指定されている順に追加されます。

  2. リテラル結果要素で指定されている属性。

  3. <xsl:attribute> 要素によって指定されているすべての属性が追加されます。

要素に属性を追加すると、同じ名前を持つその要素の既存の属性が置き換えられるため、属性セットで指定されている属性は、リテラル結果要素自体で指定されている属性によってオーバーライドされることがあります。

属性セットが使用されるたびに、<xsl:attribute-set> 要素の個々の <xsl:attribute> 要素内のテンプレートがインスタンス化されます。 このテンプレートのインスタンス化では、use-attribute-sets 属性または xsl:use-attribute-sets 属性を持つ要素のインスタンス化で使われる現在のノードおよび現在のノード リストと同じものが使用されます。 ただし、表示される変数のバインディングを決めるのは、use-attribute-sets 属性または xsl:use-attribute-sets 属性を持つ要素の位置ではなく、スタイル シート内の <xsl:attribute> 要素の位置です。 したがって、最上位の <xsl:variable> 要素と <xsl:param> 要素によって宣言された変数とパラメーターのみが表示されます。

同じ展開名を持つ 1 つの属性セットの複数の定義は併合されます。 インポート優先順位が高い定義に含まれている属性は、インポート優先順位が低い定義に含まれている属性より優先されます。

同じ展開名と同じインポート優先順位を持つ 2 つの属性セットがあり、それらの両方に同じ属性が含まれている場合は、それより高いインポート優先順位を持ち、同じ属性が含まれている属性セットの定義がない限り、エラーが発生します。

次のトピックでは、<xsl:attribute-set> 要素の使用例を紹介します。