Az XML alapnyelv. dr. Paller Gábor. XML technológiák

Hasonló dokumentumok
Dokumentumformátumok Jelölő nyelvek XML XML. Sass Bálint Bevezetés a nyelvtechnológiába 2. gyakorlat szeptember 20.

XML alapú adatbázis-kezelés. (Katona Endre diái alapján)

DTD Dokumentumtípus definició

Az XML szabvány. Az XML rövid története. Az XML szabvány

Az XML alapjai BME VIK BSc. Intelligens Rendszerek ágazat, Kooperatív rendszerek labor

XML és XSLT (a színfalak mögül)

Az XML 1.0 szabvány. tanulmány. Készítette: Mészáros Tamás. Budapest, BME Méréstechnika és Információs Rendszerek Tanszék

Az XML Bevezetés. Fabók Zsolt Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Utolsó módosítás:

Az XML kidolgozásakor a fejlesztés szempontjait tíz pontban foglalták össze:

A szoftver és hardverfüggetlen adatbázis

Az XML dokumentumok adatmodellje

Web-fejlesztés NGM_IN002_1

XML (DTD) (XSD) DOM SAX XSL. XML feldolgozás

Orvos Bejelentő Program (OBP) rekordkép 2. verzió XML formátum

XML. Document Type Definitions (DTD) XML séma

Zenetár a webszerverünkön,

1. Az XML és XHTML nyelvek. Az XML leíró nyelv Szabályok XHTML írásra. Tartalom Az XML leíró nyelv

XML sémanyelvek Jeszenszky, Péter

XML 1.1 és névterületek

az XML egy leírónyelv, másnéven meta-nyelv, mely segítségével új nyelveket írhatunk le egy XML dokumentum egy ilyen nyelvnek a példánya, a formális

HTML. Dr. Nyéki Lajos 2016

KML Keyhole Markup Language

34. Elsődleges kulcs megadása XMLSchema-ban Idegen kulcs megadása XMLSchema-ban Típusok kategóriái és saját típus megadásának

(statikus) HTML (XHTML) oldalak, stíluslapok

XPath. dr. Paller Gábor. XML technológiák

3. SZÁMÚ MELLÉKLET. Elektronikus számla - XML definíciók. a) Számla. 1. ábra Számla

EXtensible Markup Language (XML) 1.0 XML 1.0. Az angol változat nyersfordítása. Készült az Elektronikus Kereskedelmi Fórumban

Web-fejlesztés NGM_IN002_1

Web programozás I. 4. előadás

ColourSMS Protokol definíció. Version 1.2

XML az Extensible Markup Language (Kiterjeszthet jelöl nyelv) szavak rövidítése. XML a World Wide Web Konzorcium (W3C) ajánlása, amely kompatíbilis

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

(statikus) HTML (XHTML) oldalak, stíluslapok

XML. XML dokumentumok alapszerkezete. XML ( / ) 5

Java II. I A Java programozási nyelv alapelemei

HTML, XML szerkesztés

Félig-strukturált adatmodell (Semi-structured data model)

HTML és CSS. Horváth Árpád május 6. Óbudai Egyetem Alba Regia M szaki Kar (AMK) Székesfehérvár

WEB TECHNOLÓGIÁK 2.ELŐADÁS

Az intézeti kérdıív kezelı rendszer dokumentációja

Aspektus-orientált nyelvek XML reprezentációja. Kincses Róbert Debreceni Egyetem, Informatikai Intézet

ArcGIS Desktop QGIS GRASS AutoCAD Map ITR. Op. rendszer Win Linux, Win, OSX Unix, CygWin, (Win) Win korábban DOS, Win. GRASS specific GDAL/OGR

DocBook útmutató. Jeszenszky Péter Debreceni Egyetem, Informatikai Kar

Az XML-DTD áttekintése

Programozási nyelvek (ADA)

XML sémák, adatmodellezés

