You are on page 1of 48

Technologie XML

Pedn: Irena Mlnkov (mlynkova@ksi.mff.cuni.cz) - MFF Martin Neask (necasky@ksi.mff.cuni.cz) - MFF + FEL
Strnky pednky: MFF: http://www.ksi.mff.cuni.cz/~mlynkova/prg036/ FEL: http://www.ksi.mff.cuni.cz/~mlynkova/A7B36XML/

Organizace pednky, cvien, zkouky

MFF: http://www.ksi.mff.cuni.cz/~mlynkova/prg036/ FEL: http://www.ksi.mff.cuni.cz/~mlynkova/A7B36XML/

Osnova pedmtu
vod do princip formtu XML, pehled XML technologi Jazyk DTD Datov modely XML Rozhran DOM a SAX Jazyk XPath Jazyk XSLT Jazyk XQuery, XQuery Update Jazyk XML Schema Pehled standardnch XML formt Nativn XML databze Relan databze s XML rozenm SQL/XML

vod do princip formtu XML

Motivace
Chceme penst informaci Msto A Msto B

Nap.: chceme penst zprvu


Jan Amos, Karel Hynek Ahoj! Pozdrav z e div! Alenka P.S. Napite mi!

Jako nestrukturovan text?

Jan Amos, Karel Hynek Ahoj! Pozdrav z e div

Jako nestrukturovan text?

Karel Hynek Ahoj! Pozdrav z e div! Alenka P

Jako nestrukturovan text?

Ahoj! Pozdrav z e div! Alenka P.S. Napite

Jako nestrukturovan text?

Pozdrav z e div! Alenka P.S. Napite mi!

Jako nestrukturovan text?

Alenka P.S. Napite mi!

Jako nestrukturovan text?

Alenka P.S. Napite mi!

Jak ale (automatizovan) zjistit, kdo nm to vlastn pe?

Zavedeme konstrukci znaka (tag)


Poten znaka otevrac zvorka (start tag)

<znaka>tlo</znaka>

Koncov znaka zavrac zvorka (end tag)

Jednotliv sloky zprvy ozname


<adresa>Jan Amos</adresa> <adresa>Karel Hynek</adresa> <osloveni>Ahoj!</osloveni> <text>Pozdrav z e div!</text> <podpis>Alenka</podpis> <dodatek>Napite mi!</dodatek>
Data Metadata

A zabalme do zvorek
<zprava> <adresa>Jan Amos</adresa> <adresa>Karel Hynek</adresa> <osloveni>Ahoj!</osloveni> <text>Pozdrav z e div!</text> <podpis>Alenka</podpis> <dodatek>Napite mi!</dodatek> </zprava>

Obecn SW zpracovn

Pro zobrazen sprvnho textu prohleem to jet nesta

<zprava> <adresa>Jan Amos</adresa> <adresa>Karel Hynek</adresa> <osloveni>Ahoj!</osloveni> <text>Pozdrav z e div!</text> <podpis>Alenka</podpis> <dodatek>Napite mi!</dodatek> </zprava>

Mus se pidat informace


Formt:
XML + verze

Kdovn:
Implicitn je dokument v kdu ISO 10646 (Unicode) Pro komunikaci se svtem se pouv UTF-8 Kompatibiln s ASCII Dal znaky kdovny na 2 a 6-ti bytech Obsahuje vechny znaky vech abeced Pro etinu lze pout ISO-8859-2 nebo Windows-1250

Lep, ale

Zobrazen nen uivatelsky pvtiv Prohle zobrazuje data i metadata

Nap. transformujeme do HTML


<html encoding="windows-1250"> <head> <title>Zprva od: Alenka</title> </head> <body> <p>Jan Amos</p> <p>Karel Hynek</p> <p>Ahoj!</p> <p>Pozdrav z e div!</p> <p>Alenka</p> <p>Napite mi!</p> </body> </html>

Prohle te v co s daty

O co nm jde?
Samotn data se tko zpracovvaj Potebujeme:
??

Zajistit aby pslun program datm rozuml = doplnit vznam jednotlivch st

P. HTML popis vizualizace dat pro HTML prohle


Problm 1: Co kdy ns nezajm jen vizualizace? Problm 2: HTML m volnou strukturu Komplikuje zpracovn

een: XML

XML
XML (eXtensible Markup Language) je formt pro penos a vmnu obecnch dokument Extensible Markup Language (XML) 1.0 (Fifth Edition)
http://www.w3.org/TR/xml/

Extensible Markup Language (XML) 1.1 (Second Edition)


http://www.w3.org/TR/xml11/

XML je podmnoina (aplikace) SGML (Standard Generalized Markup Language - ISO 8879) Umouje ukldn a zpracovn dat spolu s metadaty XML se nezabv zpsobem prezentace dokument Je to syntaktick nstroj

XML dokument
XML dokument je sprvn formovan (wellformed), kdy:
M vodn XML deklaraci (prolog) Je dobe uzvorkovn
Kad element obsahuje poten i koncov tag/zvorku Odpovdajc zvorky maj stejn jmno (case sensitivity) <a></A> Dvojice zvorek se nek <a><b></a></b> Cel dokument je uzaven v jedinm koenovm elementu

