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?