előadás vázlat

Post on 01-Feb-2016

44 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

Előadás vázlat

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

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.

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.

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.

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

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 )

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)

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.

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

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! &&&&&&]]>

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

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.

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.

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

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.

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

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

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

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

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>

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

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

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

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.

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.

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

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.

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

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.

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

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.

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

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>

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.

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>

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.

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>

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

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

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.

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

top related