Ok, evo je lista problema koji more tvoj XSD da ne bi jedno po jedno trebili:
1. Koristis xs:string tip za jedan element iako si taj namespace registrovao sa prefixom xsn
2. Fali ti targetNamespace, onaj po kome ce se XML pozivati na njega.
3. xsd:choice ne sluzi za limitiranje mogucih vrednosti taga, sluzi za odabir jednog od pod-tagova, ono sto ti trazis je simple type enumeration restriction.
4. Ako tag sadrzi ista vise od osnovnih podataka, nor atribut ili podtagove, automatski postaje complex type i uvek mora eksplicitno da se napomene
5. Nigde ne pominjes tipove podataka koji su ti u implicitnim ili simple tipovima.
6. Ako imas XSD ne treba ti DTD, sve sto ti treba za validaciju je vec u xsd-u i xsd ima mnogo vise mogucnosti za preciznije definisanje, a i brate u XML formatu je
7. MNOGO MNOGO vaznije, imas fundamentalnu gresku u razumevanju XMLa i XSDa. Xml nosi podatke, xsd nosi semu tog xml-a, njime odredjujes tagove i njihove tipove, ne sadrzaj koji ide u njih. Dakle sema koju ti trazis je sledeca:
Code:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.elitesecurity.org/t300733"
attributeFormDefault="unqualified" elementFormDefault="qualified">
<xs:element name="abgabe">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="projekt">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="projektbezeichnung" type="xs:string" />
<xs:element name="benutzer">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="Bilder">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="unbounded">
<xs:element name="skale">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="1x1"/>
<xs:enumeration value="2x1"/>
<xs:enumeration value="1x2"/>
<xs:enumeration value="2x2"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="pixelitem">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="owner" type="xs:string" />
<xs:element name="name" type="xs:string" />
<xs:element name="id" type="xs:decimal" />
<xs:element name="Desc" type="xs:string" />
<xs:element name="link" type="xs:string" />
<xs:element name="img-path" type="xs:string" />
<xs:element name="hScale" type="xs:int" />
<xs:element name="hScaleto" type="xs:int" />
<xs:element name="vScale" type="xs:int" />
<xs:element name="vScaleto" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="status">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="abgabetoolstatus" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Kad target namespace ubasic u XML kao default namespace, validacija prolazi bez problema:
Code:
<?xml version="1.0" encoding="utf-8"?>
<abgabe xmlns="http://www.elitesecurity.org/t300733">
<projekt>
<projektbezeichnung>Keine Dokumentation keiner Webapplikation</projektbezeichnung>
<benutzer>
<Bilder>
<skale>1x1</skale>
<skale>2x1</skale>
<skale>1x2</skale>
<skale>2x2</skale>
</Bilder>
</benutzer>
<pixelitem>
<owner>vlasnik</owner>
<name>proba</name>
<id>0.1</id>
<Desc>slika</Desc>
<link>http://nowhere.com</link>
<img-path>http://imageshack.us</img-path>
<hScale>34</hScale>
<hScaleto>4</hScaleto>
<vScale>34</vScale>
<vScaleto>4</vScaleto>
</pixelitem>
<status>
<abgabetoolstatus>CLOSED</abgabetoolstatus>
</status>
</projekt>
</abgabe>