属性を宣言します。
<attribute
default = string
fixed = string
form = (qualified | unqualified)
id = ID
name = NCName
ref = QName
type = QName
use = (optional | prohibited | required): optional
{any attributes with non-schema Namespace...}>
Content: (annotation?, (simpleType?))
</attribute>
属性
default
属性の既定の値。XML ドキュメント内のインスタンスに属性を指定しなかった場合、属性はここで指定した値に設定されます。したがって、インスタンス ドキュメント内に属性が指定されていない場合でも、スキーマ検証後の情報セットには属性が出現します。インスタンス ドキュメントに実際には属性が指定されていない場合でも、スキーマのプロセッサは、属性に既定値が指定されているのと同様に動作します。default 属性と fixed 属性の両方を同時に指定することはできません。省略可能です。
fixed
属性の固定値。インスタンス ドキュメントに属性が指定されている場合、その値は指定された固定値と等しい値である必要があります。属性が指定されていない場合、属性は指定された値を受け取ります。default 属性と fixed 属性の両方を同時に指定することはできません。省略可能です。
form
属性の形式。既定値は、この属性を含む schema 要素の attributeFormDefault 属性の値です。この値には、"qualified" または "unqualified" のどちらかを指定する必要があります。値が unqualified の場合、この属性は名前空間プレフィックスで修飾する必要がなく、属性のコロンを含まない名前 (NCName) (ローカル名) と比較されます。
値が qualified の場合、この属性はスキーマの targetNamespace と属性の NCName の組み合わせで修飾する必要があります。
省略可能です。
id
この要素の ID。id の値は ID 型である必要があり、この要素を含んでいるドキュメント内で一意である必要があります。省略可能です。
name
属性の名前。『XML Namespaces』の仕様に定義されているとおりの NCName である必要があります。コンテナ要素が schema 要素である場合に必要になります。name 属性と ref 属性の両方を同時に指定することはできません。XML ドキュメントをスキーマと比較して検証する場合、ドキュメントの各属性がスキーマの 1 つの attribute 要素と比較して検証されます。
省略可能です。
ref
このスキーマ (または指定した名前空間によって示される他のスキーマ) に宣言されている属性名。ref 値は修飾名 (QName) でなければなりません。この型には名前空間プレフィックスを含めることができます。name 属性と ref 属性の両方を同時に指定することはできません。ref がある場合は、simpleType 要素、form および type を指定することはできません。複合型の内部で既存の属性定義を使用して属性を宣言するには、ref 属性を使用して既存の属性定義を指定します。
<xs:attribute name="mybaseattribute"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:maxInclusive value="1000"/> </xs:restriction> </xs:simpleType> </xs:attribute> <xs:complexType name="myComplexType"> <xs:attribute ref="mybaseattribute"/> </xs:complexType>
省略可能です。
type
組み込みデータ型の名前か、またはこのスキーマ (または指定した名前空間によって示される他のスキーマ) に定義されている単純型の名前。型は QName である必要があります。この型には名前空間プレフィックスを含めることができます。コンテンツとして simpleType 要素が含まれていない場合だけ、type 属性を使用できます。省略可能です。
use
属性の使用方法を示すインジケータ。この属性を指定する場合、この属性は次のいずれかの値を持つ必要があります。
optional
属性は省略可能であり、任意の値を持つことができます。これは、既定の設定です。次の 2 つは等価です。
<xs:attribute name="myattr" type="xs:string"/> <xs:attribute name="myattr" type="xs:string" use="optional"/>
prohibited
属性を使用できません。この属性は、他の複合型の制限の中で使用されて既存の属性の使用を禁止します。
<xs:complexType name="A"> <xs:attribute name="x" type="xs:NCName"/> <xs:attribute name="y" type="xs:QName"/> </xs:complexType>
<xs:complexType name="B"> <xs:complexContent> <xs:restriction base="xs:A"> <xs:attribute name="x" use="required" /> <xs:attribute name="y" use="prohibited"/> </xs:restriction> </xs:complexContent> </xs:complexType>
required
属性は一度使用する必要があります。
属性は必須であり、属性のこの型定義で許される任意の値を持つことができます。
<xs:attribute name="myattr" type="xs:string" use="required"/>
この属性は、他の複合型の制限または拡張で使用され、指定した属性 (複数の属性の場合もある) が存在することを要求します。
<xs:complexType name="A"> <xs:attribute name="x" type="xs:NCName"/> <xs:attribute name="y" type="xs:QName"/> </xs:complexType>
<xs:complexType name="B"> <xs:complexContent> <xs:restriction base="xs:A"> <xs:attribute name="x" use="required" /> <xs:attribute name="y" use="prohibited"/> </xs:restriction> </xs:complexContent> </xs:complexType>
属性をグローバル (その親要素が schema である) として宣言した場合、この属性はそのスキーマのすべての要素で必須です。
省略可能です。
要素情報
出現回数 |
schema 要素内で 1 回定義されます。複合型または属性グループでは複数回参照されます。 |
親要素 |
attributeGroup、schema、complexType、restriction (simpleContent)、extension (simpleContent)、restriction (complexContent)、extension (complexContent) |
コンテンツ |
解説
属性宣言では、型定義 (組み込みデータ型または単純型) に名前を関連付けます。
属性宣言は、(グローバル スコープを持つ) schema、complexType、attributeGroup の各要素の子要素として記述するか、または複合型定義の中に記述できます。複合型の場合、属性宣言は、ローカル宣言またはグローバル スコープを持つ属性への参照として記述できます。
また、属性は、attributeGroup 要素および complexType 要素内で参照によって宣言することもできます。
例
既定値 test が設定された組み込み型への参照によって宣言され、complexType 要素内で使用される属性の例を次に示します。
<xs:attribute name="mybaseattribute" type="xs:string" default="test" />
<xs:complexType name="myComplexType">
<xs:attribute ref="mybaseattribute"/>
</xs:complexType>
required 属性を直接 complexType 要素内で宣言する例を次に示します。
<xs:complexType name="myComplexType">
<xs:attribute name="mybaseattribute" type="xs:string" use="required"/>
</xs:complexType>
組み込み整数型から (制限付きで) 派生させ、値の範囲を "60"
~ "95"
に制限して属性を宣言する例を次に示します。
<xs:attribute name="myHolidayLocationTemperature">
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="60"/>
<xs:maxInclusive value="95"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
10 進値を含むリストとして属性を宣言する例を次に示します。この宣言により、たとえば shoeSizes="10.5 9 8 11" の属性に、値 10.5、9、8、および 11 のリストを含めることができます。
<xs:simpleType name="Sizes">
<xs:restriction base="xs:decimal">
<xs:enumeration value="10.5"/>
<xs:enumeration value="9"/>
<xs:enumeration value="8"/>
<xs:enumeration value="11"/>
</xs:restriction>
</xs:simpleType>
<xs:attribute name="shoeSizes">
<xs:simpleType>
<xs:list itemType="Sizes"/>
</xs:simpleType>
</xs:attribute>
その他のリソース
詳細については、www.w3.org/TR/2001/REC-xmlschema-1-20010502/#element-all で公開されている、W3C 勧告『XML Schema Part 1: Structures』を参照してください。