XML Schema

XML Schema je noviji način određivanja pravila strukturiranja XML dokumenta. Format se kreira prema pravilima XML jezika. Način određivanja strukture sličan je načinu izgradnje baze podataka. Korištenjem XML Scheme moguće je na vrlo detaljnom nivou odrediti opis sadržaja odgovarajućeg elementa:

  • kardinalnost
  • tip podatka
  • format podatka (npr. može se odrediti format telefonskog broja koji se sastoji od pozivnog broja države, mjesta i samog telefonskog broja).

XML schemu je izvorno kreirao Microsoft, ali je od 2001. godine to W3C preporuka.

Sintaksna pravila

Na početku XML Schema dokumenta navodi se identifikator koji povezuje dokument s pravilima formiranja, kao i određeni XML prostor imena. Nakon toga slijedi dio "annotation" u kojem se opisuje namjena dokumenta. Korijenski <schema> element mora se navesti u svakom XML Schema dokumentu. Taj element, kao i svi drugi može imati odgovarajuće atribute.

Tipovi podataka

Jednostavni tipovi podataka ugrađeni su u XML Schema specifikaciju. Jednostavni tipovi podataka mogu se proširivati specifičnim skupovima, ovisno o određenoj namjeni XML dokumenta koji se opisuje. Npr. kod XML dokumenata koji opisuju strukturu baze podataka postoje jednostavni tipovi podataka identični svim tipovima podataka koje određena baza može imati. Prednost korištenje jednostavnih tipova podataka je u tome što sve kontrole i provjere ispravnosti podataka vrši sam XML program i nije potrebno pisati posebne kontrolne procedure. Neki od jednostavnih tipova podataka su:

  • numerički tipovi podataka ("byte", "float", "long")
  • tipovi podataka za opis datuma vremena i trajanja ("time", "date", "timeinstant", "timeduration")
  • logički tip podataka ("boolean" – može imati vrijednost "true" ili "false")
  • tip podataka za unos binarnih brojeva ("binary")
  • oznaka jezika koja se koristi ("language" – npr. "en-US")
  • oznaka http://www.w3c.org/")

Tipovi elemenata

U XML Schemi mogu se koristiti jednostavni i složeni tipovi elemenata.

Jednostavni tipovi elemenata

Jednostavni tipovi elemenata sadrže samo tekst i ne smiju unutar sebe sadržavati druge elemente i atribute (osim name i type atributa koji određuju naziv i tip određenog elementa).

<xs:element name="prezime" type="xs:string"/>
<xs:element name="ime" type="xs:string"/>

Jednostavni elementi mogu imati inicijalnu (default) ili fiksno zadanu (fixed) vrijednost atributa. Ako u XML dokumentu nije zadana neka druga vrijednost atributa primjenjuje se inicijalna vrijednost. Fiksno zadana vrijednost ima kontrolni karakter i vrijednost u XML dokumentu ne smije biti različita od nje.

Složeni tipovi elemenata

Složeni tipovi elemenata su korisnički definirani elementom "complexType". Definira ih korisnik i njihovu kontrolu vrši sam. Postoje 4 različite vrste složenih elemenata

  • prazni elementi ne smiju imati sadržaj već samo atribute. Prazni elementi mogu imati samo početnu oznaku.
<artikal sifra="1234"/>
  • elementi koji sadrže druge elemente sadrže samo druge elemente koji sadrže text. Osim drugih elemenata ne smiju sadržavati unutar sebe text.
<osoba>
        <ime>Pero</ime>
        <prezime>Perić</prezime>
</osoba>
  • elementi koji sadrže samo tekst sadrže samo tekst i stributem, a ne smiju unutar sebe imati sadržane druge elemente.
<racunalo type="rucno">Palm</racunalo>
  • elementi koji sadrže i tekst i druge elemente unutar sebe mogu imatis adržan i tekst i druge elemente.
<opis>
        Osoba je rođena <datum lang="croatian">01.01.1989.</datum> 
</opis>

Atributi elemenata

Atributi detaljnije opisuju elemente i opcionalni su te se ne moraju navoditi. Vrijednost atributa navodi se pod znakovima navodnika. Atribut "name" opisuje naziv atributa ili elementa, a atribut "type" njegov dozvoljeni tip. Tip podatka može biti jednostavan ili složen.

Kardinalnost elemenata

Kardinalnost podataka definirana je atributima "minOccurs" i "maxOccurs". Minimalni broj pojavljivanja određenog elementa postavljen je u osnovi na "1". Ako se želi navesti neki drugi broj, npr. da se element ne mora niti jednom pojaviti, potrebno je u vrijednost tog atributa upisati "0". Atribut "maxOccurs" navodi maksimalni broj puta što se može pojaviti vrijednost određenog elementa. Ako se neki element može pojaviti neograničen broj puta kao vrijednost se treba postaviti "unbounded". Ako je broj puta što se element smije pojaviti fiksiran, potrebno je kao vrijednost atributa navesti taj broj.

Ograničenja elemenata

Odgovarajućim elementima i atributima mogu se precizno odrediti odgovarajuća ograničenja na vrijednost XML elemenata. Element <restriction> koristi se za ograničavanje vrijednosti određenog elementa na određene vrijednosti. Primjer ograničenja podatka starosti koje mora upasti u interval između 0 i 110

<xs:element name="starost">
<xs:simpleType>
        <xs:restriction base="xs:integer">
                <xs:minInclusive value="0"/>
                <xs:maxInclusive value="110"/>
        </xs:restriction>
</xs:simpleType>
</xs:element> 

Primjer ograničenja podatka vrsta automobila koji mora biti jedan od ponuđenih tipova:

<xs:element name="automobil">
<xs:simpleType>
        <xs:restriction base="xs:string">
                <xs:enumeration value="Golf"/>
                <xs:enumeration value="Fiat"/>
        </xs:restriction>
</xs:simpleType>
</xs:element> 

Primjer ograničenja na niz slova engleske abecede:

<xs:element name="slovo">
<xs:simpleType>
        <xs:restriction base="xs:string">
                <xs:pattern value="[a-z]"/>
        </xs:restriction>
</xs:simpleType>
</xs:element> 

Primjer ograničenja duljine podatka:

<xs:element name="jmbg">
<xs:simpleType>
        <xs:restriction base="xs:string">
                <xs:length value="13"/>
        </xs:restriction>
</xs:simpleType>
</xs:element> 

Ostala svojstva elemenata

Osim kardinalnosti i ograničenja podataka postoji niz predefiniranih svojstava koja se mogu koristiti prilikom opisa svakog elementa. Ta predefinirana svojstva nazivaju se "facets". Neki od najčešće korištenih su precision, scale, encoding, whiteSpace, totalDigits fractionDigits i pattern.

Other Languages
български: XML Schema
català: XML Schema
čeština: XML Schema
Deutsch: XML Schema
Esperanto: XML-skemo
español: XML Schema
suomi: XML-skeema
français: XML Schema
עברית: XSD
magyar: XSD
interlingua: XML Schema
italiano: XML Schema
日本語: XML Schema
Nederlands: XML Schema
norsk nynorsk: XML-skjema
norsk: XML Schema
polski: XML Schema
português: XML Schema
русский: XML Schema (W3C)
svenska: XML-schema
Türkçe: XSD
українська: XML Schema (W3C)
中文: XML Schema