Ograniczenie schematu XML dla typów złożonych: pełna definicja?

Czy dodając ograniczenia do złożonych typów w schematach XML, konieczne jest przepisanie wszystkich elementów używanych w definicji typu złożonego? Jeśli tak, to dlaczego nie może po prostu użyć istniejących definicji elementów i zastąpić nowych ograniczonych?

Na przykład w poniższym; Kiedy chcę ograniczyć kraj pola, Czy powinienem ponownie przepisać wszystkie 3 pola?

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

Tak więc z odpowiedzi poniżej jasno wynika, dlaczego musimy przepisać cały typ.

Pytanie kontrolne

Jakie jest zatem zastosowanie tej funkcji ograniczenia?

Jedna sytuacja, myślę o tym; to jest, gdy musisz sprawdzić dokumenty instancji zawierające typy ograniczone w miejsce typów podstawowych w schemacie XML.

Powiedz, jeśli „B” jest typem podstawowym i jest ograniczony do „B *”. Dowolny dokument instancji zawierający „B *” w miejscu, w którym oczekiwany jest element typu „B” w dokumencie schematu, zadziała. Nie musielibyśmy pisać osobnych reguł dla każdego ograniczonego typu. (Atrybut „xsi: type” w dokument instancji sprawdzi poprawność przy użyciu poprawnego typu).

Wszelkie inne zastosowania tej funkcji?

questionAnswers(1)

yourAnswerToTheQuestion