Prolog
Informace pro SW, e se jedn o XML dokument Mus obsahovat deklaraci verze XML
Mme 1.0 a 1.1

Me osahovat informac o kdovn a samostatnosti dokumentu

Deklarace verze: <?xml version="1.1"?> Pokud nen v UTF-8: <?xml version="1.1" encoding="iso-8859-2"?> Pokud je bez odkaz mimo dokument: <?xml version="1.1" standalone="yes"?>
vdy mal psmena

Elementy
<?xml version="1.1" encoding="iso-8859-2"?> <zprava> Element s textovm <adresa> obsahem <jmeno>Jan Amos</jmeno> <ulice>Severn 12</ulice> </adresa> <osloveni>Ahoj!</osloveni> <text>Pozdrav z <it>e div</it>!</text> <podpis>Alenka</podpis> <priloha/> Element se smenm </zprava> obsahem
Przdn element Koenov element

Element s elementovm obsahem

<priloha></priloha>

Atributy
<?xml version="1.1" encoding="iso-8859-2"?> <zprava> <adresa> <jmeno>Jan Amos</jmeno> Element s <ulice>Severn 12</ulice> atributy </adresa> <osloveni>Ahoj!</osloveni> <text>Pozdrav z <it>e div</it>!</text> <podpis>Alenka</podpis> <priloha cesta="obr1.png"/> </zprava>
Nzev atributu Hodnota atributu

Dal prvky XML dokumentu


<?xml version="1.1" encoding="iso-8859-2"?> <zprava> <!- komu zprvu doruit? --> Koment <adresa>Jan Amos</adresa> <text> <![CDATA[ Sekce for (i=0; i < 10; ++) CDATA { document.writeln("<p>Ahoj</p>"); } Instrukce ]]> pro </text> zpracovn <podpis>Alenka</podpis> <datum><?php echo Date("d.m.Y")?></datum> </zprava>

Technologie XML
Nen to jen o tch zvorkch XML = zkladn formt pro popis dat
XML dokumenty

Technologie XML = rodina technologi pro zpracovn XML dat Popis ppustnho obsahu, naten dat, extrakce informac (dotazovn), vizualizace/transformace do jinch formt,
Standardy W3C (WWW Consortium)

Efektivn implementace standard Parsery, validtory, vyhodnocovn dotaz, transformace (aplikace skript), perzistence dat, Standardn formty XML dat Kde se XML vyuv
http://www.w3.org/

Technologie XML
XHTML UDDI XForms MathML SOAP SVG OpenTravel DocBook vyuit OpenDocument UBL

nativn XML DB

relan XML DB

SQL/XML

XSLT

perzistence transformace

parsing
SAX DOM StAX LINQ XML data

validace
DTD XML Schema RELAX NG Schematron

dotazovn
XPath

XQuery XQuery Update

Jazyk DTD

DTD
Problm: Sprvn formovanost nesta
Potebujeme omezit sadu znaek a jejich obsah

Definice typu dokumentu (Document Type Definition DTD) popisuje strukturu (gramatiku) dokumentu
Pomoc regulrnch vraz

Validn XML dokument = sprvn strukturovan dokument odpovdajc dan gramatice


Existuj i dal jazyky XML Schema, Schematron, RELAX NG,

Struktura validnho dokumentu


<?xml version="1.0" ?> Deklarace typu <!DOCTYPE koenov-element [ dokumentu ... ]> <koenov-element> ... </koenov-element>

Me bt intern (gramatika je pmo uvnit DOCTYPE) nebo extern (pouze odkaz na gramatiku uvedenou v externm souboru)
Intern nem moc vznam Oboj souasn je ppustn Lokln deklarace maj pednost ped externmi

Pklad: extern a intern DTD


