XSD 属性
すべての属性はシンプルタイプとして宣言されます。
属性とは何ですか?
シンプル要素は属性を持つことができません。要素に属性がある場合、それは複合タイプとして見なされます。ただし、属性自体は常にシンプルタイプとして宣言されます。
属性を宣言する方法は?
属性の定義法は:
<xs:attribute name="xxx" type="yyy"/>
ここでは、xxxは属性名を指し、yyyは属性のデータタイプを規定します。XML Schemaは多くの内蔵データタイプを持っています。
最も一般的なタイプは:
- xs:string
- xs:decimal
- xs:integer
- xs:boolean
- xs:date
- xs:time
例
これは属性を持つXML要素です:
<lastname lang="EN">Smith</lastname>
これは対応する属性定義です:
<xs:attribute name="lang" type="xs:string"/>
属性のデフォルト値と固定値
属性には指定されたデフォルト値や固定値を持つことができます。
他の値が指定されていない場合、デフォルト値が自動的に要素に割り当てられます。
以下の例では、デフォルト値は"EN"です:
<xs:attribute name="lang" type="xs:string" default="EN"/>
固定値もまた自動的に要素に割り当てられ、別の値を指定することはできません。
以下の例では、固定値は"EN"です:
<xs:attribute name="lang" type="xs:string" fixed="EN"/>
オプションの属性と必須の属性
デフォルトでは、属性はオプションです。属性を必須に設定するには、"use"属性を使用してください:
<xs:attribute name="lang" type="xs:string" use="required"/>
内容の制約
XML要素または属性に定義されたデータタイプがある場合、要素または属性の内容に制約が追加されます。
XML要素のタイプが"xs:date"で、その内容が"Hello World"のような文字列である場合、要素は(通過して)検証されません。
XML schema を使用すると、独自の限定を XML 要素および属性に追加することもできます。これらの限定は facet と呼ばれます(編者注:多面体の面を意味し、限定面と翻訳できます)。facet に関する詳細は次のセクションで説明します。