Programozás III BEVEZETÉS. Sok adatkezeléssel kapcsolatos feladat van. a/ Adatok fájlban. b/ Adatbázisban

Üzenet váltási formátumok EDI és XML

Adatkezelési mőveletek az XML nyelvben XQuery - XML dokumentumok lekérdezésére szolgáló lekérdezınyelv kifejezı ereje az OQL nyelvével egyenértékő.

Multimédia 2017/2018 II.

XML / CSV specifikáció

Bevezetés: az SQL-be

Szerializáció. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) Szerializáció / 22

Adatbázisok II. Jánosi-Rancz Katalin Tünde 327A

Adatbázis rendszerek 7. előadás State of the art

A webprogramozás alapjai. Óbudai Egyetem Neumann János Informatikai Kar 2018/19/1 szemeszter

Webszolgáltatások (WS)

Térinformatikai (GIS) és CAD adatmodellek és adatformátumok Digitális térképek előállítási technológiái, metaadatok szerepe

Modellinformációk szabványos cseréje. Papp Ágnes, Debreceni Egyetem EFK

XML / CSV specifikáció

Web-fejlesztés NGM_IN002_1

Java II. I A Java programozási nyelv alapelemei

Ingrid Signo Felhasználói kézikönyv. Pénztári használatra

XML EXtensible Markup Language

GS Pláza API dokumentáció

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

Szerver oldali Java programozás /II. 1. óra. Elemkönyvtárak. Elemkönyvtárak használata Saját elemkönyvtár készítése.

3. SZÁMÚ MELLÉKLET. Elektronikus számla - XML definíciók. a) Számla. 1. ábra Számla

Adatexport útmutató Könyvvizsgálói program számára átadott adatok XML formátumban


ADATBÁZIS-KEZELÉS - BEVEZETŐ - Tarcsi Ádám, ade@inf.elte.hu

Intelligens közlekedési rendszerek (ITS)

Ed. Version 1.2. Az XML nyelv. Az XML nyelv. Győri László munkája. Ed. Version 1.2

Javadoc. Dokumentációs megjegyzés (2) Dokumentációs megjegyzés (1) Dokumentációs megjegyzés felépítése

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

H N S A d a t K a p c s o l a t

30 MB INFORMATIKAI PROJEKTELLENŐR

XmlGessünk 13. rész - Az XML Schema II.

Lekérdezések az SQL SELECT utasítással

Az adatok a vállalat kulcsfontosságú erőforrásai. Az információs rendszer adatai kezelésének két alapvető változata:

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

JCL eljárások Tanfolyami jegyzet. ICSS Kft 2012

Felhasználói kézikönyv

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

XML adatkezelés I. Az SAX szabvány. Dr. Kovács László Miskolci Egyetem Általános Informatikai Tanszék. XML adatok kezelési lehetőségei

Debreceni Egyetem Informatikai Kar

A kibővített Magyar történeti szövegtár új keresőfelülete

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

XPath 1.0. Jeszenszky Péter Debreceni Egyetem, Informatikai Kar Utolsó módosítás: szeptember 5.

Miskolci Egyetem. Műszaki kommunikáció. Vizsga-jegyzet. Hegedűs Ádám Imre

HTML kódok. A www jelentése World Wide Web.

Programozási nyelvek Java

2017/01/27 08:59 1/6 Gettext Rendszer

Kompozit alkalmazások fejlesztése. IBM WebSphere Portal Server

Tájékoztató. Használható segédeszköz: -

Programozási nyelvek II. JAVA

Bánsághi Anna

Egészítsük ki a Drupal-t. Drupal modul fejlesztés

Java. Perzisztencia. ANTAL Margit. Java Persistence API. Object Relational Mapping. Perzisztencia. Entity components. ANTAL Margit.

Átírás:

Az XML alapnyelv dr. Paller Gábor

