1 / 63

XML

XML. Az Extensible Markup Language (XML, kiterjeszthető leíró nyelv) a W3C által ajánlott általános célú leíró nyelv speciális célú leíró nyelvek létrehozására. http://www.w3.org/XML/ Előzménye: GML (1969) G eneralized M arkup L anguage

Télécharger la présentation

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 • Az Extensible Markup Language (XML, kiterjeszthető leíró nyelv) a W3C által ajánlott általános célú leíró nyelv speciális célú leíró nyelvek létrehozására. http://www.w3.org/XML/ • Előzménye: • GML (1969) Generalized Markup Language • SGML (1986) Standard Generalized Markup Language • HTML (1989) HyperText Markup Language • Jelenleg két XML verzió létezik. • Az XML 1.0-t 1998-ban definiálták. • Jelenleg a 2004. február 4-én publikált harmadik kiadás az aktuális. • Ezzel egy időben adták ki az XML 1.1-et. • Magyar XML összefoglaló, és Oracle XML összefoglaló található az alábbi címen: http://ablinux.inf.elte.hu/indexxml.html

  2. XML • Az XML jellegzetességei: • az XML dokumentum önleíró szöveges információ, • az XML dokumentumok könnyen reprezentálhatók címkézett, irányított gráfokkal, • lekérdező nyelvek a gráfokban keresnek meghatározott mintára illeszkedő útvonalakat (XPath), • a különböző funkciójú nyelvek (XQuery, XSLT, XLink, XPointer) közös része az XPath, • az adatbázis-kezelők (pl. Oracle) támogatják az XML típus kezelését, • szabványos adatcsere formátumként segít az adatintegráció megoldásában.

  3. XML • Az adatintegráció promlémája: • különböző helyeken tárolt, különböző formátumú adatbázisokat szeretnénk egységes formátumú, egy adatbázisban látni, illetve kezelni. • A különbözőség többféle lehet: • eltérő adatmodell (relációs, objektumorientált), • különböző sémákban reprezentálhatják akár ugyanazt az információt is, • más elnevezéseket használnak (név, ügyfélnév, vevő), • más skálákat használnak (forint, euro, dollár). • Például képzeljük el különböző sörözők nyilvántartásait: • egyik helyen használnak adatbázis-kezelőt, a másik helyen meg szöveges fájlokban tárolják az információt, • egyik helyen sörös üvegeket számolnak, a másik helyen sörös ládákat, • az egyik helyen tárolják a szállító telefonszámát, a másik helyen nem, • az egyik helyen megkülönböztetik a világos és barna söröket, a másik helyen nem.

  4. XML • Az adatintegráció kétféle megoldása: • Adattárház építése (warehousing): - egy közös sémájú adatbázisba napi, heti rendszerességgel betöltjük (szükség esetén transzformáljuk) a feldolgozáshoz szükséges adatokat. Adattárház (Warehouse) Burkoló (Wrapper) Burkoló (Wrapper) Adatforrás Adatforrás

  5. Válasz Kérdés Alkérdés Alválasz Alkérdés Alválasz Kérdés Kérdés Válasz Válasz XML • Közvetítő használata (mediation): - az adatforrásokból egy közös nézetet (virtuális adatbázist) definiálunk, - a virtuális adatbázishoz intézett lekérdezéseket át kell fordítani az eredeti adatforrások lekérdezéseivé, és a lekérdezések eredményeit vissza kell integrálni. Közvetítő Burkoló Burkoló Adatforrás Adatforrás

  6. XML • Az információ integráció megoldásához új adatmodellt vezetünk be, a félig (vagy részben) strukturált adatmodellt. • Az XML a félig strukturált adatmodell szabványos leíró nyelve. • A félig strukturált adatok irányított, címkézett gráffal reprezentálhatók: • Csúcsok (elemek, gyökér): objektumok, • Élek (szülő-gyerek kapcsolatok): objektumok közti kapcsolatok, • Címkék az éleken vagy csúcsokon: attribútumok, kapcsolatnevek, • Levelek (text csúcsok): atomi értéket tartalmaznak. • Megjegyzés: Az élcímkézett és csúcscímkézett modellek megfeleltethetők egymásnak. • Az adatmodell általánosítása a DOM (Document Object Model, http://www.w3.org/DOM/ ).

  7. Sör objektum Kocsma objektum XML gyökér sör sör kocsma gyártó gyártó díj név Soproni név év helyezés kapható Szűz Ászok 1995 1. név cím Ring 5. ker

  8. XML • Helyesen formázott XML dokumentumok • Egy XML dokumentum szövegből áll. • Egy helyesen formázott XML dokumentumnak többek között a következő szabályoknak kell megfelelnie: • Egyetlen gyökér elem lehet egy dokumentumban. Az XML deklaráció, feldolgozó utasítások és megjegyzések megelőzhetik a gyökér elemet. Ezt a részt prológusnak, az utána következő részt dokumentumpéldánynak hívjuk. • Az elemeket mind nyitó, mind záró címkének, tag-eknek kell határolni. <kocsma> </kocsma> • A tag-ek egymásba ágyazhatók, de nem lehetnek átfedők. Mindegyik nem gyökér elemet másik elemnek kell magában foglalnia.

  9. XML

  10. XML

  11. XML <?xml version="1.0" encoding="ISO-8859-2" standalone="no"?> <Receptek> <Recept név="tea" idő="5 perc"> <összetevő mennyi="1" egység="tasak">Tea</összetevő> <összetevő mennyi="1" egység="kanál">Citromlé</összetevő> <Utasítások> <lépés>Forrald fel a vizet és tedd bele a teát!</lépés> <lépés>Tedd bele a citromlevet, majd keverd össze!</lépés> </Utasítások> </Recept> </Receptek>

  12. XML Élcímkézett reprezentálás Receptek Tea Név Recept Idő 5 perc Összetevő Összetevő Utasítások mennyi mennyi lépés lépés egység egység kanál tasak 1 Tea 1 Citromlé Tedd bele a citromlevet, majd keverd össze! Forrald fel a vizet és tedd bele a teát!

  13. Csúcscímkézett reprezentálás Csúcs: Attribútum: Attribútumérték: Szöveg: Gyökér XML Receptek Tea Név Recept 5 perc Idő Összetevő Összetevő Utasítások lépés lépés Citromlé egység egység Tea mennyi mennyi Tedd bele a citromlevet, majd keverd össze! Forrald fel a vizet és tedd bele a teát! kanál 1 tasak 1

  14. XML • Érvényes XML dokumentumok • Egy helyesen formázott XML dokumentum érvényes, ha megfelel egy adott sémának. • Egy XML séma az XML dokumentum típusának, szerkezeti szabályainak leírása. • Kétféle séma használatos: • DTD (Document Type Definition) • XSD (XML Scheme Definition)

  15. XML • XMLSpy http://www.altova.com/products/xmlspy/xml_editor.html • - (30 napos próbaverzió), • - ellenőrzi a helyesen formázottságot, érvényességet, sémát generál.

  16. XML <?xml version="1.0" encoding="ISO-8859-2" standalone="no"?> <!DOCTYPE Receptek [ <!ELEMENT Receptek (Recept*)> <!ELEMENT Recept (összetevő*,Utasítások*)> <!ELEMENT összetevő (#PCDATA)> <!ELEMENT Utasítások (lépés*)> <!ELEMENT lépés (#PCDATA)> <!ATTLIST Recept név CDATA #IMPLIED> <!ATTLIST Recept idő CDATA #IMPLIED> <!ATTLIST összetevő mennyi CDATA #IMPLIED> <!ATTLIST összetevő egység CDATA #IMPLIED> ]> <Receptek> <Recept név="tea" idő="5 perc"> <összetevő mennyi="1" egység="tasak">Tea</összetevő> <összetevő mennyi="1" egység="kanál">Citromlé</összetevő> <Utasítások> <lépés>Forrald fel a vizet és tedd bele a teát!</lépés> <lépés>Tedd bele a citromlevet, majd keverd össze!</lépés> </Utasítások> </Recept> </Receptek>

  17. XML • Egy XML dokumentumpéldányhoz visszafele is le lehet generálni a sémáját, de ez erre a példányra fog legjobban illeszkedni: • az aktuális értékeket tekinti az összes lehetséges értéknek, • az értékekből határozza meg a típust, és a számosságot, • így várhatóan nem lesz elég általános. <?xml version="1.0" encoding="UTF-8"?> <!--DTD generated by XMLSpy v2007 sp2 (http://www.altova.com)--> <!ELEMENT összetevő (#PCDATA)> <!ATTLIST összetevő egység (tasak | kanál)#REQUIRED mennyi CDATA #FIXED "1" > <!ELEMENT lépés (#PCDATA)> <!ELEMENT Utasítások ((lépés+))> <!ELEMENT Receptek ((Recept))> <!ELEMENT Recept ((összetevő+, Utasítások))> <!ATTLIST Recept idő CDATA #FIXED "5 perc" név CDATA #FIXED "tea" >

  18. XML • A DTD sémát külön fájlban is lehet tárolni: <?xml version="1.0" encoding="ISO-8859-2" standalone="no"?> <!DOCTYPE Receptek SYSTEM "C:\TMP\Konyha.dtd"> <Receptek> <Recept név="tea" idő="5 perc"> <összetevő mennyi="1" egység="tasak">Tea</összetevő> <összetevő mennyi="1" egység="kanál">Citromlé</összetevő> <Utasítások> <lépés>Forrald fel a vizet és tedd bele a teát!</lépés> <lépés>Tedd bele a citromlevet, majd keverd össze!</lépés> </Utasítások> </Recept> </Receptek>

  19. XML • Az XML fájl böngészővel is megnyitható, és az alstruktúrák kinyithatók a – jelekre kattintva, illetve összecsukhatók még egy kattintással. • A konyha.xml fájlt Internet Explorerrel megnyitva: <?xml version="1.0" encoding="ISO-8859-2" standalone="no" ?> <!DOCTYPE Receptek (View Source for full doctype...)> - <Receptek> - <Recept név="tea" idő="5 perc"> <összetevő mennyi="1" egység="tasak">Tea</összetevő> <összetevő mennyi="1" egység="kanál">Citromlé</összetevő> - <Utasítások> <lépés>Forrald fel a vizet és tedd bele a teát!</lépés> <lépés>Tedd bele a citromlevet, majd keverd össze!</lépés> </Utasítások> </Recept> </Receptek>

  20. XML • Az XSD sokkal részletesebb, mint a DTD. • A generált Konyha.xsd 73 sor, a Konyha.dtd 15 sor. • A Konyha.xsd első pár sora: ?xml version="1.0" encoding="UTF-8"?> <!--W3C Schema generated by XMLSpy v2007 sp2 (http://www.altova.com)--> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:simpleType name="T3_összetevő"> <xs:restriction base="xs:string"> <xs:enumeration value="Citromlé"/> <xs:enumeration value="Tea"/> </xs:restriction> </xs:simpleType> <xs:element name="Receptek"> <xs:complexType> <xs:sequence> <xs:element name="Recept"> <xs:complexType> <xs:sequence> s.t.b.

  21. XML • A sémát is gráffal lehet reprezentálni. • A konyha.png tartalma:

  22. XML • Az XPath (http://www.w3.org/TR/xpath) lekérdezőnyelv reguláris kifejezésekre illeszkedő útvonalakat keres. • Példák: http://www.zvon.org/xxl/XPathTutorial/General/examples.html • 1999-ben készült az 1.0 verzió. • 2007. januárban jelent meg a 2.0 verzió. • A reguláris kifejezésben használt fontosabb jelölések:

  23. XML • /Receptek/Recept/@név eredménye: név attribútum, értéke: tea • //összetevő[@mennyi=1] eredménye: összetevő csúcs, értéke: Tea összetevőcsúcs, értéke: Citromlé • /Receptek/Recept/Utasítások/* eredménye: lépés csúcs, értéke: Forrald fel a vizet ... lépéscsúcs, értéke: Tedd bele a citromlevet...

  24. XML • //Utasítások | /Receptek/Recept eredménye: Recept csúcs Utasítások csúcs • //*[@mennyi] -- létezik a csúcsnak mennyi attribútuma -- eredménye: összetevő csúcs, értéke: Tea összetevőcsúcs, értéke: Citromlé • //Utasítások/lépés[2] – a 2. lépés csúcs – eredménye: lépés csúcs, értéke: Tedd bele a citromlevet... • //Recept[@név="tea" and összetevő="Citromlé"]//lépés eredménye: lépés csúcs, értéke: Forrald fel a vizet ... lépéscsúcs, értéke: Tedd bele a citromlevet...

  25. XML • /*/* eredménye: Recept csúcs • /*/*/* eredménye: összetevő csúcs, értéke: Tea összetevőcsúcs, értéke: Citromlé Utasítások csúcs • /*/*/*/parent::*-- az aktuális csúcs szülője -- eredménye: Recept csúcs • Fontosabb tengelyek (axes):

  26. XML • Az XPath lekérdezésekben függvények is használhatók: http://www.w3schools.com/xpath/xpath_functions.asp Fontosabb függvényosztályok: • Accessor Például:/Receptek/Recept/node-name(.) Eredménye: xs:QName, értéke: Recept • Numeric Például:/Receptek/Recept/összetevő[@egység="kanál"]/@mennyi+3.14/round(.) Eredménye: xs: Double, értéke:4 • String Például:/Receptek/Recept/összetevő[@egység="kanál"]/string-length(.) Eredménye: xs: Integer, értéke:8 Másik példa: /Receptek/Recept/összetevő[@egység="tasak"]/upper-case(.) Eredménye: xs: string, értéke: TEA

  27. XML • AnyURI Például: /resolve-uri(".\Példa") Eredménye: xs: anyURI, értéke: C:\TMP\Példa • Boolean Például: //összetevő[@egység="tasak"]/@mennyi="1" and false() Eredménye: xs: boolean, értéke false • Duration/Date/Time Például: //lépés/current-date() Eredménye (-- időzónával együtt --): xs: date, értéke: 2007-04-24+02:00 xs: date, értéke: 2007-04-24+02:00 • QName (qualified name) Például: //Recept/namespace-uri(.) Eredménye: xs: anyURI, értéke üres

  28. XML • Node Például: Például: //Recept/namespace-uri(.) Eredménye: xs: string, értéke "összetevő" xs: string, értéke "összetevő" xs: string, értéke "Utasítások" További függvényosztályok: • Sequence • Context • Error and Trace • Elnevezéseket névterek segítségével lehet egyedivé tenni. A névterek után : jelet teszünk. Előre deklarált névterek: • xml = http://www.w3.org/XML/1998/namespace • xs = http://www.w3.org/2001/XMLSchema • xsi = http://www.w3.org/2001/XMLSchema-instance • fn = http://www.w3.org/2005/xpath-functions • local = http://www.w3.org/2005/xquery-local-functions

  29. XML • Az XQuery lekérdező nyelv: • SQL-hez hasonló: • FLOWR kifejezések: • FOR, LET, WHERE, ORDER BY, RETURN. • XML-ben az adatelérést XPath kifejezéssel lehet megadni, • az XQuery 1.0 2007. január 23 óta W3C ajánlás • az adatbázis-kezelők (pl. Oracle) támogatják • Alkalmazási területek: • információ kinyerése XML fájlokból, • jelentések készítése, • XML adatok átalakítása XHTML formátumra, • weben publikált adatokon keresés • web service alkalmazások megvalósítása.

  30. XML • Változók használata: • $változó • Például: • xqueryversion"1.0"; for$xindoc("konyha.xml")//összetevő orderby$x/@egység return$x Eredménye XML dokumentum: <összetevő mennyi="1" egység="kanál">Citromlé</összetevő> <összetevő mennyi="1" egység="tasak">Tea</összetevő>

  31. XML • HTML dokumentum is generálható a segítségével Például a konyha.xq fájl legyen a következő: xqueryversion"1.0"; <html> <body><h1>Összetevők</h1> <ul> { for$xindoc("konyha.xml")//összetevő let$valami :="kanál" where$x/@egység=$valami return<li>{$x/text()}</li> } </ul> </body> </html>

  32. XML • Az előbbi XQuery eredménye: <html> <body> <h1>Összetevők</h1> <ul> <li>Citromlé</li> </ul> </body> </html> Az eredményt elmentve Konyha.html fájlba és böngészővel megnyitva:

  33. XML • Ha a lekérdezés eredménye több elemet tartalmaz, külön sorokba jeleníthetjük meg az elemeket, és rendezhetjük is: xqueryversion"1.0"; <html> <body><h1>Összetevők</h1> <ul> { for$xindoc("konyha.xml")//összetevő orderby$x/@egység return<li> {$x/text()} </li> } </ul> </body> </html>

  34. XML • Az előbbi XQuery eredménye: <html> <body> <h1>Összetevők</h1> <ul> <li>Citromlé</li> <li>Tea</li> </ul> </body> </html> • Böngészővel megnyitva:

  35. XML • Az XPath összes függvénye mellett más beépített függvények is használhatók, és új függvényeket is meg lehet adni. • Például a sum(doc("konyha.xml")//összetevő/@mennyi) eredménye 2. • A következő rekurzív függvény kiszámolja a megadott XML dokumentum gráfjának mélységét. xqueryversion"1.0"; declarefunction local:depth($easnode()) as xs:integer { (: Ha nincs gyereke egy csúcsnak, akkor a mélysége 1 :) (: Különben 1-gyel nagyobb a mélysége, mint a gyerekei mélységeinek maximuma :) if (fn:empty($e/*)) then 1 else fn:max(for$cin$e/* return local:depth($c)) + 1 }; local:depth(fn:doc("Konyha.xml")) • Eredménye: 5 • A local:depth(fn:doc("Konyha.xml")/Receptek/Recept/Utasítások/lépés[1]) Eredménye: 1

  36. XML • Az Oracle adatbázis-kezelő különböző verziói egyre bővülő XML támogatást nyújtanak. • A legfontosabb fogalmak összefoglalva (a címke, vagy tag jelentik a gráf egy csúcsát):

  37. XML

  38. XML

  39. XML

  40. XML

  41. XML

  42. XML

  43. XML

  44. XML

  45. XML

  46. XML

  47. XML

  48. XML

  49. XML

  50. XML

More Related