XML – Definisanje kompleksnih elemenata

Nakon definisanja prostije XML šeme, koja se sastoji od više prostih i kompleksnih elemenata predstavićemo vam i primer XML dokumenta koji je nastao iz definicije koju smo napravili u prethodnom prilogu:


?xml version="1.0"?>
<biblioteka>

<zaglavlje>
<dugacki_naslov>Lovac na jelene</dugacki_naslov>
<datum>1841</datum>
<autor>James Fenimore Cooper</autor>
<kratak_opis>avanturisticki roman</kratak_opis>
<kljucne_reci>lovac jelen Fenimore</kljucne_reci>
</zaglavlje>

<sekcija1>
<naslov>Prica o koznoj carapi</naslov>
<link>1</link>
</sekcija1>

<sekcija2>
<naslov>Dva trapera</naslov>
<link>84</link>
</sekcija2>

</biblioteka>


Kao što možete videti, kompleksni tip u XML šemi predstavlja XML element koji unutar sebe može da sadrži druge XML elemente. Ako bi napravili analogiju sa HTML-om, primer kompleksnog tipa elementa bio bi <BODY> tag. Kao što znate, <BODY> element u sebi može da ima mnoštvo drugih različitih elemenata, kao što su <p>, <b>, ili <ul>. Prvi kompleksni tip sa kojim se srećemo u našem „biblioteka“ primeru je tip „Knjiga“:


<xsd:complexType name="Knjiga">

Potom definišemo sve elemente i atribute koji pripadaju ovom kompleksnom tipu. Pošto je ovaj tip primarni element „biblioteke“, on sadrži sve ostale različite podelemente:


<xsd:complexType name="Knjiga">
<xsd:sequence>
<xsd:element name="zaglavlje" type="TipZaglavlje"/>
<xsd:element name="sekcija1" type="TipSekcija"/>
<xsd:element name="sekcija2" type="TipSekcija"/>

</xsd:sequence>
</xsd:complexType>

Iz ovog listinga možemo da zaključimo da se svaki osnovni element sastoji iz zaglavlja i više sekcija (u našem primeru samo dve). Pored toga, možemo da vidimo i jasni redosled ovih podelemenata:
  1. Zaglavlje
  2. Sekcija1
  3. Sekcija2
Ova deklaracija je kompleksni tip koji sadrži još dva kompleksna tipa:
  • TipZaglavlje
  • TipSekcija
Takođe, možete kreirati i kompleksne tipove koji sadrže samo elemente jednostavne definicije. Na primer, tip „TipZaglavlje“ sadrži jednostavan element „autor“ koji sadrži tekstualne podatke, i recimo tip „datum“ koji sadrži datumski podatak:


<xsd:element name="datum" type="xsd:date"/>
<xsd:element name="autor" type="xsd:string"/>

Zanimljivi su i elementi „naslov“ i „link“, kod kojih smo odredili i broj mogućih ponavljanja u složenom tipu. Pa tako element „naslov“ mora da se u složenom elementu pojavi najmanje jedanput, a pojavljivanje elementa „link“ je opcionalno (zato mu je atribut „minOccurs“ postavljen na nulu). Pored minimalnog broja ponavljanja, mogli smo odrediti i maksimalni broj mogućih ponavljanja, atributom „maxOccurs“.


<xsd:element name="naslov" type="xsd:string" minOccurs="1"/>
<xsd:element name="link" type="xsd:string" minOccurs="0"/>

Pratite Krstaricu na www.krstarica.com