XML adatkezelés 1. témakör Az XML szabvány
XML kialakulása A jelölő nyelvek közés tartozik Története: - 1967: Tunnicliffe tanulmánya (tartalom és formátum) - 1969: GML: Generalized Markup Language (formátum orientált) - 1983: SGML: Standard Generalized Markup Language (ANSI) - 1993: HTML HyperText Markup Language (WEB) - 1998: XML (eXtensible Markup Language) Távoli rokonok: - LaTEX - LSE
- jelölő elemeket használ - moduláris szerkezetű a dokumentum XML kialakulása SGL jellemzése - jelölő elemeket használ - moduláris szerkezetű a dokumentum - külön sémaleírás (DTD) chapter> <chptitle>SQL SELECT szintaktikája</chptitle> <para>A SELECT parancs célja a relációkban tárolt adatok hatékony lekérdezése... </para> <para>A GROUP BY elemmel a csoportképzésre utalunk...</para> </chapter> <!ELEMENT chapter (chptitle, (para | heading)+) >
XML kialakulása XML az SGML-ből jött létre: - egyszerűbb , elhagyott számos elemet - szabadabb tartalom, nincs fix elem - szigorúbb szerkezetű - hatékonyabban kezelhető - számos feldolgozó program fejlődött ki (W3C, MS) Kapcsolódó szabványok (állandóan gyarapodik) - SAX - DOM - XPath - DTD - XMLSchema - XSL - XQuery
XML jellemzői - hordohatóság és plattform-függetlenség; - hatékony alkalmazhatóság az Internet-en; - támogassa az alkalmazások mind szélesebb körét; - részleges kompatíbilitás az SGML szabvánnyal; - az XML nyelv legyen egyszerű szerkezetű; - minnél kevesebb opcionális elemet tartalmazzon; - könnyen lehessen programozni XML feldolgozó programokat; - XML dokumentum legyen a felhasználó által is érthető, olvasható formátumú; - legyenek eszközök a struktúra gyors megtervezésére; - az XML szabvány legyen tiszta, a helyesség formálisan is igazolható legyen; - legyenek eszközök az XML dokumentumok hatékony elkészítésére; - nem fontos a tömörség, rövidség, fontosabb az olvashatóság biztosítása.
XML szerkezete - logikai szerkezet - fizikai szerkezet dokumentum := prolog jelölő_elem egyéb* Elemek típusai: - jelölő elem - feldolgozási utasítás - megjegyzés Az elemek megadása elemtagokkal történik A prolog feldolgozás előtti utasítást jelent Normalizálás: minden szeparáló szövegrész egy karakter hoszú
Helyesen formált dokumentum Egyetlen fő, gyökér jelölő elem létezik Jelölő elemek formátuma: - kéttagú elem: <tagnév …> tartalom </tagnév> - egytagú elem: <tagnév .. /> Azelem neve tetszőleges Jelölő elemek egymásba ágyazhatók, de átlapolás nem lehet feldolgozási utasítás elem alakja: <?kezelő …. ?> megjegyzés elem alakja: <!-- …. -->
Helyesen formált dokumentum A prolog egy <?xml version=“..” .. ?> elemet tartalmaz Az elemekhez elemjellemzők rendelhetők Elemjellemző alakja: <tag .. jellemző_neve=“érték” ..> <?xml version=”1.0" ?> <!-- ez egy minta KL:2007.07.01 --> <könyvek> <könyv ikod="2"> <cim> Adatkezelési alapok </cim> <ev>2003</ev> <olvasoterem/> </könyv> </könyvek>
Speciális karakterek kezelése Karakter-készlet kibővítése: helyettesító szimbólumok (egyedek) Előre definiált helyettesítő jelek: < : < > : > & : & amp; ' : ' " : " Hosszabb egyedi karaktersorozat: <![CDATA[ szöveg ]]> Tetszőleges karakter: &#nnn;
Speciális karakterek kezelése <?xml version="1.0" ?> <forrasok> <rutin nev="fv1"> main() { if (this->setA() < 0 && x < X) { strcpy (valasz,"Alacsony ertek"); } </rutin> <rutin nev="fv2"> <![CDATA[ if (this->setA() < 0 && x < X) { strcpy (valasz,"Alacsony ertek"); ]]> </forrasok>
Névterek használata A felhasználók maguk jelölhetik ki az elemek neveit Az elemnév önmagában nem elegendő egyértelmű azonosításra a hononímák miatt Megoldás: a név kibővítése a feldolgozó azonosításval Névtér: a feldolgozó program azonosítója Névtér szokásos alakja: URI Egy dokumentumban több névtér is élhet A névterek elemhez kötése alias nevekkel történik
Névtér és alias összekötése: <tagnév … xmlns:alias=“URI” … > Névterek használata Névtér és alias összekötése: <tagnév … xmlns:alias=“URI” … > Névtér kötése elemhez: <alias:tagnév ….> … </alias:tagnév> Névtér kötése elemjellemzőhöz: <tagnév … alias:jellemző=“érték” …> http://www.w3.org/2000/10/XMLSchema : W3C XMLSchema névtere http://www.w3.org/1999/XSL/Transform : XSL feldolgozó névtere http://www.w3.org/1999/xlink : XLink feldolgozó névtere
Névterek használata Van alapértelmezési névtér is, ahol az alias üres karakter(nincs) Névtér és alias összekötése: <tagnév … xmlns =“URI” … > Alapértelmezési névtér kötése: <tagnév ….> … </tagnév> <tagnév … jellemző=“érték” …> Az aliasnév érvényességi köre azon elemre és annak befoglalt elemeire terjed ki, amelyben definiálták. Egy belső elemben a kívül értelmezett aliasnév felülírható egy új értelmezéssel
Névterek használata <ktar:konyvek xmlns:kt='http://iit.uni-miskolc.hu/kovacs/konyvtar’ xmlns:vir='http://uni-miskolc.hu/nyilvanartas' xmlns='http://iit.uni-miskolc.hu/root'> <ktar:konyv id='1'> <ktar:ISBN> I11233 </ktar:ISBN> <vir:olvaso> UZI234 <uid> olg45 </uid> </vir:olvaso> <vir:nkod xmlns:vir='http://uni-miskolc.hu/neptun'> OPUZT7 </vir:nkod> </ktar:konyv> <ktar:konyv id='3'> <ktar:ISBN> TF7671 </ktar:ISBN> <vir:olvaso> JII781 <uid> z78hz </uid> </vir:olvaso> LOP86J </vir:nkod> </ktar:konyvek>
HTML és XML viszonya - HTML rögzített elemnevek (HR, BR, TABLE,…) - HTML-ben a jellemző értéke szabadon megadható - HTML-ben nem kötelező a lezáró tag - HTML-ben lehet átlapolás - HTML-ben hiányzó feldolgozási utasítás XHTML: a HTML átalakítása XML szabványra
Az XHTML szabványos XML dokumentum <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/css" href="http://www.w3.org/MarkUp/style/xhtml2.css"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 2.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml2.dtd"> <html xmlns="http://www.w3.org/2002/06/xhtml2/" xml:lang="en" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.w3.org/2002/06/xhtml2/ http://www.w3.org/MarkUp/SCHEMA/xhtml2.xsd" > <head> <title>Virtual Library</title> </head> <body> <p>Moved to <a href="http://example.org/">example.org</a>. </p> </body> </html>
XHTML elemei Elemek: Dokumentum felépítés body, head, html, title Struktúra: address, blockcode, block quote, div, hn, p, pre, section, separator Szövegkezelés: abbr, cite, code, dfn, em, kbd, l, q, samp, span, strong, sub, sup, var Lista: dl, dt, dd, label, nl, ol, ul, li Hypertext: a Táblázat: caption, col, cplgroup, summary, table, tbody, td, tfoot, th, tr Metaadatok: meta, link, object, param, standby Jellemzők: xml:lang, edit, src, style, datatype, about, src, dir, rel, property, class, id,
Szerző címe: <address href="mailto:webmaster@example.net">Webmaster</address> Programkód: <blockcode class="Perl"> sub squareFn { my $var = shift; return $var * $var ; } </blockcode> Idézet: <blockquote cite="http://www.example.com/tolkien/twotowers.html"> <p>They went in single fed and blackened as they passed.</p> </blockquote> Tetszőleges tagolás: <body> <h>The meaning of life</h> <p>By Huntington B. Snark</p> <div class="slide"> <h>What do I mean by "life"</h> <p>....</p> </div> <h>What do I mean by "mean"?</h> ... </div> ... </body>
Címsorok és szöveblokkok: <body> <h>This is a top level heading</h> <p>....</p> <section> <p>....</p> <h>This is a second-level heading</h> </section> Indexek: H<sub >2</sub>O Input billentyűzés kérés: To exit, type <kbd>QUIT</kbd>. Bekezdések, listák: <p>Payment options include: <ul> <li>cash</li> <li>credit card</li> <li>luncheon vouchers.</li> </ul> </p> Sorokra bontáés: <blockcode class="program"> <l>program p(input, output);</l> <l>begin</l> Nem formázandó rész: <pre> If I had any talent I would be a poet </pre> Válaszvonal: <p>This is some lead in text</p> <separator /> <p>This is some additional, but separate text.</p>
Rövidítés: <abbr full="Limited">Ltd.</abbr> Hivatkozás: As Gandalf the White said in <cite cite="http://www.example.com/bs/the_two_towers">The Two Towers</cite>, <quote xml:lang="en"> "The hospitality of your hall is somewhat lessened of late, Theoden King."</quote> Kód és változó: The Pascal statement <code>i := 1;</code> assigns the literal value one to the variable <var>i</var>. Definíció: <p role="definition"> An <dfn id="def-acronym">acronym</dfn> is a word formed from the … </p> Kiemelés: Do <em>not</em> phone before 9 a.m.
Handler (kezelő): html xmlns="http://www.w3.org/2002/06/xhtml2" xml:lang="en"> <head> <title>A document with a handler</title> <handler type="text/x-vbscript" src="http://example.org/progs/vbcalc"> <handler type="text/javascript"> ...some inline JavaScript... </handler> </handler> </head> <body> <handler type="text/x-perl"> ... some Perl script ... </handler> </body> </html> Hivatkozás leírók: <head> <title>Chapter 2</title> <link rel="index" href="../i1.html"/> <link rel="next" href="Ch3.html"/> <link rel="prev" href="Ch1.html"/> </head> Külső objekltum behozatala: <object src="http://www.e.c/f.jpg" srctype="image/jpeg"> <em>alternate text</em> </object>