Forum » Izdelava spletišč » Validacija XML po XML shemi
Validacija XML po XML shemi
s1m0n ::
Poskušam validirat ta XML
A mi nikakor ne uspe. Napaka se vedno pojavi zaradi ID-jev področij! Shema pade pri referencah na ID-je v pojmih.
Npr.: če je ID področja = "1100" bo validacija uspela kakor bo nivoj globje toraj "1101" pa referenca na ta ID ne bo najdena v področjih.
Po tej shemi
A mi nikakor ne uspe. Napaka se vedno pojavi zaradi ID-jev področij! Shema pade pri referencah na ID-je v pojmih.
Npr.: če je ID področja = "1100" bo validacija uspela kakor bo nivoj globje toraj "1101" pa referenca na ta ID ne bo najdena v področjih.
<?xml version="1.0" encoding="utf-8"?> <glosar naziv="Naslov"> <vir url="http://vir">vir</vir> <jeziki> <jezik id="2" naziv="slovenski"/> </jeziki> <podrocja> <podrocje id="1000"> <nazivi> <naziv jezik="2">Naslov</naziv> </nazivi> <podpodrocja> <podrocje id="1100"> <nazivi> <naziv jezik="2">Drug naslov</naziv> </nazivi> <podpodrocja> <podrocje id="1101"> <nazivi> <naziv jezik="2">Prvič</naziv> </nazivi> <podpodrocja/> </podrocje> <podrocje id="1102"> <nazivi> <naziv jezik="2">Drugič</naziv> </nazivi> <podpodrocja/> </podrocje> <podrocje id="1103"> <nazivi> <naziv jezik="2">Tretjič</naziv> </nazivi> <podpodrocja/> </podrocje> <podrocje id="1104"> <nazivi> <naziv jezik="2">četrtič</naziv> </nazivi> <podpodrocja/> </podrocje> </podpodrocja> </podrocje> </podpodrocja> </podrocje> </podrocja> <pojmi> <pojem> <nazivi> <naziv jezik="2">Test1</naziv> </nazivi> <opredelitve> <opredelitev jezik="2"> <![CDATA[ostala vsebina]]> </opredelitev> </opredelitve> <podrocja> <podrocje id="1101"/> </podrocja> <povezave/> </pojem> <pojem> <nazivi> <naziv jezik="2">Test2</naziv> </nazivi> <opredelitve> <opredelitev jezik="2"> <![CDATA[ostala vsebina]]> </opredelitev> </opredelitve> <podrocja> <podrocje id="1102"/> </podrocja> <povezave/> </pojem> </pojmi> </glosar>
Po tej shemi
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="glosar"> <xs:complexType> <xs:sequence> <xs:element ref="vir" minOccurs="1" maxOccurs="unbounded"/> <xs:element ref="jeziki" minOccurs="1" maxOccurs="1"/> <xs:element ref="podrocja" minOccurs="0" maxOccurs="1"/> <xs:element ref="pojmi" minOccurs="0" maxOccurs="1"/> </xs:sequence> <xs:attribute name="naziv" use="required"/> </xs:complexType> <xs:key name="jezikID"> <xs:selector xpath="jeziki/jezik"/> <xs:field xpath="@id"/> </xs:key> <xs:keyref name="jezikIdRef" refer="jezikID"> <xs:selector xpath=".//*"/> <xs:field xpath="@jezik"/> </xs:keyref> <xs:key name="podrocjeID"> <xs:selector xpath="./podrocja/podrocje | .//podpodrocja/podrocje"/> <xs:field xpath="@id"/> </xs:key> <xs:keyref name="podrocjeIdRef" refer="podrocjeID"> <xs:selector xpath="pojmi/pojem/podrocja/podrocje"/> <xs:field xpath="@id"/> </xs:keyref> </xs:element> <xs:element name="vir"> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="url" use="required"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> <xs:element name="jeziki"> <xs:complexType> <xs:sequence> <xs:element minOccurs="1" maxOccurs="unbounded" ref="jezik"/> </xs:sequence> </xs:complexType> <xs:unique name="uniqueJezikId"> <xs:selector xpath="jezik"/> <xs:field xpath="@id"/> </xs:unique> <xs:unique name="uniqueJezikNaziv"> <xs:selector xpath="jezik"/> <xs:field xpath="@naziv"/> </xs:unique> </xs:element> <xs:element name="jezik"> <xs:complexType> <xs:attribute name="id" use="required" type="xs:integer"/> <xs:attribute name="naziv" use="required" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="pojmi"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" minOccurs="0" ref="pojem"/> </xs:sequence> </xs:complexType> </xs:element> <xs:simpleType name="nonEmptyString"> <xs:restriction base="xs:string"> <xs:minLength value="1"/> </xs:restriction> </xs:simpleType> <xs:complexType name="podrocjaPojem" > <xs:sequence> <xs:element name="podrocje" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:attribute name="id" type="nonEmptyString" use="required" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:element name="pojem"> <xs:complexType> <xs:sequence> <xs:element minOccurs="1" ref="nazivi"/> <xs:element minOccurs="0" ref="opredelitve"/> <xs:element minOccurs="0" name="podrocja" type="podrocjaPojem"/> <xs:element minOccurs="0" ref="povezave"/> </xs:sequence> </xs:complexType> <xs:unique name="uniquePodrocjeId"> <xs:selector xpath="podrocja/podrocje"/> <xs:field xpath="@id"/> </xs:unique> </xs:element> <xs:element name="opredelitve"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" maxOccurs="unbounded" ref="opredelitev"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="opredelitev"> <xs:complexType mixed="true"> <xs:attribute name="jezik" use="required" type="xs:integer"/> </xs:complexType> </xs:element> <xs:element name="povezave"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" maxOccurs="unbounded" ref="povezava"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="povezava"> <xs:complexType mixed="true"> <xs:choice minOccurs="0" maxOccurs="unbounded"> <xs:element ref="naslov"/> <xs:element ref="opis"/> <xs:element ref="url"/> </xs:choice> <xs:attribute name="jezik" use="required" type="xs:integer"/> </xs:complexType> </xs:element> <xs:element name="naslov" type="xs:string"/> <xs:element name="opis" type="xs:string"/> <xs:element name="url" type="xs:anyURI"/> <xs:element name="podrocja"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" maxOccurs="unbounded" ref="podrocje"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="nazivi"> <xs:complexType> <xs:sequence> <xs:element minOccurs="1" maxOccurs="unbounded" ref="naziv"/> </xs:sequence> </xs:complexType> <xs:unique name="uniqueNazivJezik"> <xs:selector xpath="naziv"/> <xs:field xpath="@jezik"/> </xs:unique> </xs:element> <xs:element name="naziv"> <xs:complexType mixed="true"> <xs:attribute name="jezik" use="required" type="xs:integer"/> </xs:complexType> </xs:element> <xs:element name="podrocje"> <xs:complexType> <xs:choice minOccurs="1" maxOccurs="unbounded"> <xs:element ref="nazivi"/> <xs:element ref="podpodrocja"/> </xs:choice> <xs:attribute name="id" use="required" type="nonEmptyString" /> </xs:complexType> </xs:element> <xs:element name="podpodrocja"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" maxOccurs="unbounded" ref="podrocje"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Web services - Neveljavni karakterji v XMLOddelek: Programiranje | 4134 (3246) | boolsheat |
» | [C++] Pridobitev podatkov iz XMLOddelek: Programiranje | 874 (634) | keworkian |
» | XML viewerOddelek: Programska oprema | 1005 (917) | norcuron |
» | PHP XML->attributesOddelek: Programiranje | 1391 (1327) | keworkian |
» | [XML] xslt: sortOddelek: Programiranje | 1522 (1301) | house |