XML-Schemaeinschränkung für komplexe Typen: Vollständige Neudefinition?

Müssen beim Hinzufügen von Einschränkungen zu complexTypes in XML-Schemata alle in der Definition des complexType verwendeten Elemente neu geschrieben werden? Wenn ja, warum kann es nicht einfach die vorhandenen Elementdefinitionen wiederverwenden und die neuen eingeschränkten überschreiben?

Zum Beispiel im Folgenden; Wenn ich nur das Feld Land einschränken möchte, sollte ich alle 3 Felder erneut schreiben?

<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> 

Aus der nachstehenden Antwort geht ziemlich klar hervor, warum wir den gesamten Typ neu schreiben müssen.

Zusatzfrage

Wozu dient diese Einschränkungsfunktion dann?

Eine Situation kann ich mir vorstellen; In diesem Fall müssen Sie Instanzdokumente validieren, die eingeschränkte Typen anstelle von Basistypen im XML-Schema enthalten.

Sagen wir, wenn "B" der Basistyp ist und auf "B *" beschränkt ist. Jedes Instanzdokument, das "B *" an der Stelle enthält, an der ein Element vom Typ "B" vom Schemadokument erwartet wird, würde funktionieren. Wir müssten nicht für jeden eingeschränkten Typ separate Regeln schreiben. (Das Attribut "xsi: type" in Das Instanzdokument überprüft es mit dem richtigen Typ.) Richtig?

Irgendwelche anderen Verwendungen dieser Funktion?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage