előadás vázlat

43

Upload: kaden

Post on 01-Feb-2016

44 views

Category:

Documents


0 download

DESCRIPTION

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. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Előadás vázlat
Page 2: Előadás vázlat

Előadás vázlat

Az XML története és alkalmazási területeAz XML alapelemeiXML validáció (DTD, XML Schema)DOM

Page 3: Előadás vázlat

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.

Page 4: Előadás vázlat

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.

Page 5: Előadás vázlat

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.

Page 6: Előadás vázlat

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!)

Page 7: Előadás vázlat

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 )

Page 8: Előadás vázlat

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)

Page 9: Előadás vázlat

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.

Page 10: Előadás vázlat

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"?>

Page 11: Előadás vázlat

Tag-ek és XML elemekAz 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! &&&&&&]]>

Page 12: Előadás vázlat

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”>

Page 13: Előadás vázlat

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.

1. A dokumetumot a document prolog vezeti be

2. Szükség van egy gyökér (legfelső szintű) XML elemre, ami az összes tübbit tartalmazza.

3. Minden nemüres XML elemhez szükséges egy nyitó és egy záró tag.

Page 14: Előadás vázlat

4. Minden üres XML elemet jelölő tag-nek tartalmaznia kell /-t a záró > előtt.

5. A tag-ek beágyazási sorrendjének megfelelőnek kell lennie.

6. Minden attribútum értéknek idézőjelek között kell szerepelnie.

7. 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.

Page 15: Előadás vázlat

<?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>

Page 16: Előadás vázlat

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.

Page 17: Előadás vázlat

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”>

Page 18: Előadás vázlat

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)>

Page 19: Előadás vázlat

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mobil SYSTEM "mobil.dtd">

<mobil> <gyarto> Motorola </gyarto> <tipus> K1 </tipus> </mobil>

Page 20: Előadás vázlat

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>

Page 21: Előadás vázlat

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)>

Page 22: Előadás vázlat

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)>

További jelölések kevert elemekhez

Page 23: Előadás vázlat

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?)>

További jelölések kevert elemekhez

Page 24: Előadás vázlat

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.

Page 25: Előadás vázlat

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.

Page 26: Előadás vázlat

Á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”>

Page 27: Előadás vázlat

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.

Page 28: Előadás vázlat

1. <?xml version=’1.0’ encoding=’UTF-8’?>2. <!ELEMENT mobilbolt (neve, mobil*)>3. <!ELEMENT neve (#PCDATA)>4. <!ATTLIST neve cime CDATA #IMPLIED>5. <!ELEMENT mobil

(gyarto,tipus,kep,kamera,java,kaphato?)>6. <!ELEMENT gyarto (#PCDATA)>7. <!ELEMENT tipus (#PCDATA)>8. <!ELEMENT kep EMPTY>9. <!ATTLIST kep forrasa CDATA #IMPLIED>10.<!ELEMENT kamera EMPTY>11.<!ATTLIST kamera felbontas CDATA #IMPLIED>12.<!ELEMENT java EMPTY>13.<!ATTLIST java cldc CDATA #IMPLIED midp CDATA

#IMPLIED14. <!ELEMENT kaphato EMPTY>15.<!ATTLIST kaphato ar CDATA #REQUIRED allapot

(remek|jó|közepes|elmegy|rossz) "jó">

Page 29: Előadás vázlat

XML SchemasW3X 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.

Page 30: Előadás vázlat

Az XML Schemas alapelemeiDocument prologSé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”>

Page 31: Előadás vázlat

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.

Page 32: Előadás vázlat

Elem deklarációkKé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”/>

Page 33: Előadás vázlat

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>

Page 34: Előadás vázlat

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.

Page 35: Előadás vázlat

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>

Page 36: Előadás vázlat

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.

Page 37: Előadás vázlat

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>

Page 38: Előadás vázlat

• 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>

Page 39: Előadás vázlat

• <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>

Page 40: Előadás vázlat

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.

Page 41: Előadás vázlat

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

Page 42: Előadás vázlat
Page 43: Előadás vázlat