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