Az XML gyökerei 1969: egy IBM kutatási projekt kifejleszti a GML-t (Generalized Markup Language). A GML már rendelkezik azzal a képességgel, hogy dokumentumformátumok metanyelve legyen (tehát le lehessen benne írni dokumentumformátumokat). 1980: első ISO szabvány az SGML-ről (Standard Generalized Markup Language). 1983-ra az SGML ipari szabvány lett. Korlátozott elterjedtség jelentős bonyolultsága miatt. 1990-1992: Tim Berners-Lee az SGML-t használva hozza létre a legismertebb SGML-alapú dokumentumformátumot, a HTML-t. 1997-1999: A World Wide Web Consortium (W3C) a webre alkalmazza az SGMLt, amelyet túl bonyolultnak találnak közvetlen felhasználásra. Az eredmény az Extensible Markup Language (XML). 1998-2000: a Microsoft az XML-re építi a számítógépes rendszerek korlátlan összekapcsolhatóságát ígérő szabványát, amit Web Services néven népszerűsítenek. 1999-: a W3C az XML köré eszközök sorát építi fel az XML köré. Ezekkel bővebben megismerkedünk majd.

XML alapnyelv XML 1.0 specifikáció (4. kiadás): http://www.w3.org/tr/2006/rec-xml- 20060816/ Tetszőleges hierarchikus adatszerkezet leírására alkalmas Tartozik hozzá egy egyszerű adatformátum-leíró nyelv (DTD)

Szöveg és karakteradat Az XML dokumentum szövegből (text) áll. A szöveg szigorúan textuális. Char ::= #x9 #xa #xd [#x20-#xd7ff] [#xe000-#xfffd] [#x10000-#x10ffff] A szöveg vagy karakteradatot (character data), vagy markup-ot tartalmaz. A karakteradat nem tartalmazhat & és < karaktert, valamint kompatibilitási okokból > karaktert sem. Ezeket minden esetben vezérlőszekvenciákká kell alakítani (& < >). Ezen felül az &apos; (") és a " (') szekvenciákat definiálták. Bármely Unicode karakter használható numerikus karakterformátummal: &#xxx; (xxx a karakter hexadecimális kódja). Ez csak a beviteli eszköz korlátozásainak feloldására való, a karakternek továbbra is meg kell felelnie a Char megkötéseinek. A szövegben lehetnek szakaszok, amelyekre nem vonatkoznak a karakteradatok megszorításai. Ezek neve CDATA szekció és ezek belsejét az XML elemző nem dolgozza fel. Példa: <![CDATA[<greeting>Hello, world!</greeting>]]> A CDATA szekciók tartalma továbbra is Char! A szövegben levő "fehér karakterek" sorsát az alkalmazás dönti el, az XML elemző csak a markup-nál (ld. később) távolítja el azokat.

Markup A markup a dokumentum szerkezetét írja le és hatással lehet a feldolgozására. A legfontosabb markup elemek a tag-ek. A egy nyitó-záró tag egy elem-hez (element) tartozó adatokat határolja. Nyitó tag: <sometag> Záró tag: </sometag> Üres elem tag: <sometag/> Az XML metanyelv. A tag-eket és azok használatát mi definiáljuk (a definíció módjával még fájdalmas részletességgel foglalkozunk). A tag-ek szigorúan hierarchikus felépítésűek, egymásba ágyazás esetén a beágyazott tag-et előbb le kell zárni, mint a külsőt. <sometag>... <othertag>... </othertag>... </sometag>

Attribútumok A tag-hez tartozó adatszerkezet elemei: A tag tartalma (content): a nyitó és záró tag között levő szöveg (beleértve a beágyazott markup-ot is). A tag attribútumai, ha vannak. Példa: <etag parm1="hello" parm2="hallo">... </etag> Két attribútum (parm1, parm2)

