外部スキーマ ファイルから取得する単純型、複合型、グループ、および属性グループを現在のスキーマ内で再定義できます。
<redefine
id = ID
schemaLocation = anyURI
{any attributes with non-schema Namespace}...>
Content: (annotation | (simpleType | complexType | group |
attributeGroup))*
</redefine>
属性
id
この要素の ID。id の値は ID 型である必要があり、この要素を含んでいるドキュメント内で一意である必要があります。省略可能です。
schemaLocation
スキーマ ドキュメントの場所への URI 参照。必ず指定します。
要素情報
出現回数 | 無制限 |
親要素 | schema |
コンテンツ | annotation、attributeGroup、complexType、group、simpleType |
解説
redefine 要素を使用するときは、外部要素が、再定義を行うスキーマと同じ対象名前空間に存在している必要があります。名前空間が指定されていないスキーマも redefine 要素を使用して再定義できますが、再定義されたコンポーネントはそのスキーマの対象名前空間の一部になります。
redefine 要素自体の中の定義では、現在の定義を基本の型定義として使用する必要があります。属性グループ定義およびモデル グループ定義には、そのグループ定義自体を参照する参照を 1 つだけ含める必要があります。再定義されるスキーマ ドキュメントのすべての定義の再定義が必要なわけではありません。
要素を再定義すると、その再定義に基づいている他の型定義で、定義書式の誤りなどの予測不可能なエラーが発生する場合があります。
例
v1.xsd に指定されている要素を含むスキーマ v2.xsd の例を次に示します。personName 型を再定義します。このスキーマに従って、personName 型によって制約される要素は generation 要素になります。
v1.xsd:
<xs:complexType name="personName">
<xs:sequence>
<xs:element name="title" minOccurs="0"/>
<xs:element name="forename" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:element name="addressee" type="personName"/>
v2.xsd:
<xs:redefine schemaLocation="v1.xsd">
<xs:complexType name="personName">
<xs:complexContent>
<xs:extension base="personName">
<xs:sequence>
<xs:element name="generation" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
</xs:redefine>
<xs:element name="author" type="personName"/>
参照
XML スキーマ リファレンス (XSD) | XML スキーマの要素
詳細については、http://www.w3.org/TR/2001/REC-xmlschema-1-20010502/#element-redefine で、W3C『XML Schema Part 1: Structures Recommendation』を参照してください。