1 / 22

XML Schema

Aplikativni softver. Fakultet za poslovnu informatiku Univerzitet Singidunum www.fpi.singidunum.ac.yu. XML Schema. 2007/2008. Violeta Tomašević Literatura E.Rusty Harold, W.Scott Means, XML za programere , prevod Mikro knjiga, 2006. Šta je XML Schema?.

esben
Download Presentation

XML Schema

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Aplikativni softver Fakultet za poslovnu informatiku Univerzitet Singidunum www.fpi.singidunum.ac.yu XML Schema 2007/2008. Violeta Tomašević Literatura E.Rusty Harold, W.Scott Means, XML za programere, prevod Mikro knjiga, 2006.

  2. XML Schema Šta je XML Schema? • XML Schemapredstavlja XML dokument koji sadrži formalan opis onoga od čega se sastoji validan XML dokument. XML dokument opisan šemom naziva se primerak dokumenta (instancedocument), i ako zadovoljava sva ograničenja zadata šemom, proglašava se validnim u odnosu na šemu. • XML Schema dokumenti imaju ekstenziju .xsd jer se pišu u XSD (XML Schema Definition) jeziku. • XML Schema: • omogućava validaciju XML dokumenta prema detaljnoj specifikaciji • podržava sintaksu XML-a • omogućava tipizaciju podataka i prikaz ograničenja • koristi prostor imena (namespace) • prezentuje veze koje postoje između elemenata

  3. XML Schema DTD i XML Schema Primer: razmotrimo element quantity za koji aplikacija smatra da predstavlja pozitivan ceo broj. DTD deklaracija elementa quantity <!ELEMENT quantity (#PCDATA) > Deklaracija elementa quantity u XML Schema <xsd:schemaxmlns:xsd='http://www.w3.org/2001/XMLSchema'> <xsd:element name='quantity' type=“xsd:nonNegativeInteger"/> <xsd:/schema> DTD deklaracija će smatrati da je sledeći XML kod validan: <quantity>4</quantity> <quantity>-2</quantity> <quantity>lots</quantity> XML Schema deklaracija će smatrati da je samo prvi primer validan.

  4. XML Schema Pridruživanje šeme XML dokumentu Šema se primerku dokumenta može pridružiti na jedan od sledećih načina: • korišćenjem atributa xsi:schemaLocation nekog elementa koji sadrži spisak prostora imena upotrebljenih unutar tog elementa i spisak URL adresa šema pomoću kojih treba proveriti validnost elemenata i atributa u tim prostorima imena • korišćenjem atributa xsi:noNamespaceSchemaLocation koji sadrži URL adresu šeme koju treba upotrebiti za proveru validnosti elemenata koji ne pripadaju nijednom prostoru imena • izdavanjem komande analizatoru validnosti da proveri validnost datog dokumenta u odnosu na eksplicitno zadatu šemu i da zanemari sva uputstva te vrste u samom dokumentu

  5. XML Schema Struktura dokumenta • Prva linija u XML Schema dokumentu je XML deklaracija (jer to u suštini predstavlja XML fajl). • U drugoj liniji se deklariše <xs:schema> kao osnovni (root) element u dokumentu. Ovaj element sadrži deklaracije svih elemenata i atributa koji se mogu pojaviti u validnom primerku dokumenta. • Uobičajeno je da se u deklaraciji osnovnog elementa koristi prefiks xs (mada može i neki drugi), koji je pridružen prostoru imena XML Schema • xmlns:xs=http://www.w3.org/2001/XMLSchema • XML elementi od kojih se sastoji XML šema moraju pripadati navedenom prostoru imena.

  6. XML Schema Izrada šeme (1) Primer: napraviti jednostavnu šemu koja predstavlja uobičajenu stavku u adresaru. XML dokument: stavka_adresara.xml <?xml version=“1.0”?> <punoIme>Petar Milic</punoIme> XML Schema dokument: sema_stavke_adresara.xsd <?xml version=“1.0”?> <xs:schemaxmlns:xs='http://www.w3.org/2001/XMLSchema'> <xs:element name=‘punoIme' type=“xs:string"/> <xs:/schema> Pridruživanje šeme XML dokumentu: stavka_adresara.xml sa referencom šeme <?xml version=“1.0”?> <punoIme xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xsi:noNamespaceSchemaLocation=“sema_stavke_adresara.xsd“> Petar Milic </punoIme>

  7. XML Schema Izrada šeme (2) Za proveru validnosti definisanog XML dokumenta u odnosu na njegovu šemu, potreban je XML analizator koji podržava šeme. Na primer, Xerces analizator napisan na Javi ima program dom.Writer koji se pokreće sa komandne linije. Ovaj analizator se u datom primeru može iskoristiti za proveru validnosti kreiranog XML dokumenta na sledeći način: %java dom.Writer –v –s stavka_adresara.xml Pošto je navedeni dokument validan, dom.Writer će preslikati ulazni dokument na standardan izlaz. Za nevalidan dokument, analizator bi generisao poruku o grešci. Na primer: <?xml version=“1.0”?> <punoIme xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xsi:noNamespaceSchemaLocation=“sema_stavke_adresara.xsd“> Petar <b> Milic </b> </punoIme> Rezultat provere validnosti: [Error] stavka_adresara.xml:4:13: Element type “b” must be declared. [Error] stavka_adresara.xml:4:31: Datatype error: In element ‘punoIme’ : Can not have element children within a simple type content.

  8. XML Schema Deklaracije elemenata XML dokumenti se prvenstveno sastoje od ugnježdenih elemenata, pa je jedna od najčešćih deklaracija u tipičnoj šemi: <xs:element name=“ime_elementa” type=“xs:tip_elementa”> Šeme podržavaju dva tipa sadržaja elementa: jednostavan (prost) i složen. Jednostavan sadržaj se sastoji od čistog teksta koji ne obuhvata ugnježdene elemente. U tabeli su navedeni najčešće korišćeni prosti tipovi definisani u W3C specifikaciji: Element deklarisan da je prostog tipa ne može imati atribute.

  9. XML Schema Atributi • Atributi uvek moraju biti deklarisani kao prosti tipovi. • Elementi koji sadrže atribute su složenog tipa. • Atributi se deklarišu pomoću elementa: • <xs:attribute name=“ime_atributa” type=“xs:tip_atributa”> • Primer: • <xs:attribute name=”id” type=“xs:integer”/> • <proizvod id="135">stolica</proizvod> • Atributi mogu imati podrazumevanu ili fiksnu vrednost. • Primer: • <xs:attribute name=”id” type=“xs:integer” use=“optional”/> • <xs:attribute name=”id” type=“xs:integer” use=“required”/>

  10. XML Schema Fasete (1) • Fasete (facets) predstavljaju mehanizam kontrole mogućih vrednosti prostih tipova podataka. Fasete se na proste tipove primenjuju korišćenjem elementa • xs:restriction • Svaka faseta se izražava kao određeni element unutar bloka ograničenja, a više faseta se može kombinovati da bi se dodatno ograničile moguće vrednosti prostog tipa. • Šeme koriste sledeće vrste faseta: • length (ili minLength i maxLenght) – određuju dužinu podataka • pattern – zadaje sofisticirana ograničenja formata stringa • enumeration – ograničavaju moguće vrednosti na članove unapred definisane liste • whiteSpace – određuje način na koji se obrađuju beline unutar podataka • maxInclusive i maxExclusive – određuju najveće vrednosti stavki • minInclusive i minExclusive – određuju najmanje vrednosti stavki • totalDigits – ograničava ukupan broj cifara u decimalnom broju • fractionDigits – zadaje obavezan broj cifara u broju desno od decimalne tačke

  11. XML Schema Fasete (2) Numeričke fasete Numeričke fasete definišu najmanje (xs:minInclusive i xs:minExclusive) i najveće (xs:maxInclusive i xs:maxExclusive) vrednosti podataka. Razlika između uključive i isključive varijante faseta je u tome da li se data vrednost smatra delom skupa dozvoljenih vrednosti ili ne. Primer1: Primer2: <xs:element name=“starost"><xs:maxInclusive value="0"/> <xs:simpleType> <xs:maxExclusive value=“1"/> <xs:restriction base=“xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="100"/> </xs:restriction>Ovo su ekvivalentne deklaracije. </xs:simpleType> </xs:element>

  12. XML Schema Fasete (3) Faseta xs:enumeration Ova faseta ograničava moguće vrednosti elemenata i atributa na članove unapred definisane liste. Ukoliko element ili atribut u bilo kom primerku dokumenta bude sadržao vrednost koje nema u listi nabrojanih članova, generisaće se greška. Primer: <xs:element name="auto"> <xs:simpleType> <xs:restriction base=“xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType> </xs:element>

  13. XML Schema Fasete (4) Faseta xs:pattern Fasetom uzorka se mogu nametnutni vrlo raznovrsna ograničenja u pogledu formata stringa. Ova faseta poredi datu vrednost sa određenim regularnim izrazom i ukoliko mu vrednost ne odgovara, generiše se greška validnosti. Primer1: <xs:simpleType name=“bso">Definiše da broj socijalnog osiguranja <xs:restriction base=“xs:string"> mora sadržati tri cifre, zatim crticu, dve <xs:pattern value=“\d\d\d-\d\d-\d\d\d\d"/> cifre, novu crticu i još četiri cifre. </xs:restriction> </xs:simpleType> Primer2: <xs:element name=“pol"> <xs:simpleType> <xs:restriction base=“xs:string"> Definiše da pol može biti muški ili ženski.<xs:pattern value=“muski|zenski”> </xs:restriction> </xs:simpleType> </xs:element>

  14. XML Schema Fasete (5) Fasete za ograničavanje dužine Faseta xs:lengthnameće određenoj vrednosti tačno zadatu dužinu. Fasete xs:minLengthi xs:maxLengthzadaju opseg dužina (najmanju i najveću) za vrednosti datog tipa. Primer1: Primer2: <xs:element name=“password"><xs:element name=“password"> <xs:simleType><xs:simleType> <xs:restriction base=“xs:string"><xs:restriction base=“xs:string“> <xs:length value=“8“/> <xs:minLength value=“5“/> </xs:restriction><xs:maxLength value=“8“/> </xs:simpleType></xs:restriction> </xs:element></xs:simpleType> </xs:element>

  15. XML Schema Složeni tipovi(1) Šema pridružuje tip svakom elementu i atributu koji deklariše. Elementi složenih tipova mogu imati atribute i sadržati ugnježdene elemente. Samo elementi mogu biti složenog tipa. Tipovi atributa su uvek prosti. Složeni tip se deklariše pomoću elementa xs:complexType koji je ugrađen neposredno u deklaraciju elementa. XML kod <zaposleni> <ime>Pera</ime> <prezime>Miric<prezme> </zaposleni> XML Schema kod <xs:element name=“zaposleni”> <xs:complexType> <xs:sequence> <xs:element name=“ime” type=“xs:string”/> <xs:element name=“prezime” type=“xs:string”/> </xs:sequence> </xs:complexType> </xs:element>

  16. XML Schema Složeni tipovi(2) Element može imati referencu na ime složenog tipa. <xs:element name=“zaposleni” type=“osobainfo”/> <xs:complexType name=“osobainfo”/> <xs:sequence> <xs:element name=“ime” type=“xs:string”/> <xs:element name=“prezime” type=“xs:string”/> </xs:sequence> </xs:complexType> Na ovaj način se može definisati više elemenata istog tipa. <xs:element name=“zaposleni” type=“osobainfo”/> <xs:element name=“student” type=“osobainfo”/> <xs:element name=“clan” type=“osobainfo”/> <xs:complexType name=“osobainfo”/> <xs:sequence> <xs:element name=“ime” type=“xs:string”/> <xs:element name=“prezime” type=“xs:string”/> </xs:sequence> </xs:complexType>

  17. XML Schema Složeni tipovi(3) Složeni element se može bazirati na nekom već postojećem složenom tipu kome se mogu dodati novi elementi. <xs:element name=“zaposleni” type=“dopunjeninfo”/> <xs:complexType name=“osobainfo”/> <xs:sequence> <xs:element name=“ime” type=“xs:string”/> <xs:element name=“prezime” type=“xs:string”/> </xs:sequence> </xs:complexType> <xs:complexType name=“dopunjeninfo”/> <xs:complexContent> <xs:extension base=“osobainfo”> <xs:sequence> <xs:element name=“ulica” type=“xs:string”/> <xs:element name=“grad” type=“xs:string”/> <xs:element name=“drzava” type=“xs:string”/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType>

  18. XML Schema Ograničenja broja pojavljivanja U XML Schema postoji mogućnost eksplicitnog zadavanja najmanjeg i najvećeg broja pojavljivanja određenog elementa na određenom mestu u dokumentu. Za ograničavanje broja pojavljivanja koriste se sledeći atributi elementa xs:element: minOccurs – definiše minimalan broj pojavljivanja elementa maxOccurs – definiše maksimalan broj pojavljivanja elementa Primer: <xs:element name=“osoba”> <xs:complexType> <xs:sequence> <xs:element name=“ime” type=“xs:string”/> <xs:element name=“ime_deteta” type=“xs:string” minOccurs=“0” maxOccurs=“10”/> </xs:sequence> </xs:complexType> </xs:element>

  19. XML Schema Mešoviti sadržaj elemenata Mešoviti sadržaj imaju XML elementi koji sadrže znakovne podatke (stringove, tekst) i neograničen broj elemenata. XML Schema podržava ovu funkcionalnost, i još omogućava određivanje broja i redosleda po kome se elementi pojavljuju unutar znakovnih podataka. Atribut mixed elementa tipa complexType određuje da li se znakovni podaci smeju pojaviti unutar tela elementa. <pismo> Dragi<ime>Pero</ime> Vasa narudzbina <narid>1432</narid> ce stici<nardatum>2007-06-18</nardatum> </pismo> XML kod <xs:element name=“pismo“ type=“pismoTip“/> <xs:complexType name=“pismoTip“ mixed=“true“> <xs:sequence> <xs:element name=“ime“ type=“xs:string“/> <xs:element name=“narid“ type=“xs:positiveInteger“/> <xs:element name=“nardatum“ type=“xs:date“/> </xs:sequence> </xs:complexType> XML Schema kod

  20. XML Schema Zadavanje redosleda elemenata (1) • Za određivanje redosleda u kome se elementi mogu pojavljivati, XML šeme nude sledeće mogućnosti: • xs:sequence • xs:choice • xs:all • Ove mogućnosti se mogu ugnježdavati u slučaju izgradnje složenijih struktura elemenata. Primer: <xs:element name=“pismo“> <xs:complexType mixed=“true“> <xs:sequence> <xs:element name=“pozdrav“/> <xs:element name=“telo“/> <xs:element name=“zavrsetak“/> </xs:sequence> </xs:complexType> </xs:element> • xs:sequence • Ovaj element zahteva da se elementi • koje sadrži moraju pojavljivati tačno • onim redosledom kojim su navedeni • u njegovom spisku. • Pismo mora sadržati element pozdrav, • element telo i element završetak, • tim redom.

  21. XML Schema Zadavanje redosleda elemenata (2) xs:choice Ovaj element omogućava pojavljivanje samo jednog elementa iz niza mogućnosti. Pozdrav mora da sadrži samo jednu iz liste dozvoljenih pozdravnih reči (zdravo, ćao ili draga). Primer: <xs:element name=“pozdrav“> <xs:complexType mixed=“true“> <xs:choice> <xs:element name=“zdravo“/> <xs:element name=“cao“/> <xs:element name=“draga“/> </xs:choice> </xs:complexType> </xs:element>

  22. XML Schema Zadavanje redosleda elemenata (3) xs:all Ovaj element zahteva da se svaki od elemenata mora pojaviti jednom, pri čemu redosled njihovog pojavljivanja nije važan. Redosled pojavljivanja elemenata stavka, cena i datumPrispeca nije bitan, a sprečeno je i pojavljivanje više referenci iste vrednosti. XML Schema kod: cirpismo.xsd <xs:element name=“telo“> <xs:complexType mixed=“true“> <xs:all> <xs:element name=“stavka“/> <xs:element name=“datumPrispeca“/> <xs:element name=“cena“/> </xs:all> </xs:complexType> </xs:element> XML dokument: cirpismo.xlm <pismo xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance” xsi:noNamespaceSchemaLocation=“cirpismo.xsd“> <pozdrav> <zdravo/>Bobo!</pozdrav> <telo> Hvala Vam sto se narucili <stavka/> (<cena/>). Trebalo bi da stigne do <datumPrispeca/> </telo> <zavrsetak/> </pismo>

More Related