属性

属性によって、名前と値の組み合わせを使用して要素に関する情報を追加できます。 属性は要素のプロパティを定義するのによく使用されます。要素の内容が属性値によって決まる場合 (たとえば、HTML img 要素) もありますが、要素のプロパティは要素の内容とは見なされません。

属性は開始タグまたは空要素タグに含めることができますが、終了タグに含めることはできません。 構文は次のとおりです。

<elementName att1Name="att1Value" att2Name="att2Value"...>

または、

<elementName att1Name="att1Value" att2Name="att2Value".../>

属性には名前と値の両方が必要です。 値を持たない名前は許可されません。 要素が同じ名前の 2 つの属性を持つことはできません。 要素内で属性が現れる順序は XML にとって重要ではないため、XML パーサーで維持されない場合があります。

要素名と同様、属性名では大文字と小文字が区別され、文字かアンダースコアで始まらなければなりません。 名前の残りの部分には、文字、数字、ハイフン、アンダースコアおよびピリオドを含めることができます。

ms256152.note(ja-jp,VS.100).gif注 :
コロンは、名前空間における使用のために予約されています。Unicode 文字の中で使用可能な文字と数字の詳細については、『XML 仕様』の「付録 B」を参照してください。

属性値は、通常のテキスト内容と同じ規則に従う必要があり、追加の制限がいくつかあります。 属性値には、要素マークアップではなく、テキストだけを含めることができます。 属性値内では、エンティティ参照と文字参照が許可されますが、CDATA セクションは許可されません。

最後に、引用符はエスケープする必要があります。 XML 仕様では、属性を示すために、単一引用符または二重引用符のどちらかを使用できます。属性値の両側で使用する引用符の種類は同じにする必要があります。 ただし、属性値を囲む引用符は必須です。 XML パーサーは、属性値を囲む引用符を使用していないドキュメントを単に拒否し、エラーを報告します。

属性値を示すために単一の引用符を使用する場合、属性値の内部の単一の引用符は &apos; エンティティ参照を使用して表す必要があります。

<myElement contraction='isn&apos;t' />

属性値を示すために二重引用符を使用する場合、属性値の内部の二重引用符は &quot; エンティティ参照を使用して表す必要があります。

<myElement question="They asked &quot;Why?&quot;" />

ただし、次の例で説明されているように、単一の引用符で囲まれた属性値の内部では、二重引用符を使用することができ、逆も可能です。

<myElement contraction="isn't" />
<myElement question='They asked "Why?"' />

同一の要素内の異なる属性値には、異なる種類の引用符を使用することもできます。

<myElement contraction="isn't" question='They asked "Why?"' />

XML パーサーは、要素のテキスト内容の空白を維持するのと同じ方法では、属性値内の空白を維持しません。 DTD にアクセスする検証パーサーでは、CDATA 以外の任意の型の属性値内の空白はすべて単一のスペースに置き換えられます。開始位置と終了位置の空白は削除されます。