Prológ Az XML dokumentumoknak a következő prológgal kell kezdődnie: <?xml version="1.0"?> Opcionálisan a prológ definiálhatja a szöveg karakterkódolását (UTF-8 az alapértelmezett): <?xml version="1.0" encoding="iso-8859-2"?> A prológban még dokumentumtípus-definíció is lehet, amely megadja a dokumentum formátumleíróját (részleteket később) Példa: <?xml version="1.0"?> <!DOCTYPE greeting SYSTEM "hello.dtd">

Kommentek Az XML dokumentumba kommentek helyezhetők. A kommentet a <! karaktersorozat nyitja és a --> karaktersorozat zárja. Komment nem tartalmazhat -- karaktersorozatot és csak Char-ból állhat. Viszont lehetnek benne XML elemek, például tag-ek. Az XML elemző figyelmen kívül hagyja a komment tartalmát, függetlenül a komment tartalmától. Példa: <!-- declarations for <head> & <body> -->

Feldolgozásvezérlés Az XML dokumentumok tartalmazhatnak utasításokat az őket feldolgozó alkalmazásoknak. Maga az XML alapnyelv ilyeneket nem definiál, csak a prológ formátuma hasonló. A feldolgozásvezérlő utasítás (processing instruction) formája a következő: <?instruction parameters...?> Az "instruction"-t célnak (target) is nevezik. Példa: (az XML stylesheet-hez kapcsolódó kiegészítő specifikációból) <?xml-stylesheet href="mystyle.css" type="text/css"?>

Document Type Definition Ismétlés: az XML metanyelv. Arra való, hogy tetszőleges adatstruktúrákat tartalmazó dokumentumformátumokat ill. ezeknek a formátumoknak megfelelő dokumentumokat hozzunk létre. A dokumentumformátum definiálása: Emberi nyelven írt specifikációval, amelyet aztán az XML dokumentum feldolgozása során a célra írt programmal kell ellenőrizni. Gép által feldolgozható formátumleíró nyelvvel, amely lehetővé teszi az XML feldolgozónak, hogy maga ellenőrizze a dokumentum formátumát. Az XML alapnyelv az SGML formátumleírójának egyszerűsített változatát nyújtja (Document Type Definition, DTD). Ezen felül az XML-hez a lényegesen bonyolultabb adatszerkezeteket leírni képes XML Schema formátumleíró nyelvet is létrehozták (később jön a tantárgy folyamán).

