1 / 49

XML

XML. Document Type Definitions (DTD) XML séma. Féligstrukturált adat. Egy másik, fákon alapuló adatmodell . Motiváció : az adatok rugalmas megjelenítése . Motiváció : dokumentumok megosztása rendszerek és adatbázisok között. A féligstrukturált adatok gráfja. Pontok = objektumok .

adonia
Download Presentation

XML

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. XML Document Type Definitions (DTD) XML séma

  2. Féligstrukturált adat • Egy másik, fákon alapuló adatmodell. • Motiváció: az adatok rugalmas megjelenítése. • Motiváció: dokumentumokmegosztása rendszerek és adatbázisok között.

  3. A féligstrukturált adatok gráfja • Pontok = objektumok. • Az élek címkéi tulajdonképpen az attribútumnevek. • Az atomi értékek a levelekben tárolódnak.

  4. Vegyük észre, új típusú adat. A Bud sör objektuma. A kocsma objektum Joe bárjához. Példa: adatgráf gyökér sör sör kocsma gyártó gyártó díj név A.B. név év jutalom felszolgálják Bud M’lob 1995 Gold név cím Joe’s Maple

  5. Példa HTML <!DOCTYPE html> <html> <body> <h1>My First Heading</h1> <p>My first paragraph.</p> </body> </html>

  6. XML • XML = Extensible Markup Language. • A HTML a dokumentumok kinézetét írja le (pl. <i>rózsa</i> “italic”).Az XML-ben a jelentés vagy tartalom (szemantika) leírására használják a tageket (pl. <cím> tag jelentése: “itt egy cím következik majd”).

  7. <?xml version = "1.0" encoding = "utf-8" ?> <ab> <személy id="01"> <név>Karcsi</név> <fizu>80000</fizu> </személy> <étterem> <tulaj személy_id="01"/> <cím> <város>Vác</város> <utca>Örmény</utca> <házszám>6</házszám> </cím> <tel>213-234</tel> <tel>213-233</tel> </étterem> </ab>

  8. ab személy étterem id név fizu tulaj cím tel tel személy_id 01 Karcsi 80000 213-234 213-233 01 város utca házszám Vác Örmény 6

  9. XML dokumentumok • A dokumentumdeklarációval kezdődik, amitegy speciális <?xml … ?> tag határol. • Tipikusan: <?xml version = “1.0” encoding = “utf-8” ?> <?xml version = ”1.0” standalone = ”yes” ?> • “standalone” = “van vagy nincs DTD.”

  10. Tagek • A tagek, mint a HTML esetében is nyitó és záró elemből állnak <FOO> … </FOO>. • Opcionálisan <FOO/>. • Tageket tetszőlegesen egymásba ágyazhatjuk. • Az XML tagek érzékenyek a kis- és nagybetű különbségre.

  11. Jól formáltés valid XML • Jól formált XMLmegengedi, hogy önálló tageket vezessünk be. • Valid XMLilleszkedik egy előre megadott sémára: DTD vagy XML séma.

  12. Jól formált XML • Nem hiányzik adeklaráció: <?xml … ?>. • Minden nyitó tagnek megvan a záró párja.

  13. A név elem. Gyökér tag A sör elem. A sör elem a kocsma elem aleleme. Példa: jól formázott XML <?xml version = “1.0” standalone = “yes” ?> <kocsmák> <kocsma><név>Joe bárja</név> <sör><név>Bud</név> <ár>2.50</ár></sör> <sör><név>Miller</név> <ár>3.00</ár></sör> </kocsma> <kocsma> … </kocsmák>

  14. DTD felépítése <!DOCTYPE <gyökér elem> [ <!ELEMENT <név>(<összetevők>)> . . . további elemek . . . ]>

  15. DTD ELEMENT • Egy-egy elem leírása az elem nevét és zárójelek között az alelemek megadását jelenti. • Ez magában foglalja az alelemek sorrendjét és multiplicitását. • A levelek (szöveges elemek) típusa #PCDATA (Parsed Character DATA ).

  16. A kocsmák elem 0 vagy több kocsma elemet tartalmazhat. A kocsma elemnek van egy név eleme és egy vagy több sör eleme. A sör elemnek neve és ára van. A név és árelemeknek nincsenek alelemeik, szövegesek. Példa: DTD <!DOCTYPE kocsmák [ <!ELEMENT kocsmák (kocsma*)> <!ELEMENT kocsma (név, sör+)> <!ELEMENT név (#PCDATA)> <!ELEMENT sör (név, ár)> <!ELEMENT ár (#PCDATA)> ]>

  17. Elem leírások • A alelemek a felsorolás sorrendjében kell, hogy kövessék egymást. • Egy elemet a felsorolásban egy további szimbólum követhet megadva a multiplicitását. • * = 0 vagy több. • + = 1 vagy több. • ? = 0 vagy 1. • A | szimbólum jelentése: vagy.

  18. Példa: elem leírás • A névhez opcionálisan hozzátartozik egy titulus, egy kereszt- és vezetéknév (ebben a sorrendben), vagy egy IP cím: <!ELEMENT név ( (titulus?, kereszt, vezeték) | IP cím )>

  19. a DTD a dokumentum Példa: DTD-k használata (a) <?xml version = “1.0” standalone = “no” ?> <!DOCTYPE kocsmák [ <!ELEMENT kocsmák (kocsma*)> <!ELEMENT kocsma (név, sör+)> <!ELEMENT név (#PCDATA)> <!ELEMENT sör (név, ár)> <!ELEMENT ár (#PCDATA)> ]> <kocsmák> <kocsma><név>Joe bárja</kocsma> <sör><név>Bud</név> <ár>2.50</ár></sör> <sör><név>Miller</név> <ár>3.00</ár></sör> </kocsma> <kocsma> … </kocsmák>

  20. A DTD-t bar.dtd fájlból nyeri. Példa: DTD-k használata (b) • Feltesszük, hogy akocsmák DTD a bar.dtd fájlban van. <?xml version = “1.0” standalone = “no” ?> <!DOCTYPE kocsmák SYSTEM ”bar.dtd”> <kocsmák> <kocsma><név>Joe bárja</név> <sör><név>Bud</név> <ár>2.50</ár></sör> <sör><név>Miller</név> <ár>3.00</ár></sör> </kocsma> <kocsma> … </kocsmák>

  21. Attribútumok • Az XML-ben a nyitó tag-ek mellett szerepelhetnekattribútumok. • Egy DTD-ben, <!ATTLISTE . . . > Az E taghez tartozó attribútumokat adja meg.

  22. Sztring. Az attribútum opcionális, ennek ellentéte: #REQUIRED Példa: attribútumok • A kocsma elemhez hozzátartozik egytípusattribútum. <!ELEMENT kocsma (névsör*)> <!ATTLIST kocsmatípus CDATA #IMPLIED>

  23. Példa: attribútum használatára <kocsmatípus = ”skót”> <név>McGuiver sörözője</név> <sör><név>Scottish ale</név> <ár>5.00</ár></sör> ... </kocsma>

  24. ID és IDREF attribútumok • Az attribútumok segítségével egyik elemről a másikra mutathatunk. • Emiatt az XML dokumentum reprezentációja inkább gráf, mintsem egyszerű fa (fenntartásokkal kell fogadni ezt az információt).

  25. ID-k létrehozatala • Adjuk meg egy Eelemet és egyAattribútumát, aminek típusa: ID. • Amikor az E elemet(<E >)egy XML dokumentumba használjuk, az Aattribútumnakegy máshol nem szereplő értéket kell adnunk. • Példa: <E A = ”xyz”>

  26. IDREF-ek létrehozatala • EgyF elem az IDREF attribútum segítségével hivatkozhat egy másik elemre annak ID attribútumán keresztül. • Vagy:az IDREFS típusú attribútummal több másik elemre is hivatkozhat.

  27. A kocsma elemek neve ID attribútum, emellett felszolgál alelemeik lehetnek. A felszolgál elemhez sörökre vonatkozó hivatkozások tartoznak. lásd később A sör elemeknek is van egy ID típusú attribútuma (név), a kapható attrútum pedig kocsmák nevét tartalmazza. A DTD <!DOCTYPE kocsmák [ <!ELEMENT kocsmák (kocsma*, sör*)> <!ELEMENT kocsma (felszolgál+)> <!ATTLIST kocsmanév ID #REQUIRED> <!ELEMENT felszolgál (#PCDATA)> <!ATTLIST felszolgálmelyikSör IDREF #REQUIRED> <!ELEMENT sör EMPTY> <!ATTLIST sörnév ID #REQUIRED> <!ATTLIST sörkapható IDREFS #IMPLIED> ]>

  28. Példa: a DTD-re illeszkedő dokumentum <kocsmák> <kocsmanév = ”Joe bárja”> <felszolgálmelyikSör = ”Bud”>2.50</felszolgál> <felszolgálmelyikSör = ”Miller”>3.00 </felszolgál> </kocsma> … <sörnév = ”Bud” kapható = ”Joe bárja Suzy bárja …” /> … </kocsmák>

  29. a záró tag itt lerövidül Példa: üres elem • A DTD: <!ELEMENT felszolgál EMPTY> <!ATTLIST felszolgálmelyikSör IDREF #REQUIRED> <!ATTLIST felszolgálár CDATA #REQUIRED> • Példaa használatra: <felszolgálmelyikSör = ”Bud” ár = ”2.50” />

  30. XML séma • Az XML sémák segítségével szintén XML dokumentumok szerkezetét adhatjuk meg. Itt több megszorítást lehet előírni, mint a DTD-k esetén. • Az XML sémamaga is egy XML dokumentum.

  31. Az ”xs” névteretadja meg, amit a megadott URL azonosít. Itt a névtérhez tartozó elemek leírása is megtalálható. A schema tehát az xs névtérhez tartozó elem. Az XML sémadokumentum szerkezete <? xml version = … ?> <xs:schema xmlns:xs = ”http://www.w3.org/2001/XMLschema”> . . . </xs:schema>

  32. Azxs:elementelem • Az attribútumai: • name = a definiált elem neve (tagben miként szerepel). • type = az elem típusa. • Lehet XML séma típus, pl. xs:string. • Vagy egy olyan típus, amit az adott XML sémában deklarálunk.

  33. Példa: xs:element <xs:element name = ”név” type = ”xs:string” /> • A következő elemet írja le: <név>Joe bárja</név>

  34. Összetett típusok • alelemeket tartalmazó elemek leírásáhozxs:complexType használjuk. • Anameattribútummal nevet adhatunk ennek a típusnak. • Az xs:complexType egytipikus aleleme azxs:sequence, amihezxs:elementelemek egy sorozata tartozik. • AminOccursésmaxOccursattribútumok használatával az adottxs:element előfordulásainak számát korlátozhatjuk.

  35. Pontosan egy előfordulás. Minta ? a DTD-ben. Példa: típus a sörökhöz <xs:complexType name = ”sörTípus”> <xs:sequence> <xs:element name = ”név” type = ”xs:string” minOccurs = ”1” maxOccurs = ”1” /> <xs:element name = ”ár” type = ”xs:float” minOccurs = ”0” maxOccurs = ”1” /> </xs:sequence> </xs:complexType>

  36. Nem ismerjük az ilyen típusú elem nevét. Egy sör típusú elem <xxx> <név>Bud</név> <ár>2.50</ár> </xxx>

  37. Mint a * a DTD-ben. Példa: típus a kocsmákhoz <xs:complexType name = ”kocsmaTípus”> <xs:sequence> <xs:element name = ”név” type = ”xs:string” minOccurs = ”1” maxOccurs = ”1” /> <xs:element name = ”sör” type = ”sörTípus” minOccurs = ”0” maxOccurs = ”unbounded” /> </xs:sequence> </xs:complexType>

  38. xs:attribute • xs:attributeelemek használatával az összetett típuson belül a típushoz tartozó elemek attribútumait adhatjuk meg. • Azxs:attribute elem attribútumai: • nameéstypemint azxs:element esetén. • use = ”required” vagy ”optional”.

  39. Példa: xs:attribute <xs:complexType név = ”sörTípus”> <xs:attribute name = ”név” type = ”xs:string” use = ”required” /> <xs:attribute name = ”price” type = ”xs:float” use = ”optional” /> </xs:complexType>

  40. Továbbra sem tudjuk az elem nevét. Üres elemmel van dolgunk, mert nincsenek alelemei. Az új sörTípusnak megfelelő elem <xxx név = ”Bud” ár = ”2.50” />

  41. Egyszerű típus megszorítások • Azxs:simpleTypesegítségével felsorolásokat adhatunk meg és az alaptípusra vonatkozó megszorításokat. • nameattribútuma van és • xs:restrictionaleleme.

  42. Megszorítások: xs:restriction • Abaseattribútum adja meg, hogy melyik egyszerű típusra (simple type) vonatkozik a megszorítás: pl. xs:integer. • xs:{min, max}{Inclusive, Exclusive}a négy attribútum használatával alsó és felső korlátokat adhatunk meg. • xs:enumerationalelem,avalueattribútuma után megadhatjuk a felsorolás elemeit.

  43. Példa: engedélyattribútum a kocsmákhoz <xs:simpleType name = ”engedély”> <xs:restriction base = ”xs:string”> <xs:enumeration value = ”minden” /> <xs:enumeration value = ”csak sör” /> <xs:enumeration value = ”csak bor” /> </xs:restriction> </xs:simpleType>

  44. Példa: az árak [1,5) intervallumba eshetnek <xs:simpleType name = ”ár”> <xs:restriction base = ”xs:float” minInclusive = ”1.00” maxExclusive = ”5.00” /> </xs:simpleType>

  45. Kulcsok az XML sémában • Azxs:elementelemhez tartozhat xs:keyalelem. • Jelentése: ezen az elemen belül, minden elem, ami egy adott szelektorösvényen keresztül elérhetőegyedi értékekkel kell, hogy rendelkezzen a megadott mezőinek (field) kombinációin (alelem, attribútum). • Példa: egy kocsma elemen belül a sör elemeknévattribútumának egyedinek kell lennie.

  46. A @ attribútumot jelöl. Az XPath segítségével az XML fákat járhatjuk be (következő óra). Példa: kulcs <xs:element name = ”kocsma” … > . . . <xs:key name = ”kocsmaKulcs”> <xs:selector xpath = ”sör” /> <xs:field xpath = ”@név” /> </xs:key> . . . </xs:element>

  47. Idegen kulcsok • A xs:keyrefalelem azxs:elementelemen belül előírja, hogy ezen az elemen belül bizonyos értékek, melyeket ugyanúgy a szelektor és mezők használatával adhatunk meg, egy kulcs értékei között kell, hogy szerepeljenek.

  48. Példa: idegen kulcs • Tegyük fel, hogy a név alelem kulcs a kocsma elemekre vonatkozóan. • A kulcs neve legyen kocsmaKulcs. • Azalkeszek elemhezlátogat alelemeket szeretnénk hozzáadni. Ezen elemekkocsmaattribútuma idegen kulcs lesz, a kocsma elem név alelemére hivatkozik.

  49. Példa: idegen kulcs az XML sémában <xs:element name = ”alkeszek” . . . <xs:keyref name = ”kocsmaRef” refers = ”kocsmaKulcs” <xs:selector xpath = ”alkeszek/látogat” /> <xs:field xpath = ”@kocsma” /> </xs:keyref> </xs:element>

More Related