<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE pozdrav [ <!ELEMENT pozdrav (#PCDATA)> ]> <pozdrav>Hello, world!</pozdrav> <?xml version="1.0"?> <!DOCTYPE pozdrav SYSTEM "pozdrav.dtd"> <pozdrav>Hello, world!</pozdrav> <?xml version="1.0"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> </html>
PUBLIC "veejn identifiktor" "URI"

Zkladn znaky DTD


Deklarace typu dokumentu ve velkmi psmeny!! <!DOCTYPE > Deklarace typu elementu <!ELEMENT > Deklarace seznamu atribut <!ATTLIST > Deklarace entity <!ENTITY > Deklarace notace <!NOTATION >

Deklarace typu elementu


<!ELEMENT rodic (potomek*)> <rodic> <potomek> ... </potomek> <potomek> ... </potomek> ... </rodic>

Nzev elementu + deklarace ppustnho obsahu


Przdn, libovoln, textov, smen, elementov

Deklarace typu elementu

, | ? + *

sekvence selekce iterace (0 nebo 1) iterace (1 a vce) iterace (0 a vce)

Przdn obsah <!ELEMENT priloha EMPTY> Libovoln obsah <!ELEMENT kontejner ANY> Textov obsah <!ELEMENT prijmeni (#PCDATA)> Smen obsah <!ELEMENT text (#PCDATA|it)*> Elementov obsah <!ELEMENT zprava (adresa,text)>
(nazev, (autor|editor)?, p*, (nadpis,p+)*)

Deklarace atributu
<!ATTLIST osoba cislo ID #REQUIRED zamestnan CDATA #FIXED "ano" dovolena (ano|ne) "ne">

Poad v dokumentu je libovoln

Atributy elementu osoba Atribut cislo je uniktn identifikace (ID) a je povinn (#REQUIRED) Atribut zamestnan obsahuje text (CDATA), je konstantn (#FIXED) a m implicitn nemnnou hodnotu ano Atribut typ je vet (ano nebo ne), implicitn hodnota je ne

Datov typy atribut


CDATA libovoln etzec znak Vtov typ ID jednoznan identifiktor (v rmci dokumentu), mus to bt etzec psmen, cifer a znak -, _, :, ., nejlpe v ASCII, mus zanat psmenem, nebo znakem _ IDREF odkaz na ID jinho elementu v rmci dokumentu IDREFS seznam odkaz oddlench mezerami NMTOKEN hodnota, tj. etzec podobn jako ID, kter ale me zanat cifrou a nen jednoznan NMTOKENS hodnoty ENTITY odkaz na extern entitu ENTITIES seznam odkaz viz dle

Poadavky na hodnoty atribut


#REQUIRED povinn atribut #IMPLIED nepovinn atribut #FIXED pevn hodnota atributu

Deklarace entity
Prakticky se vyuvaj pouze triviln ppady Asociace nzvu a hodnoty, kterou lze opakovan vyuvat Dlen 1: Parsovan = text, kterm je nahrazen odkaz na entitu a stv se soust XML dokumentu
Odkazujeme referencemi

Neparsovan = zdroj, jeho obsahem me bt cokoli (nap. binrn data - obrzek)


Odkazujeme atributem typu ENTITY/ENTITIES Mus s n bt asociovna notace

Dlen 2: Obecn v XML dokumentech Parametrick v DTD Dlen 3: Intern vs. extern

viz dle

Znakov entity
Monost vloen libovolnho znaku s danm kdem
Hexadecimln nebo decimln
Vyete nerovnost 3x &#x3C; 5

Peddefinovan entity pro speciln znaky


Vyete nerovnost 3x &lt; 5 & < > amp lt gt apos quot

Obecn entity
Intern entita
Pouit: Opakujc se sti XML dokument
<!ENTITY stav "pracovn verze"> <poznamka>Souasn stav dokumentu je &stav;</poznamka>

Extern parsovan entita


Pouit: Modularizace XML dokument
<!ENTITY xml-serial SYSTEM "xml-serial.txt">

Obecn entity
Extern neparsovan entita
Pouit: Odkaz na ne-XML data
nebo PUBLIC

<?xml version="1.0" encoding="windows-1250"?> <!DOCTYPE zprava [ Deklarace notace <!NOTATION avi SYSTEM "C:/Program Files/Video Player/Player.exe"> <!ENTITY video SYSTEM "video.avi" NDATA avi> <!ELEMENT video-dovo (#PCDATA)> <!ATTLIST video-dovo src ENTITY> ]> <zprava>Pikldm video z dovolen <video-dovo src="video"/>.</zprava>

Parametrick entity
Intern entita
Pouit: Opakujc se sti DTD
<!ELEMENT clanek (automobil*)> <!ENTITY % atributy "barva (modra|bila|cerna) #REQUIRED rychlost (velka|mala) #IMPLIED" > <!ELEMENT automobil (#PCDATA)> <!ATTLIST automobil %atributy; > <!ELEMENT motocykl (#PCDATA)> <!ATTLIST motocykl %atributy; > <!ELEMENT kolo (#PCDATA)> <!ATTLIST kolo %atributy; >

Parametrick entity
Extern entita
Pouit: Modularizace DTD <!ENTITY % ISOLat2 SYSTEM "iso-pub.ent"> ... %ISOLat2; ...

Podmnn sekce
<!ENTITY % draft 'INCLUDE' > <!ENTITY % final 'IGNORE' > <![%draft;[ <!ELEMENT book (comments*, title, body, supplements?)> ]]> <![%final;[ <!ELEMENT book (title, body, supplements?)> ]]>

DTD vt pklad
<?xml version="1.0" encoding="windows-1250"?> <!ELEMENT zamstnanci (osoba)+> <!ELEMENT osoba (jmno, email*, vztahy?)> <!ATTLIST osoba id ID #REQUIRED> <!ATTLIST osoba poznmka CDATA #IMPLIED> <!ATTLIST osoba dovolen (ano|ne) "ne"> <!ELEMENT jmno ((kestn, pjmen)|(pjmen, kestn))> <!ELEMENT kestn (#PCDATA)> <!ELEMENT pjmen (#PCDATA)> <!ELEMENT email (#PCDATA)> <!ELEMENT vztahy EMPTY> <!ATTLIST vztahy nadzen IDREF #IMPLIED> <!ATTLIST vztahy podzen IDREFS #IMPLIED>

Konec

You might also like