[1] xslt:attribute
要素型は、
雛形中で、属性節を生成するのに使います。
<http://www.w3.org/TR/xslt#element-attribute>
[2] 属性:
name | {QName} | (必須) | 属性名 |
namespace | {URI参照} | (name 属性による) | 名前空間名 |
[3] 属性名の決定は、
xslt:element
要素の場合とほぼ同じ手順で行われます。但し、
name
属性の評価結果が接頭辞なしで、
namespace
属性でも名前空間名がなしになる場合は
null 名前空間です。 (既定名前空間ではありません。)name
属性の評価結果が QName
にならない場合だけでなく、丁度 xmlns
になった場合も誤りとし、報告するか、又は属性を追加しないことで誤りから回復しなければなりません。xmlns
であった場合、結果木でも同じこの接頭辞にしてはいけません。xmlns:xslt
属性ができてはいけません。
例えば <element whatever:xslt="http://www.w3.org/1999/XSL/Transform" xmlns:whatever="whatever"/>
のような結果が得られるべきです。whatever
の代わりに xmlns の名前空間 URI が指定されていたらどうかは仕様書には書かれていません。
XSLT 1.0 仕様書が xmlns の名前空間 URI が決定される以前に書かれたからでしょう。
単なる xmlns
属性と同様に誤りとするのが適当だと思われます。[4] 既に存在する名前の属性を追加しようとした場合、 後の方に置き換えられます。 例えば、
<element attr1="val1"> <xslt:attribute name="attr1">val2</xslt:attribute> <xslt:attribute name="attr2">val3</xslt:attribute> <xslt:attribute name="attr2">val4</xslt:attribute> </element>
なら結果木は
<element attr1="val2" attr2="val4"/>
になります。