» »

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.

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

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Web services - Neveljavni karakterji v XML

Oddelek: Programiranje
314134 (3246) boolsheat
»

[C++] Pridobitev podatkov iz XML

Oddelek: Programiranje
5874 (634) keworkian
»

XML viewer

Oddelek: Programska oprema
81005 (917) norcuron
»

PHP XML->attributes

Oddelek: Programiranje
51391 (1327) keworkian
»

[XML] xslt: sort

Oddelek: Programiranje
51522 (1301) house

Več podobnih tem