Helyesen formált és érvényes dokumentumok Egy XML dokumentum lehet Helyesen formált (well-formed), ha megfelel az XML általános nyelvi szabályainak (pl. prológ, a szöveg karakterei, speciális karakterek, tag-ek használata, stb.) Érvényes (valid), ha ezen felül megfelel egy DTD-nek is. Az érvényesség megállapításához a DTD-t a dokumentumhoz kell kapcsolni. Lehetőségek: DTD beágyazása a dokumentumba (a DOCTYPE első paramétere (greeting) a legfelső szintű tag-et határozza meg). <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE greeting [ <!ELEMENT greeting (#PCDATA)> ]> <greeting>hello, world!</greeting> DTD hivatkozása külső fájlból (URI hivatkozás lehetséges) <!DOCTYPE greeting SYSTEM "hello.dtd"> Ezek keverése is lehetséges: <!DOCTYPE rootelement SYSTEM "URIreference"[... declarations...]> DTD hivatkozása rendszerfüggetlen azonosítóval (ha a PUBLIC második paramétereként megadott DTD fájl nem elérhető, a PUBLIC első paramétere alapján keres egy lokális DTD fájlt): <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML//EN" "../dtds/chapter.dtd">

DTD: entitás deklarációk Az entitás (entity) egy makró-szerű konstrukció az XML-ben Lehet elemzett (parsed) vagy nem elemzett (unparsed). Az elemzett entitás kifejtésekor belekerül a szövegbe, tehát pl. a benne levő tag-eket az XML elemző feldolgozza. Entitások fajtái Belső entitás (internal entity) - ha az entitás a DTD fájlban van deklarálva. Külső entitás (external entity) - ha az entitás értéke egy másik, a külső entitás deklarációja által meghatározott fájlban tárolódik. Ez esetben a fájl tartalma az entitás hivatkozásakor beszúródik a szövegbe. Paraméter entitás (parameter entity) - csak DTD-ben használható és ott azonnal kifejtődik. Példák: Belső entitás: <!ENTITY Pub-Status "This is a pre-release of the specification."> Külső entitás: <!ENTITY open-hatch SYSTEM "http://www.textuality.com/boilerplate/openhatch.xml"> Paraméter entitás: <!ENTITY % personcontent "quote"> Entitás hivatkozása szövegben (ill. DTD-ben, ha paraméter entitás): &Pub-Status;

DTD: külső entitások (2) Külső entitás: elemzett vagy nem elemzett Elemzett: XML-nek kell lennie és az entitás kifejtésekor behelyettesítődik a szöveg adott helyén. Nem elemzett: bármilyen típusú lehet (bináris is), de csak XML tag-ek attribútumaiban lehet felhasználni őket hivatkozásként (ha az atrribútum entity típusú) Példák: Külső entitás XML tartalommal (elemzett) <!ENTITY chap1 SYSTEM "chap1.xml"> Külső entitás bináris tartalommal (nem elemzett): <!NOTATION gif SYSTEM "CompuServe Graphics Interchange Format 87a"> <!ENTITY hatch-pic SYSTEM "../grafix/openhatch.gif" NDATA gif >

Elemek definíciója Az elemeket a bennük található tartalommal definiáljuk. Ez a tartalom további elemek és a rájuk vonatkozó megkötések lehetnek Megköthető a benn foglalt elemek listája (szekvencia) vagy választási lehetőség (choice). Példák: A "spec" nevű elem belsejében a "front", "body" és "back" elemeknek kell lenniük, ebben a sorrendben. <!ELEMENT spec (front, body, back)> A "div1" nevű elem belsejében a "p", "list" vagy "note" elem található (egy és csak egy közülük) <!ELEMENT div1 (p list note)>

Elemek definíciója (2) Megkötések tehetők az elemek előfordulási számára. Példák: A "spec" nevű elem belsejében egy darab "front" és egy darab "body" elemnek kell lennie. Ezen felül egy "back" elem is lehetséges (0 vagy 1 darab) <!ELEMENT spec (front, body, back?)> A "div1" elem belsejében a "head" elem után tetszőleges számú "div2" elem lehet (0 vagy több) <!ELEMENT div1 (head, div2*)> A "div1" elem belsejében a "head" elem után legalább egy vagy több "div2" elem lehet (1 vagy több) <!ELEMENT div1 (head, div2+)> A megkötések listája zárójelezhető. Példa: a "div1" elem belsejében először egy "head" elemnek kell jönnie, majd "p", "list" és "note" elemek következhetnek. Opcionálisan az utolsó elemek "div2" típusúak lehetnek, de el is maradhatnak. <!ELEMENT div1 (head, (p list note)*, div2*)>

Elemek definíciója (3) Kevert tartalom: az elem tartalma karaktersorozatok és beágyazott elemek keveréke lehet. A beágyazott elemek sorrendje tetszőleges, de típusuk előírható. Példa: a "p" elem belsejében karaktersorozatok, valamint tetszőleges számú és sorrendű "a", "ul", "b", "i" és "em" elemek lehetnek. <!ELEMENT p (#PCDATA a ul b i em)*>

Elemek definíciója (4) Egy elem lehet kötelezően üres. Ekkor az elemnek nem lehet tartalma. Példa: csak a <br/> vagy <br></br> illeszkedik. <!ELEMENT br EMPTY> Dönthetünk úgy, hogy az elem tartalmának ellenőrzését kivonjuk a DTD validálás alól. Ekkor az elemnek bármilyen helyesen formált tartalma lehet, de a benne szereplő elemeknek mind szerepelnie kell a DTD-ben. Példa: <!ELEMENT container ANY>

Attribútumok definíciója Az elem attribútumait külön nyelvi szerkezetben definiáljuk, majd az elemhez kötjük. Attribútumok típusai: Felsorolás: az attribútum által felvehető karaktersorozatok felsorolása. Példa: (bullets ordered glossary) CDATA: karakteres adat: az attribútum értéke egy tetszőleges karaktersorozat. ID: karaktersorozat, amely az XML dokumentumban csak egyetlen attribútumnak lehet értéke (minden ID típusú attribútumnak más értéke kell legyen). IDREF: karaktersorozat, amely megegyezik egy ID attribútum értékével. IDREFS: IDREF felsorolás (elválasztókarakter: szóköz). ENTITY: nem elemzett külső entitás az érték ENTITIES: nem elemzett külső entitások listája (elválasztókarakter: szóköz) NMTOKEN: azonosító NMTOKENS: azonosítók listája NOTATION: az attribútum értékének meg kell felelnie egy NOTATION azonosítónak (pl. gif, 13. dia)

Attribútumok definíciója (2) Az attribútum lehet kötelező vagy opcionális. Kötelező attribútum: #REQUIRED Opcionális attribútum: #IMPLIED Előírt értékű: #FIXED. Az attribútum értékének kötelezően egy megadott értéknek kell lennie. Példák: A "termdef" elemnek két attribútuma van: az "id" nevű, amely kötelezően megadandó és ID típusú valamint a "name" nevű, amelyik tetszőleges karaktersorozat lehet és opcionális. <!ATTLIST termdef id ID #REQUIRED name CDATA #IMPLIED> A "list" elemnek egy attribútuma van, melynek neve "type". Ennek értéke "bullets", "ordered" vagy "glossary" lehet, az "ordered" érték alapértelmezett. <!ATTLIST list type (bullets ordered glossary) "ordered">

Feltételes szekciók A DTD egyes szekcióinak jelenléte feltételekhez köthető. Ha a feltétel INCLUDE, akkor a feltételes szekció megjelenik a DTD-ben, ha IGNORE, akkor nem. Példa: minthogy a "draft" paraméter-entitás van INCLUDE-ra állítva, a "book" elem tartalmazhat "comments" elemeket is. <!ENTITY % draft 'INCLUDE' > <!ENTITY % final 'IGNORE' > <![%draft;[ <!ELEMENT book (comments*, title, body, supplements?)> ]]> <![%final;[ <!ELEMENT book (title, body, supplements?)> ]]>

Gyakorlat Egy dokumentumban könyvek adatait tároljuk (0 vagy több könyv). Egy könyvnek címe, kiadási éve, kiadója, szerzői vannak (egy vagy több). Ezen felül rövid szöveges összefoglaló is megadható opcionálisan. Ezek az adatok ebben a sorrendben vannak megadva minden egyes könyvnél. Minden könyvnek ezen felül egyedi azonosítója is van. Tervezzen XML adatszerkezetet a könyv adatainak leírására és készítse el az adatszerkezetet validáló DTD-t!

books.xml <?xml version="1.0"?> <!DOCTYPE books SYSTEM "books.dtd"> <books> <book id="id1"> <title>my first XML book</title> <published>2001</published> <publisher><xml> Publishing, Inc.</publisher> <author>john Doe</author> <author>richard Doe</author> <abstract>xml for dummies</abstract> </book> <book id="xy2z"> <title>advanced XML book</title> <published>2002</published> <publisher><xml> Publishing, Inc.</publisher> <author>richard Doe</author> <abstract>hairy details about XML you never wanted to know</abstract> </book> </books>

books.dtd <!ELEMENT books (book)*> <!ELEMENT book (title,published,publisher,author+,abstract?)> <!ATTLIST book id ID #REQUIRED> <!ELEMENT title (#PCDATA)> <!ELEMENT published (#PCDATA)> <!ELEMENT publisher (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ELEMENT abstract (#PCDATA)>