XML
(DTD)
(XSD)
DOM
XML feldolgoz´as
SAX
XSL
XML
(DTD)
(XSD)
DOM
´ Attekint´ es
XML -bevezet´es (XML ´erv´enyess´eg´enek vizsg´alata (DTD, XSD)) XML feldolgoz´ok (DOM, SAX) XML transform´aci´ok (XSLT)
SAX
XSL
XML
(DTD)
(XSD)
DOM
´ Attekint´ es
XML -bevezet´es (XML ´erv´enyess´eg´enek vizsg´alata (DTD, XSD)) XML feldolgoz´ok (DOM, SAX) XML transform´aci´ok (XSLT)
SAX
XSL
XML
(DTD)
(XSD)
DOM
´ Attekint´ es
XML -bevezet´es (XML ´erv´enyess´eg´enek vizsg´alata (DTD, XSD)) XML feldolgoz´ok (DOM, SAX) XML transform´aci´ok (XSLT)
SAX
XSL
XML
(DTD)
(XSD)
DOM
´ Attekint´ es
XML -bevezet´es (XML ´erv´enyess´eg´enek vizsg´alata (DTD, XSD)) XML feldolgoz´ok (DOM, SAX) XML transform´aci´ok (XSLT)
SAX
XSL
XML
(DTD)
(XSD)
DOM
SAX
XML XML jelent´ese EXtensible Markup Language (kiterjeszthet˝o jel¨ol˝o nyelv). f˝ok´ent adatreprezent´aci´ ora alkalmas platformf¨ uggetlen- illetve alkalmaz´ast´ ol f¨ uggetlen adatcser´et tesz lehet˝ov´e a tag-ek nincsenek el˝ ore meghat´arozva az XML ´allom´anyban t´arolt adat szerkezete le´ırhat´o DTD (Document Type Definition) vagy egy XML s´ema (XSD) seg´ıts´eg´evel u ´j nyelv is defini´alhat´ o a seg´ıts´eg´evel (l´asd: WML) a W3C aj´anl´asa (1998 febru´ar) k¨ ul¨onbs´eg a HTML-hez k´epest HTML c´elja - az adatok megjelen´ıt´ese XML c´elja - az adatok (inform´aci´ o) le´ır´asa
XSL
XML
(DTD)
(XSD)
DOM
SAX
XML szintaxis egyszer˝ u, szigor´ u szintaktikai szab´alyok XML deklar´aci´o az els˝o sor megadja az XML ´allom´any verzi´ osz´am´at, illetve a haszn´alt k´odol´ast: Pl.
ez a hazi a pontja ez pedig a b pont
XSL
XML
(DTD)
(XSD)
DOM
SAX
szintaktikai szab´alyok: minden XML elemnek kell legyen z´ar´ o tag-je XML tag-ek eset´en sz´am´ıt a kis- vagy nagybet˝ u az XML tag-eket helyesen kell egym´asba ´agyazni (nem lehetnek egym´asba ´ekelve) az XML dokumentumnak egy ´es csakis egy gy¨ ok´er eleme lehet az attrib´ utumok ´ert´ekeit k¨ otelez˝ o id´ez˝ ojelbe (” vagy ’) tenni a feh´er karakterek nincsenek figyelmen k´ıv¨ ul hagyva u ´jsor k´odol´asa: LF elemek k¨ozti viszonyok: sz¨ ul˝ o, gyerek, testv´er (sibling) elem fel´ep´ıt´ese: kezd˝o tag, t¨orzs, z´ar´ o tag (lehet u ¨res is
) az elemnek lehetnek attrib´ utumai
XSL
XML
(DTD)
(XSD)
DOM
SAX
XML n´evterek (Namespaces) a n´evterek a k¨ ul¨onb¨ oz˝ o XML ´allom´anyokb´ ol sz´armaz´o, azonos nev˝ u elemek eset´eben a n´evkonfliktus felold´as´ara szolg´alnak Pl. - konfliktus <ar> Euro <ertek>200
<ar> <ev>2007 7.5m
Konfliktus felold´asa el˝otag (prefix) haszn´alat´aval Euro 2007 7.5m 200
XSL
XML
(DTD)
(XSD)
DOM
SAX
Konfliktus felold´asa n´evt´er haszn´alata seg´ıts´eg´evel Euro 200 2007 7.5m egy elem kezd˝o tag-j´ebe helyezett xmlns attrib´ utum: szintaxisa: xmlns:namespace-prefix=”namespaceURI” az illet˝o elembe ´agyazott ¨ osszes elem, melynek ugyanaz a prefix-e, ugyanahhoz a n´evt´erhez fog tartozni az URI csup´an egy egyedi nevet rendel a n´evter¨ ulethez alap´ertelmezett n´evt´er (prefix n´elk¨ ul): xmlns=”namespaceURI”
XSL
XML
(DTD)
(XSD)
DOM
SAX
J´ol form´alt illetve ´erv´enyes XML
egy XML dokumentum j´ ol form´alt (well formed): ha megfelel az XML szintaktikai szab´alyainak egy XML dokumentum ´erv´enyes (valid): ha j´ ol form´alt, ´es megfelel a dokumentum s´ema defin´ıci´ oj´anak (pl. egy bizonyos DTD-ben vagy XML s´em´aban –XSD– megadott szab´alyok)
XSL
XML
(DTD)
(XSD)
DOM
SAX
DTD DTD – Document Type Definition elterjedt s´ema-le´ır´o m´ odszer az XML dokumentum ´erv´enyes ´ep´ıt˝ oelemeit adja meg (elemek, attrib´ utumok), illetve ennek fel´ep´ıt´es´et szabv´anyos, de nem XML alap´ u, ez´ert n´epszer˝ us´ege vsz´ın˝ uleg cs¨ okkenni fog megadhat´o: az XML ´allom´anyon bel¨ ul (ritk´abban haszn´alt): k¨ ul¨on dtd kiterjeszt´es˝ u ´allom´anyban (l´asd pl. a web.xml szerkezet´et le´ır´o DTD)
XSL
XML
(DTD)
(XSD)
DOM
SAX
egy XML ´allom´any alkot´ oelemei a DTD s´emale´ır´ o szempontj´ab´ol: Elemek Attrib´ utumok Egyedek (Entities) – speci´alis karakterk´ odok (pl. < – <, & – &, " – ”, ' –’) PCDATA – parsed character data CDATA – character data elem deklar´al´asa: vagy
XSL
XML
(DTD)
(XSD)
DOM
SAX
u ¨res elem: csak (feldolgozott) sz¨ oveget tartalmaz´ o elem: b´armilyen tartalommal rendelkez˝ o elem: be´agyazott (gyerek) elemeket tartalmaz´ o elemek: vagy gyerek egyszeri el˝ofordul´asa: gyerek legal´abb egyszeri el˝ ofordul´asa: . . . nulla vagy t¨obbsz¨ ori el˝ ofordul´asn´al: ∗, nulla vagy egyszeres el˝ofordul´asn´al: ? . . . felsorol´asban szerepl˝ o “vagy”: |
XSL
XML
(DTD)
(XSD)
DOM
SAX
attrib´ utum deklar´al´asa: szintaxis: attributum-tipus lehets´eges ´ert´ekei: CDATA, felsorol´as: (en1| en2 | . . . ), ID, IDREF, IDREFS, NMTOKEN, NMTOKENS, ENTITY, ENTITIES, NOTATION, xml: alapertelmezett-ertek lehets´eges ´ert´ekei: ertek, #REQUIRED, #IMPLIED, #FIXED ertek egyedek (entities) bels˝o egyed deklar´al´asa haszn´alata XML ´allom´anyban: & egyed-nev; k¨ uls˝o egyed deklar´al´asa:
XSL
XML
(DTD)
(XSD)
DOM
SAX
XML s´ema defin´ıci´o XSD – XML Schema Definition a DTD-nek XML alap´ u alternat´ıv´aja egy XML s´ema: meghat´arozza, hogy milyen elemek szerepelhetnek egy dokumentumban milyen attrib´ utumok szerepelhetnek egy dokumentumban milyen be´agyazott (gyerek) elemek vannak meghat´arozza a gyerek elemek el˝ ofordul´as´anak sorrendj´et meghat´arozza a gyerek elemek sz´am´at meghat´arozza, hogy egy elem u ¨res-e vagy tartalmazhat sz¨oveget az elemek illetve attrib´ utumok t´ıpusa is defini´alhat´o megadhat´o az elemek illetve attrib´ utumok alap´ertelmezett illetve r¨ogz´ıtett ´ert´eke
XSL
XML
(DTD)
(XSD)
DOM
SAX
el˝onyei a DTD-vel szemben: rugalmasabb, b˝ovebb XML alap´ u megadhat´o az adatok t´ıpusa n´evterek haszn´alata XML s´ema gy¨ok´er eleme: <xs:schema xmlns:xs=”http://www.w3.org/2001/XMLSchema” targetNamespace=”http://www.pltarget.com” xmlns=”http://www.pltarget.com” ...
XSL
XML
(DTD)
(XSD)
DOM
SAX
a schema elem attrib´ utumai (sorrendben): a s´em´aban haszn´alt, el˝ ore defini´alt elemek ´es adatt´ıpusok n´evtere, illetve a prefix (xs), amivel haszn´alva lesznek ebben a s´em´aban defini´alt elemek n´evtere alap´ertelmezett n´evt´er (vagyis az itt defini´alt elmeket prefix n´elk¨ ul adjuk meg) Hivatkoz´as a s´em´ara egy XML ´allom´anyb´ ol: <ar xmlns=”http://www.pl.ro/pl1/” xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance” xsi:schemaLocation=”http://www.pl.ro/pl1/ arak.xsd” > Euro <ertek>200
XSL
XML
(DTD)
(XSD)
DOM
SAX
egyszer˝ u elem defin´ıci´oja: <xs:element name=”xx” type=”yy”/> be´ep´ıtett t´ıpusok: xs:string, xs:decimal, xs:integer, xs:boolean, xs:date, xs:time – egyszer˝ u elemnek lehet alap´ertelmezett (default=”. . . ” – attrib´ utum) vagy r¨ ogz´ıtett (fixed=”. . . ”) ´ert´eke attrib´ utum defin´ıci´oja: <xs:attribute name=”xx” type=”yy”/> – az attrib´ utumnak is lehet alap´ertelmezett (default=”. . . ” – attrib´ utum) vagy r¨ogz´ıtett (fixed=”. . . ”) ´ert´eke – ha k¨otelez˝o: use=”required”
XSL
XML
(DTD)
(XSD)
DOM
SAX
Megszor´ıt´asok (facets) megadhatjuk az elemek illetve attrib´ utumok elfogadhat´o ´ert´ekeit megszor´ıt´asok (facet) form´aj´aban Pl. min. max. ´ert´ek: <xs:element name=”ev”> <xs:simpleType> <xs:restriction base=”xs:integer”> <xs:minInclusive value=”1990”/> <xs:maxInclusive value=”2007”/>
XSL
XML
(DTD)
(XSD)
DOM
SAX
m´as megszor´ıt´asok: felsorol´as: <xs:enumeration value=”ertek”/> regul´aris kifejez´es: pl. <xs:pattern value=”[a-z]”/> feh´er karakterekre vonatkoz´ o megszor´ıt´asok: <xs:whiteSpace value=”preserve|replace|collapse”/> hosszra vonatkoz´o megszor´ıt´asok: <xs:length value=”6”/> (minLength, maxLength) stb. az egyszer˝ u t´ıpushoz rendelhet¨ unk nevet (name attrib´ utum), ekkor el´erhet˝o lesz m´as elem sz´am´ara is
XSL
XML
(DTD)
(XSD)
DOM
SAX
¨ Osszetett (komplex) elemt´ıpus: m´as be´agyazott elemeket ´es/vagy attrib´ utumokat is tartalmaz´o elemek ¨osszetett elem-t´ıpusok: u ¨res (t¨orzs n´elk¨ uli) elemek csak m´as be´agyazott elemeket tartalmaz´ o elemek csak sz¨oveget tartalmaz´ o elemek sz¨oveget, illetve m´as elemeket is tartalmaz´ o elemek – mindeniknek lehet attrib´ utuma is illetve elemek seg´ıts´eg´evel kib˝ov´ıthet˝ov´e tehetj¨ uk a dokumentumot
XSL
XML
(DTD)
(XSD)
DOM
SAX
¨ Osszetett elem defin´ıci´oja (pl.): <xs:element name=”ar”> <xs:complexType> <xs:sequence> <xs:element name=”penznem” type=”xs:string”/> <xs:element name=”ertek” type=”xs:integer”/> a sequence elem meghat´arozza, hogy a felsorolt be´agyazott elemek a megadott sorrendben kell szerepeljenek itt is rendelhet¨ unk nevet az ¨ osszetett t´ıpushoz m´ar defini´alt ¨osszetett t´ıpus kiterjeszthet˝ o tov´abbi elemekkel, illetve attrib´ utumokkal
XSL
XML
(DTD)
(XSD)
DOM
SAX
Indik´atorok sorrendet meghat´aroz´o indik´atorok: All – a be´agyazott elemek b´armilyen sorrendben el˝ofordulhatnak Choice – egyik vagy m´asik Sequence – az elemek csak a megadott sorrendben fordulhatnak el˝o el˝ofordul´ast meghat´aroz´o indik´atorok: maxOccurs minOccurs csoport indik´atorok: – csoportos´ıthatjuk az egyes elemeket illetve attrib´ utumokat: Group name attributeGroup name
XSL
XML
(DTD)
(XSD)
DOM
SAX
XML feldolgoz´ok (parser) – DOM XML DOM: XML Document Object Model – az XML dokumentumok feldolgoz´as´ahoz biztos´ıt egy standard API-t. a DOM az XML dokumentumot egy fa-szerkezet form´aj´aban ´abr´azolja, melynek csom´ opontjai az elemek, attrib´ utumok, illetve sz¨ovegr´eszek.
XSL
XML
(DTD)
(XSD)
DOM
SAX
jellemz˝ok: az XML DOM (Document Object Model for XML) – objektum modellt defini´al az XML dokumentumhoz az XML DOM platform- illetve nyelvf¨ uggetlen az XML DOM standard hozz´af´er´esm´ odot biztos´ıt az XML dokumentumokhoz (olvas´as, m´ odos´ıt´as) az XML DOM W3C standard hozz´af´er´es az egyes csom´ opontokhoz: getElementsByTagName(”tag-nev”) met´ odus seg´ıts´eg´evel – csom´opontok list´aj´at t´er´ıti vissza parentNode, firstChild, lastChild mez˝ oket haszn´alva gy¨ok´er elem: document.documentElement
XSL
XML
(DTD)
(XSD)
DOM
SAX
inform´aci´o az illet˝o csom´ opontr´ ol az al´abbi mez˝ okben: nodeName nodeValue nodeType egy elem attributes mez˝ oje az attrib´ utumokat tartalmazza map form´aj´aban (NamedNodeMap) l´asd pl. DomParserExample, XMLCreatorExample
XSL
XML
(DTD)
(XSD)
DOM
SAX
XML feldolgoz´ok (parser) – SAX SAX – Simple API for XML: XML dokumentumok szekvenci´alis feldolgoz´as´ara szolg´al´o API. a DOM egy igen elterjedt alternat´ıv´aja a DOM-t´ol elt´er˝oen nincs neki megfelel˝ o form´alis specifik´aci´o (a Java implement´aci´ ot tekintik ir´anymutat´ onak a SAX-ot implement´al´o t¨obbi platformok) SAX feldolgoz´o (parser) Egy SAX-ot implement´al´ o feldolgoz´ o adatfolyam feldolgoz´ok´ent (parser) m˝ uk¨odik, esem´enyvez´erelt API-val. Az egyes esem´enyekre a felhaszn´al´ o ´altal defini´alt u ´n. “callback”met´odusokat fogja megh´ıvni a feldogoz´ o. A feldolgoz´as egyir´any´ u: a m´ar feldolgozott adatot nem lehet u ´jraolvasni (csak ha u ´jrakezdj¨ uk a feldolgoz´ast)
XSL
XML
(DTD)
(XSD)
DOM
SAX
SAX
SAX esem´enyek: Egy-egy esem´eny gener´al´ odik az al´abbi elemek feldolgoz´as´anak kezdet´en illetve v´eg´en: sz¨oveget tartalmaz´o XML csom´ opontok (Text nodes) XML elem csom´opontok XML feldolgoz´o utas´ıt´asok XML megjegyz´esek az attrib´ utumok az elemet feldolgoz´ o megfelel˝ o callback met´odus param´eterek´ent lesznek el´erhet˝ oek
XSL
XML
(DTD)
(XSD)
DOM
SAX
el˝ony¨ok a DOM-al szemben: l´enyegesen kevesebb mem´ ori´at vesz ig´enybe, mint a DOM (ennek eset´eben a teljes fastrukt´ ur´at tartalmaz´ o objektum bet¨olt˝odik a mem´ori´aba) gyorsabb feldolgoz´ast tesz lehet˝ ov´e ha a dokumentum m´erete akkora, hogy a neki megfelel˝o objektum nem f´erne be a mem´ ori´aba, akkor DOM-al nem dolgozhat´o fel h´atr´anyok a DOM-al szemben: SAX-al nem tudjuk m´ odos´ıtani/lementeni a forr´as XML ´allom´anyt, csak szekvenci´alisan feldolgozni ezzel szemben DOM-al b´armikor hozz´af´erhet˝ o b´armelyik csom´opont, m´odos´ıthat´o, illetve file-ba lementhet˝ o l´asd pl. SAXParserExample
XSL
XML
(DTD)
(XSD)
DOM
SAX
XSL
XSL – EXtensible Stylesheet Language XML alap´ u st´ılus´allom´any egy XSL ´allom´any le´ırja, hogy az XML dokumentumot hogyan kell megjelen´ıteni AZ XSL t¨obb, mint st´ılus-le´ır´ o nyelv az XSL h´arom r´eszb˝ol ´all: XSLT - az XML dokumentumok transzform´al´as´ara szolg´al´o nyelv XPath - XML dokumentumok bej´ar´as´ara, lek´erdez´es´ere szolg´al´o nyelv XSL-FO - XML dokumentumok form´az´as´ara szolg´al´o nyelv
XSL
XML
(DTD)
(XSD)
DOM
SAX
XPath
XPath
az XPath - az XML dokumentumok bej´ar´as´at, adatok lek´erdez´es´et lehet˝ov´e tev˝o nyelv. az XPath jellemz˝oi: az XPath egy szintaxist ad az XML dokumentumok egyes r´eszeinek meghat´aroz´as´ara kifejez´eseket haszn´al az XML dokumentum bej´ar´as´ara tartalmaz egy standard f¨ uggv´enyk¨ onyvt´arat az XPath is W3C standard
XSL
XML
(DTD)
(XSD)
DOM
SAX
XPath
XPath el´er´esi utat megad´ o kifejez´esek (Path Expressions): az XPath kifejez´eseket haszn´al az egyes csom´ opontok vagy csom´opont-halmazok el´er´es´ere/kiv´alaszt´as´ara XPath standard f¨ uggv´enyek t¨ obb, mint 100 be´ep´ıtett f¨ uggv´enyt haszn´al (string-´ert´ekek, numerikus adatok, d´atum, id˝ o feldolgoz´asa, stb.) csom´opont-t´ıpusok: elem, attrib´ utum, sz¨oveg, n´evt´er, feldolgoz´ o utas´ıt´as, megjegyz´es, document (gy¨ok´er) csom´ opont.
XSL
XML
(DTD)
(XSD)
DOM
XSLT
XSLT
Az XSLT az XML dokumentumok XHTML vagy m´as XML dokumentumm´a val´o transzform´al´as´at teszi lehet˝ ov´e. XSLT jellemz˝oi: XSLT – XSL Transformations (XSL ´atalak´ıt´asok) az XSL legfontosabb r´esze XPath-ot haszn´al az XML dokumentumok bej´ar´as´ara W3C aj´anl´as (1999. novembert˝ ol) fogalmazhatunk u ´gy, hogy az XSLT az XML forr´as-f´at ´attranszform´alja egy XML eredm´eny-f´av´a
SAX
XSL
XML
(DTD)
(XSD)
DOM
SAX
XSLT
m˝ uk¨od´esi elve: a transzform´aci´o sor´an az XSLT az XPath-ot haszn´alja arra, hogy meghat´arozza a forr´as dokumentum azon r´eszeit, melyek egy vagy t¨ obb el˝oredefini´alt sablonra (template) illeszkednek illeszked´es eset´en az XSLT ´attranszform´alja a forr´as dokumentum illeszked˝o r´esz´et az eredm´eny dokumentumm´a XSL deklar´aci´o: < xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > vagy: < xsl:transform version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
XSL
XML
(DTD)
(XSD)
DOM
SAX
XSLT
Egy XSL st´ılus´allom´any szab´alyok ¨ osszess´eg´eb˝ ol ´ep¨ ul fel – ezeket sablonoknak (template) nevezz¨ uk. Az egyes sablonok arra vonatkoz´ o szab´alyokat tartalmaznak, hogy mi t¨ort´enjen, ha egy illeszked˝ o csom´ opontot tal´alunk. Az <xsl:template> elem Az <xsl:template> elem seg´ıts´eg´evel hat´arozhatunk meg egy sablont. A match attrib´ utum seg´ıts´eg´evel feleltethet¨ unk meg egy sablont egy XML elemmel. Szint´en a match attrib´ utum seg´ıts´eg´evel lehet megadni a teljes XML dokumentumra illeszked˝ o sablont (match=”/”).
XSL
XML
(DTD)
(XSD)
DOM
SAX
XSLT
a <xsl:value-of> elem A <xsl:value-of> elemet haszn´aljuk arra, hogy egy csom´opont ´ert´ek´et kinyerj¨ uk <xsl:for-each> elem A <xsl:for-each> elem lehet˝ ov´e teszi, hogy ciklusban hajtsuk v´egre a transzform´aci´ot. a kimenetet sz˝ urhetj¨ uk az´altal, hogy k¨ ul¨ onb¨ oz˝ o krit´eriumokat rendel¨ unk a select attrib´ utumhoz a <xsl:for-each> elemen bel¨ ul: <xsl:for-each select=”catalog/cd[artist=’Gryllus Vilmos’]”> ´ enyes sz˝ Erv´ ur˝o (filter) m˝ uveletek: = != < (kisebb) > (nagyobb)
XSL
XML
(DTD)
(XSD)
DOM
SAX
XSLT
<xsl:sort> elem A kimenet rendez´ese a <xsl:sort> elem seg´ıts´eg´evel t¨ ort´enik (az <xsl:for-each> elemen bel¨ ul). <xsl:if> elem Az <xsl:if> elem seg´ıts´eg´evel valamilyn felt´etelt szabhatunk az XML tartalm´aval kapcsolatban. <xsl:if test="expression"> ...szoveg amennyiben a kifejezes igaz ...
XSL
XML
(DTD)
(XSD)
DOM
SAX
XSLT
<xsl:choose> elem Az <xsl:choose> elemet egy¨ utt haszn´aljuk az <xsl:when> ´es <xsl:otherwise> elemekkel. <xsl:apply-templates> elem Az <xsl:apply-templates> elem alkalmazza a sablont az aktu´alis elemre vagy ennek gyerek-csom´ opontjaira. l´asd pl. SimpleXSLTTransform, SimpleTransformXSLTServlet
XSL
XML
(DTD)
(XSD)
DOM
SAX
XSLT
Tipp Web-alkalmaz´asban val´ o haszn´alatra: HTML-t gener´alhatunk szerver oldalon XSLT seg´ıts´eg´evel – adatok megmutat´as´ara (pl. report gener´al´as), form gener´al´as´ara is haszn´alhat´o XML Editor-ok A specializ´alt XML szerkeszt˝ ok seg´ıtenek a hibamentes XML dokumentumok szerkeszt´es´eben XML ´erv´enyess´eg´enek vizsg´alat´aban r´ak´enyszer´ıthetnek, hogy egy megadott XML strukt´ ura szab´alyait betartsuk pl. XMLSpy, XMLNotepad 2007 (XML szerkeszt˝ ok)
XSL