XMLスキーマのcomplexTypesに制限を追加する場合、complexTypeの定義で使用されるすべての要素を書き直す必要がありますか?もしそうなら、なぜそれは既存の要素定義を再利用して新しい制限されたものを上書きできないのですか?
たとえば、以下では; フィールドの国を制限したいだけの場合、3つのフィールドすべてを書き直す必要がありますか?
<xs:complexType name="customer">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Norwegian_customer">
<xs:complexContent>
<xs:restriction base="customer">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
<xs:element name="country" type="xs:string" fixed="Norway"/>
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
したがって、タイプ全体を書き直さなければならない理由については、以下の回答からかなり明らかです。
フォローアップの質問
では、この制限機能の用途は何ですか?
一つの状況、私は考えることができます; xmlスキーマの基本型の代わりに制限された型を含むインスタンスドキュメントを検証する必要がある場合です。
たとえば、「B」が基本タイプであり、「B*」に制限されている場合。タイプ「B」の要素がスキーマドキュメントによって予期される場所に「B*」を含むインスタンスドキュメントはすべて機能します。制限されたタイプごとに個別のルールを記述する必要はありません。(属性「xsi:type」のインスタンスドキュメントは正しいタイプで検証します。)そうですか?
この機能の他の用途はありますか?