240 likes | 409 Views
Technol ógie XML. XSD ( XML Schema Definition) September , 2011. XSD ako model dokumentu. Dokáže definovať rovnaké štruktúry XML dokumentov ako DTD Navyše: podpora kardinalít podpora dátových typov podpora menných priestorov rozšíriteľnosť XML syntax
E N D
Technológie XML XSD (XMLSchema Definition) September, 2011 Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach
XSD ako model dokumentu • Dokáže definovať rovnaké štruktúry XML dokumentov ako DTD • Navyše: • podpora kardinalít • podpora dátových typov • podpora menných priestorov • rozšíriteľnosť • XML syntax • Vhodný prostriedok pre definovanie modelu aj pre dátové aplikácie Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach
Stav XSD • Spravovaný W3C (http://www.w3.org) • XML Schema (štandard v 2.edícii) • W3C working draft – september 2000 • W3C recommendation – máj 2001 • W3C recommendation – 2.edícia – október 2004 • XML Schema Definition Language 1.1 (návrh štandardu) • W3C working draft – december 2009 • W3C candidate recommendation – júl 2011 Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach
Dátové typy • Štandard delený na dve hlavné časti, jedna z nich je venovaná dátovým typom • Rozlišované typy dát: • atomické: reťazce, numerické hodnoty, dátumy, URI, binárne dáta, logické hodnoty • zložené: zoznamy a unióny • Je možné používať dátové typy: • základné -458.934 (všeobecné číslo) • odvodené (preddefinované štandardom) 2011 (kladné celé číslo) • obmedzené (definované užívateľom) 25 (vek) Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach
Reťazce • Základný typ: xs:string • obsahuje zobraziteľné znaky + CR, LF, TAB • Príklady odvodených typov • xs:normalizedString – bez CR, LF, TAB • xs:token – bez CR, LF, TAB, úvodné/koncové medzery, viacnásobné medzery • Príklady obmedzení • enumerácia "jano" "fero" "peter" (povolené reťazce) • dĺžka, min a max dĺžka "04200"(práve päť znakov) • vzor"Jano"(veľké a potom malé písmená) Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach
Numerické hodnoty • Základný typ: xs:decimal • bežne písané číslo (číslice, bodka, plus, mínus) • Príklady odvodených typov • xs:integer – bez desatinnej časti • xs:nonNegativeInteger – nezáporné celé čísla • Príklady obmedzení • enumerácia 1 2 3 4 5 6 (povolené hodnoty) • {max|min}{Inclusive|Exclusive}4.01(min 4 exclusive) • vzor200(nula nesmie byť na prvej pozícii) Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach
Tvorba obmedzených typov <xs:simpleType name="meno-typu"> <xs:restriction base="dátový-typ"> … obmedzenia </xs:restriction> </xs:simpleType> • Príklady obmedzení • <xs:enumeration value="jano"/> <xs:enumeration value="fero"/> • <xs:minLength value="5"/> • <xs:pattern value="[A-Z][a-z]*"/> • <xs:maxInclusive value="4"/> voliteľné pomenovanie typu ak žiadne obmedzenie, tak nový typ rovnaký ako pôvodný Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach
Dostupné obmedzenia • enumeration – zoznam akceptovateľných hodnôt • fractionDigits – maximálny počet desatinných miest • length – presný počet znakov alebo prvkov zoznamu • maxExclusive – horná hranica (<) • maxInclusive – horná hranica (<=) • maxlength– maximálny počet znakov alebo prvkov zoznamu • minExclusive – dolná hranica (>) • minInclusive – dolná hranica (>=) • minLength – minimálny počet znakov alebo prvkov zoznamu • pattern – presná sekvencia akceptovateľných znakov • totalDigits – presný počet povolených číslic • whiteSpace – spracovanie bielych znakov Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach
Zoznamy <xs:simpleType name="meno-zoznamového-typu"> <xs:listitemType="dátový-typ"/> </xs:simpleType> • Zoznam ako typ • Odvodený typ (prvky zoznamu sú určitého typu) • Možno definovať obmedzené zoznamy • Príklady obmedzení • dĺžka, min a max dĺžka 2011 12 31(práve triprvky) • vzor"meno""Jano"(prvý prvok pevne daný) Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach
Unióny (zjednotenia typov) <xs:simpleType name="meno-uniónového-typu"> <xs:union> <xs:simpleType> … prvý zlučovaný typ </xs:simpleType> <xs:simpleType> … druhý zlučovaný typ </xs:simpleType> …ďalšie zlučované typy </xs:union> </xs:simpleType> Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach
Dokument pre značkovanie ... Objavovanie znalostí z/s 6 P P-2 CN-1 PP-1 Technológie XML kz 6 PV P-1 CL-2 Cudzí jazyk z/s 0 V S-2 ... Dĺžkovo obmedzený zoznam Enumeračne obmedzený xs:string xs:string Enumeračne obmedzený xs:string Unión 0 a xs:positiveInteger alebo enumeračne obmedzený xs:integer Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach
Počet kreditov - typ ... 6 6 0 xs:nonNegativeInteger <xs:simpleTypename="pk-type"> <xs:union> <xs:simpleType> <xs:restriction base="xs:positiveInteger"/> </xs:simpleType> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:enumeration value="0"/> </xs:restriction> </xs:simpleType> </xs:union> </xs:simpleType> <xs:simpleTypename="pk-type"> <xs:restriction base="xs:integer"> <xs:enumeration value="0"/> <xs:enumeration value="6"/> </xs:restriction> </xs:simpleType> Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach
Rozsah predmetu - typ ... P-2 CN-1 PP-1 P-1 CL-2 S-2 ... <xs:simpleTypename="rp-forma"> <xs:restriction base="xs:string"> <xs:pattern value="[A-Z][A-Z]*-[1234]"/> </xs:restriction> </xs:simpleType> <xs:simpleTypename="rp-zozn"> <xs:listitemType="rp-forma"/> </xs:simpleType> <xs:simpleTypename="rp-type"> <xs:restriction base="rp-zozn"> <xs:maxLength value="4"/> </xs:restriction> </xs:simpleType> Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach
Definícia elementov • <xs:element name="…" type="štandardný-typ"/> • <xs:element name ="…"> <xs:definícia-typu> … </xs:definícia-typu> </xs:element> • <xs:element name ="…" type="môj-typ"/> <xs:definicia-typu name="môj-typ"> … </xs:definícia-typu> • <xs:element ref="…"/> štandardný typ novo definovaný typ inde definovaný typ inde definovanýelement Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach
Jednoduché typy • Element (obsahuje iba text) • <xs:element name="názov-elementu" type="typ-obsahu"/> • Atribút • <xs:attribute name="názov-atribútu" type="typ-obsahu"/> • Typom obsahu môže byť základný, odvodený alebo ohraničený dátový typ • Nepovinné atribúty • E+A: default – prednastavená hodnota • E+A: fixed – povinná (nemenná) hodnota elementu • A: use – voliteľnosť použitia (optional alebo required) Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach
Element obsahujúci vnorené elementy <xs:element name="názov-elementu"> <xs:complexType> <xs:indikátor-výberu> <xs:element name="..." type="…"indikátor-výskytu/> <xs:element name="..." indikátor-výskytu> … typ elementu </xs:element> <xs:element ref="…"indikátor-výskytu/> … ďalšie elementy </xs:indikátor-výberu> </xs:complexType> </xs:element> Element definovaný interne Element definovaný interne Element definovaný externe Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach
Indikátory • Indikátory výberu • all – povolené ľubovoľné usporiadanie • sequence – vyžadované presne stanovené poradie • choice – výber jednej z možností • Indikátory výskytu • minOccurs – minimálny počet opakovaní elementu • ak neuvedené, tak default je 1 • pre ‘all’ indikátor môže byť iba 0 alebo 1 • maxOccurs – maximálny počet opakovaní elementu • ak neuvedené, tak default je 1 • pre ‘all’ indikátor môže byť iba 1 • hodnota ‘unbounded’ znamená neohraničené opakovanie Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach
Element obsahujúci elementy a atribúty <xs:element name="názov-elementu"> <xs:complexType> <xs:indikátor-výberu> ... definícia elementov </xs:indikátor-výberu> <xs:attribute name="..." type="..." nepovinné-atribúty> <xs:attributeref="..." nepovinné-atribúty> .... ďalšie atribúty </xs:complexType> </xs:element> Atribút definovaný interne Atribút definovaný externe Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach
Element obsahujúci text + atribúty <xs:element name="názov-elementu"> <xs:complexType> <xs:simpleContent> <xs:extensionbase="typ-textu"/> <xs:attribute name="..." type="..." nepovinné-atribúty> … </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> Obsah elementu (nejakého typu) je rozšírený o atribúty Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach
Element obsahujúci atribúty <xs:element name="názov-elementu"> <xs:complexType> <xs:attribute name="..." type="..." nepovinné-atribúty> … </xs:complexType> </xs:element> Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach
Značkovaný dokument <zoznam> ... <predmet> <meno-predmetu>Technológie XML</meno-predmetu> <ukoncenie>kz</ukoncenie> <kredity>6</kredity> <volitelnost>PV</volitelnost> <rozsah>P-1 CL-2</rozsah> </predmet> … </zoznam> Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach
XSD predmetov <xs:element name="zoznam"> <xs:complexType> <xs:sequence> <xs:element name="predmet" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="meno-predmetu" type="xs:string"/> <xs:element name=“ukoncenie" type="uk-type"/> <xs:element name="kredity" type="pk-type"/> <xs:element name=“volitelnost" type="vol-type"/> <xs:element name=“rozsah" type="rp-type"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach
XSD a menné priestory <?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.tuke.sk/ns/rozvrh" xmlns ="http://www.tuke.sk/ns/rozvrh" elementFormDefault="qualified" attributeFormDefault="qualified"> … definícia elementov a atribútov </xs:schema> Xml súbor má použiť tento menný priestor (ak použije prefixový tvar NS) Xml súbor má použiť uvedený tvar pre elementy Xml súbor má použiť tento menný priestor (ak použije implicitný tvar NS) Xml súbor má použiť uvedený tvar pre atribúty Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach
Pripojenie modelu k dokumentu <?xml version="1.0"?> <roz:zoznam xmlns:roz="http://www.tuke.sk/ns/rozvrh" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.tuke.sk/ns/rozvrh file:///share/schema/rozvrh.xsd"> … </roz:zoznam> pre tento menný priestor ... ... hľadaj XSD model na tejto lokácii Katedra kybernetiky a umelej inteligencie FEI, TU v Košiciach