1 / 43

Előadás vázlat

Előadás vázlat. Az XML története és alkalmazási területe Az XML alapelemei XML validáció (DTD, XML Schema) DOM. Az XML története.

kaden
Download Presentation

Előadás vázlat

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. Előadás vázlat • Az XML története és alkalmazási területe • Az XML alapelemei • XML validáció (DTD, XML Schema) • DOM

  2. Az XML története • Az adatok formatált dokumentumként való tárolása megoldott a ’60-as évek óta. (Tex) Sajnos az ilyen dokumentumok feldolgozása programmal nehézkes, nem támogatják az adatok struktúrálását, az adatok közötti egyszerű keresést. Elsődleges céljuk az, hogy a dokumentum „jól nézzen ki” monitoron, illetve nyomtatásban.

  3. Első lépés a generikus kódolás irányába ‘60-as évek vége felé a GCA volt. • Az igazi előrelépés a Generalized Markup Language (GML) volt, amit az IBM fejlesztett ki, és használt erősen a dokumentációk készítése során. A tartalomról információkat hordozó címkék (tag) használatának köszönhetően jól szerkeszthető és kereshető dokumentunokat lehetett benne definiálni • A ’80-as évek elején az ANSI felkérte a GML megalkotóit egy szabványos, általános dokumentum leíró nyelv kidolgozására. Ez lett az SGML.

  4. Az SGML alapvetően egy eszköz saját markup nyelvek definiálására. • Az SGML terjedni kezdett, de széleskörű felhasználásra túl bonyolult volt. A generikus kódolásnak a ’90-es években Tim Berners-Lee és Anders Berglund adott a HTML definiálásával. Egyszerűbb volt használni, de visszalépést is jelentett, mivel sok, formázást előíró tag-et alkalmazott, ami miatt pont a struktúráltság veszett el, ráadásul nem lehet saját tag-eket definiálni. A web-nek köszönhetően azonban hamar elterjedt.

  5. Az eredeti generikus alapokhoz való visszatérés jegyében jött létre az XML. Olyan nyelvet akartak létrehozni, amely lehetővé teszi markup nyelv definiálását kifejezetten a használni kívánt adatokhoz, egyértelműen interpretálható, egyszerű, a lehető legtöbb hiba ellenőrzést biztosítja, és elválasztja a megjelenítést a leírástól. • Az XML az SGML leszűkítése a sokak számára felesleges részek elhagyásával. (Ezzel szemben a HTML egy SGML-ben definiált markup nyelv!)

  6. Egy XML dokumentum <?xml version="1.0" encoding="UTF-8"?> <mobil> <gyarto> Motorola </gyarto> <tipus> K1 </tipus> </mobil> (Példák forrása: Bátfai Norbert programozó Páternoszter melléklet, ppmkonyv.pdf )

  7. Mire jó az XML? • Adat tárolás: Konfigurációs és egyéb átmeneti állományok egyszerű leírása. • Adat csere: Adatok XML dokumentumokon keresztüli cseréje. (webszolgáltatások, adatbázissal történő kommunikáció, platform független stb.) • A dokumentumokhoz külön megadható formázás. (stíluslapok, CSS) • A dokumentumok a megjelenítéshez transzformálhatóak. (XSL, pl. XML -> HTML) • Adat integritás biztosítása, adat ellenőrzés (parser, validálás)

  8. Akkor mire nem jó az XML? • Az XML (önmagában) nem helyettesíthet egy adatbázist. A célja ugyan adatok tárolása, és van lehetőség a dokumentumon belüli keresésre is, de maga a dokumentum egy szekvenciális elérésű fájl ennek minden hátrányával. Nagy tömegű adat tárolására továbbra is DBMS rendszerek szükségesek. Kis mennyiségű adat esetén esetleg alkalmazható ebben a szerepkörben is.

  9. Az XML dokumentum elemei • Document prolog: Az XML dokumentum ezzel az elemmel kezdődik. Meghatározza a használt XML verziót, a kódolást, illetve ha az XML dokumentum több darabból áll, akkor a parser-nek tudnia kell erről a tényről. • <?xml?> • <?xml version="1.0"?> • <?xml version='1.0' encoding='US-ASCII' standalone='yes'?> • <?xml version = '1.0' encoding= 'iso-8859-1' standalone ="no"?>

  10. Tag-ek és XML elemek • Az XML elemek a dokumentum építőelemei. Tartalmazhatnak további XML elemeket és/vagy szöveget. Ezeket tag-ek határolják. • Üres elem: <xref linkend="abc"/> • Konténer elem: <p>This is a paragraph.</p> • Deklaráció: <!ENTITY author "Erik Ray"> • Feldolgozási előírás: <?print-formatter force-linebreak?> • Komment: <!— here's where I left off —> • CDATA szekció: <![CDATA[Ampersands galore! &&&&&&]]>

  11. Attribútumok • Az XML elemekhez adhatóak attribútumok. Tulajdonképpen modellezési kérdés annak eldöntése, hogy a modellezés során valamely konkrét esetben elemet vagy attribútumot definiálunk. • <book contentType=”Fiction” format=”Hardback”>

  12. Jól formáltság • Egy XML dokumentum akkor jól használható, ha teljesíti a jól formáltsági követelményeket. • A dokumetumot a document prolog vezeti be • Szükség van egy gyökér (legfelső szintű) XML elemre, ami az összes tübbit tartalmazza. • Minden nemüres XML elemhez szükséges egy nyitó és egy záró tag.

  13. Minden üres XML elemet jelölő tag-nek tartalmaznia kell /-t a záró > előtt. • A tag-ek beágyazási sorrendjének megfelelőnek kell lennie. • Minden attribútum értéknek idézőjelek között kell szerepelnie. • Minden saját tag-nek az előírt formátumot teljesíteni kell. • A jólformáltság minden XML dokumentum fontos tulajdonsága, mert a szigorú szintaktika teszi lehetővé az egyszerű parser-ek írását.

  14. <?xml version="1.0" encoding="UTF-8"?> <mobilbolt> <neve cime="http://norbi.boltja">Norbi MobilBoltja</neve> <mobil> <gyarto>Motorola</gyarto> <tipus>K1</tipus> <kep forrasa="k1.png" /> <kamera felbontas="2" /> <java midp="2.0" cldc="1.1" /> <kaphato ar="70000" allapot="jó"/> </mobil> <mobil> <gyarto>Nokia</gyarto> <tipus>6131</tipus> <kep forrasa="6131.png" /> <kamera felbontas="2" /> <java midp="2.0" cldc="1.1" /> </mobil> </mobilbolt>

  15. Validáció • Az XML egyik nagy erőssége a dokumentum validáció. Többféle nyelv áll rendelkezésre ahhoz, hogy megadhassunk betartandó formai szabályokat. A legelterjedtebb a DTD és az XML Schema, de létezik még sok egyéb nyelv is. (Pl. RelaxNG, Schematron) A szabályok teljesülését az XML feldolgozó ellenőrizni tudja. • Habár hasznos megadni a használt nyelvtant, ez nem kötelező köszönhetően az XML szigorú szintaktikájának.

  16. DTD • Az SGML-től örökölt nyelv. • Dokument típus deklaráció: A DTD fájl helye. <!DOCTYPE RootElement SYSTEM “filename.dtd”> • Elem típus deklaráció: XML elem leírása. <!ELEMENT Name (#PCDATA)> • Attribútum lista deklaráció: Egy elemtípus attribútumait definiálja. <!ATTLIST ElementName Name Datatype Default> • Egyed deklaráció: <!ENTITY Entity Name “text”>

  17. Document prolog • A DTD leírások elhelyezhetők magában az XML dokumentumban, illetve külső állományban is. • Külön állományban: <?xml version=’1.0’ encoding=’UTF-8’?> <!ELEMENT mobil (gyarto,tipus)> <!ELEMENT gyarto (#PCDATA)> <!ELEMENT tipus (#PCDATA)>

  18. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mobil SYSTEM "mobil.dtd"> <mobil> <gyarto> Motorola </gyarto> <tipus> K1 </tipus> </mobil>

  19. Beágyazva: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mobil [ <!ELEMENT mobil (gyarto,tipus)> <!ELEMENT gyarto (#PCDATA)> <!ELEMENT tipus (#PCDATA)> ]> <mobil> <gyarto> Motorola </gyarto> <tipus> K1 </tipus> </mobil>

  20. XML elem deklaráció • XML elemek tartalmának leírása: • Bármit tartalmazhat: <!ELEMENT Name ANY> • Üres elem: <!ELEMENT Name EMPTY> • Kevert tartalom: <!ELEMENT Name (#PCDATA | ChildName)*> • Konténer elem: <!ELEMENT Name (Child1, Child2)>

  21. További jelölések kevert elemekhez • Vessző (,): Listát definiál. <!ELEMENT customer (custNumber, lastName, firstName) > • Függőleges vonal (|): Vagy kapcsolat. <!ELEMENT books (book1 | book2)> • Nincs egyéb szimbólum: Az adott elem egyszer fordul elő.<!ELEMENT books (book)>

  22. További jelölések kevert elemekhez • Plussz (+): Egy vagy több előfodulást jelöl. <!ELEMENT books (book+)> • Csillag (*): 0 vagy több előfordulást jelöl.<!ELEMENT books (book*)> • Kérdőjel (?): Egyszer vagy egyszer sem fordul elő az adott elem.<!ELEMENT books (book?)>

  23. Attribútumom definiálása • Általános forma: <!ATTLIST element-name attribute-name datatype defaultvalue> • Többféle adattípus lehet (Pl. : CDATA, ID, ENTITY) • #REQUIRED: Az elem minden használatakor értéket kell adni az attribútumnak. • #IMPLIED: Az attribútum opcionális. Ha nem használt, akkor nincs alapértelmezett értéke. • #FIXED: Az attribútum opcionális, és ha szerepel, akkor a DTD-ben megadott kezdőértékű. • Value: Hagyományos alapértelmezett érték.

  24. Egyedek • Az egyedek gyakorlatilag névvel ellátott szövegblokkok. Lehetnek általános és paramérter egyedek. • Az általámos egyedek az XML dokumentumban használhatóak, míg a paraméter egyedek a DTD leírásnan.

  25. Általános egyedek • <!ENTITY entityName “replacementText”> <!ENTITY store1 “River Valley Center”> • Az egyedek később &entityName; alakban hivatkozhatók. • Az eddig definiáltak a belső egyedek. Hivatkozhatóak más dokumentunban és gépen megtalálható egyedek is. (külső egyedek)<!ENTITY entityName SYSTEM “system-identifier”> <!ENTITY entityName PUBLIC “system-identifier”>

  26. Paraméter egyedek • <!ENTITY % entityName “replacementText”> • Hivazkozásuk: %entityName ; • Szintén léteznek belső és külső egyedek. Külső paraméter egyedek felhasználásával a DTD állományok kisebb, jól kezelhető és újrafelhasználható darabokra bonthatóak.

  27. <?xml version=’1.0’ encoding=’UTF-8’?> • <!ELEMENT mobilbolt (neve, mobil*)> • <!ELEMENT neve (#PCDATA)> • <!ATTLIST neve cime CDATA #IMPLIED> • <!ELEMENT mobil (gyarto,tipus,kep,kamera,java,kaphato?)> • <!ELEMENT gyarto (#PCDATA)> • <!ELEMENT tipus (#PCDATA)> • <!ELEMENT kep EMPTY> • <!ATTLIST kep forrasa CDATA #IMPLIED> • <!ELEMENT kamera EMPTY> • <!ATTLIST kamera felbontas CDATA #IMPLIED> • <!ELEMENT java EMPTY> • <!ATTLIST java cldc CDATA #IMPLIED midp CDATA #IMPLIED • <!ELEMENT kaphato EMPTY> • <!ATTLIST kaphato ar CDATA #REQUIRED allapot (remek|jó|közepes|elmegy|rossz) "jó">

  28. XML Schemas • W3X szabvány. • Olyan XML dokumentum, ami más XML dokumentum felépítéséről tárol információkat. • Célja megegyezik a DTD-vel, de itt az XML Schema specifikációban megadott tag-ek felhasználásával XML dokumentumot hozunk létre. • A DTD-vel szemben ez a leírás nem ágyazható be az XML dokumentum. • Sok beépített adattípust tartalmaz.

  29. Az XML Schemas alapelemei • Document prolog • Séma elem: <xsd:schema xmlns:xsd= ”namespace”><xsd:schema xmlns: xsd=”http://www.w3.org/2001/XMLSchema” /> • Elem deklaráció: <xsd:element name=”name”> • Attribútum deklaráció: <xsd: attribute name=”name” type=”type”>

  30. XML Prolog • A document prolog szabvány XML. • A gyökérelemként szolgál a séma elem leírás. Minden más elemet tartalmaz, illetve megadja a használt névteret. A névtér egy URL, ahol a használt XML szótár részletei találhatóak.<xsd:schema xmlns:xsd=”http://www.w3.org/2001/XMLSchema”> • Az xsd: -al jelölt elemek ehhez a névtérhez tartoznak. Ha csak egy névteret használunk, akkor nem kell ezt a jelölést használni.

  31. Elem deklarációk • Kétféle elem deklarációról beszélhetünk: egyszerű és komplex deklarációról. • Egyszerű esetben nem tartalmazhat az elem attribútumokat és további elemeket (csak szöveget), míg összetett esetben igen. • Egy egyszerű elem deklaráció:<xsd:element name=”date” type=”xsd:date”/>

  32. Komplex elem deklaráció • A komplex elemeknél 4 féle tartalmi elrendezés lehetséges. • Szöveg: Csak szöveget tartalmaz az elem. • Üres: Nem tartalmazhat sem szöveget, sem egyéb elemet. (De attribútumot igen.)<xsd:element name=”source”> <xsd:complexType> <xsd:attribute name=”yearsInService” type=”xsd:positiveInteger”/> </xsd:complexType> <xsd:element>

  33. Elem: Gyermek elemeket tartalmazhat.<xsd:element name=”bookInfo”> <xsd:complexType> <xsd:sequence> <xsd:element ref=”title”/> <xsd:element ref=”author”/> <xsd:element ref=”publisher”/> <xsd:element ref=”isbn”/> </xsd:sequence> </xsd:complexType> </xsd:element> • A sequence elem előírja, hogy az elemek ebben a sorrendben forduljanak elő; a choice elem esetén bármelyik bezárt elem előfodulhat; az all elem pedig nem ír elő semmit.

  34. Kevert: Lehetnek benne elemek, és az elemek között szövegek is.<xsd:element name=”confirmOrder”> <xsd:complexType mixed=”true”> <xsd:sequence> <xsd:element ref=”opening”/> <xsd:element ref=”fullName”/> <xsd:element ref=”date”/> <xsd:element ref=”title”/> </xsd:sequence> </xsd:complexType> </xsd:element>

  35. Komplex attribútum deklarációk • Definiálhatóak komplex típusok is. Ezek később az attribútum definíció „type” tagjában felhasználhatóak. <xsd:element name=”customer”> <xsd:complexType> <xsd:sequence> <xsd:element name=”firstName” type=”xsd:string”/> <xsd:element name=”lastName” type=”xsd:string”/> </xsd:sequence> <xsd:attribute name=”custNumber” type=”xsd:positiveInteger”/> </xsd:complexType> </xsd:element> • Attribútum deklarációnál use=„előírás” alakban adható meg az előfodulással kapcsolatos előírás. (Lásd DTD.) • Adhatóak megszorítások a saját adattípushoz.

  36. Annotációk • Adott a lehetőség megjegyzés beszúrásásra:<xsd:element name=”books”> <xsd:annotation> <xsd:documentation xml:lang=”en”> This is a collection of best-selling books. </xsd:documentation> </xsd:annotation> </xsd:element>

  37. 1 • 2 <?xml version="1.0" encoding="UTF-8"?> • 3 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> • 4 <xs:element name="mobilbolt"> • 5 <xs:complexType> • 6 <xs:sequence> • 7 <xs:element name="neve"> • 8 <xs:complexType> • 9 <xs:simpleContent> • 10 <xs:extension base="xs:string"> • 11 <xs:attribute name="cime" type="xs:string"/> • 12 </xs:extension> • 13 </xs:simpleContent> • 14 </xs:complexType> • 15 </xs:element> • 16 <xs:element name="mobil" minOccurs="0" maxOccurs="unbounded"> • 17 <xs:complexType> • 18 <xs:sequence> • 19 <xs:element name="gyarto" type="xs:string"/> • 20 <xs:element name="tipus" type="xs:string"/> • 21 <xs:element name="kep"> • 22 <xs:complexType> • 23 <xs:attribute name="forrasa" type="xs:string"/> • 24 </xs:complexType> • 25 </xs:element> • 26 <xs:element name="kamera"> • 27 <xs:complexType> • 28 <xs:attribute name="felbontas" type="xs:string"/> • 29 </xs:complexType> • 30 </xs:element> • 31 <xs:element name="java"> • 32 <xs:complexType> • 33 <xs:attribute name="midp" type="xs:string"/> • 34 <xs:attribute name="cldc" type="xs:string"/> • 35 </xs:complexType> • 36 </xs:element>

  38. <xs:element name="kaphato" minOccurs="0" maxOccurs="unbounded"> • 38 <xs:complexType> • 39 <xs:attribute name="ar" type="xs:decimal"/> • 40 <xs:attribute name="allapot"> • 41 <xs:simpleType> • 42 <xs:restriction base="xs:string"> • 43 <xs:enumeration value="remek"/> • 44 <xs:enumeration value="jó"/> • 45 <xs:enumeration value="közepes"/> • 46 <xs:enumeration value="elmegy"/> • 47 <xs:enumeration value="rossz"/> • 48 </xs:restriction> • 49 </xs:simpleType> • 50 </xs:attribute> • 51 </xs:complexType> • 52 </xs:element> • 53 </xs:sequence> • 54 </xs:complexType> • 55 </xs:element> • 56 </xs:sequence> • 57 </xs:complexType> • 58 </xs:element> • 59 </xs:schema>

  39. Document Object Model • Az XML dokumentumokat egy XML feldolgozó alakítja át programokban felhasználható formátumúra. Ehhez ad egységes programozási interfészt a DOM. • Jó példa a DOM felhasználására a böngésző. • A DOM vizuálisan egy fával ábrázolható. Az XML dokumentum alkotóelemei a fában csomópontként jelennek meg.

  40. A DOM csomópontok típusai • Gyökér: Az egész XML dokumentumot tartalmazza. • Dokumentum elem: A komment és feldolgozási utasításon kívül a dokumentum elemeit tartalmazza. (Azok a gyökér gyermekei.) • Elem • Szöveges • Attribútum • Névtér • Feldolgozási utasítás • Komment

More Related