Witam. Otóż:
kiedy deklaruję sobie mój 'główny' typ złożony (nie wiem, czy właściwie się wysłowiłem) w następujący sposób:

<xsd:complexType name="czlonek_typ">
<xsd:sequence>
<xsd:element name="dane" type="dane_typ"/>
</xsd:sequence>
</xsd:complexType>,

a następnie definiuję sobie 'dane_typ' w taki oto sposób:

<xsd:simpleType name="dane_typ">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Szturmowiec"/>
<xsd:enumeration value="Snajper"/>
<xsd:enumeration value="Medyk"/>
</xsd:restriction>
</xsd:simpleType>,

to nawet jeśli w odpowiednim miejscu w pliku xml wpiszę nawet największe głupoty, plik i tak się waliduje. Natomiast jeśli zrobić coś takiego:

<xsd:complexType name="czlonek_typ">
<xsd:sequence>
<xsd:element ref="dane"/>
</xsd:sequence>
</xsd:complexType>

<xsd:element name="dane" type="dane_typ"/>


<xsd:simpleType name="dane_typ">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Szturmowiec"/>
<xsd:enumeration value="Snajper"/>
<xsd:enumeration value="Medyk"/>
</xsd:restriction>
</xsd:simpleType>,

wszystko działa dokładnie tak jak powinno (tzn. plik waliduje się tylko jeśli w odpowiednim miejscu w pliku xml wpisałem 'Szturmowiec', 'Snajper', lub 'Medyk'.

Czy ktoś jest w stanie powiedzieć mi, czemu tak, a nie inaczej? I czy można zrobić coś, żeby, pierwszy sposób działał (tzn. jakoś go zmodyfikować)?