2. 2
Agenda
• Co je to XML?
• Přednosti a nedostatky XML
10 •
•
•
•
•
•
Nejčastější použití XML
Základy syntaxe
Prohlížení a kontrola XML dokumentů
Vzhled XML dokumentů
DTD a XML schémata
Jmenné prostory, prefixy
• Co je to XSL a XSLT?
• Internet, doporučená literatura
3. 3
Co je XML? Vymezení proti HTML a XHTML
HTML
• Definuje jednoduchý, pevně stanovený typ dokumentu
• Množina používaných značek je navržena tak, aby vyhovovala požadavkům na
běžné dokumenty >> nadpisy, odstavce, seznamy, obrázky apod.
• HTML umožňuje použití hypertextu a integraci multimedií
XML
• XML (eXtensible Markup Language) je rozšiřitelný značkovací jazyk
• Umožňuje definici vlastních typů dokumentů a přesně označuje význam jejich
jednotlivých částí, a ne jen jejich vzhled (jako HTML)
• Na rozdíl od jazyka HTML jde spíše o metajazyk
XHTML
• Je nástupcem HTML, používá XML syntaxi a má přísnější pravidla
• Validní XHTML dokument je i validním XML dokumentem!
4. 4
SGML , XML x HTML (XHTML)
• Oba jazyky (HTML a XML) vycházejí z mezinárodního standardu SGML
(norma ISO 8879, z roku 1986) pro popis struktury a obsahu různých druhů
elektronických dokumentů
• Značkovací jazyky vycházející ze SGML definují množinu značek (a jejich
vzájemných vztahů) pomocí tzv. definic typu dokumentu (DTD)
• XML není nástupcem ani konkurentem HTML!
• XML dokumenty samy o sobě nejsou (pro běžného uživatele) dost dobře
zobrazitelné, představují datovou základnu, ze které lze transformací vytvořit
něco, co se dá prezentovat uživateli v podobě HTML, WML, PDF nebo jinak
http://www.w3.org/
http://zvon.org/
5. 5
Mýty a předsudky o XML
Nejrůznějších bludů o XML je rozšířena celá řada
+ Je to moderní (revoluční) technologie, hodí se skoro na všechno
(XML je spása, XML jako univerzální kráječ)
+ Musíme to použít, protože to používá konkurence!
+ Když použijeme XML, budou naše aplikace kvalitnější!
– XML je jenom takové lepší HTML…
– XML je hodně „upovídaný“ jazyk, má příliš svazující pravidla!
– XML je pomalá a paměťově náročná technologie!
6. 6
Agenda
Co je to XML?
• Přednosti a nedostatky XML
10 • Nejčastější použití XML
• Základy syntaxe
• Prohlížení a kontrola XML dokumentů
• Vzhled XML dokumentů
• DTD a XML schémata
• Jmenné prostory, prefixy
• Co je to XSL a XSLT?
• Internet, doporučená literatura
7. 7
Přednosti XML
• Standardní formát pro výměnu a sdílení strukturovaných informací
• Je nezávislý na platformě
• Mezinárodní podpora (i jiné jazyky než angličtina)
• Informační obsah (přesné určení toho, co která část dokumentu znamená)
• Snadná konverze do dalších formátů (pomocí stylových jazyků – CSS, XSL apod.)
a pro různá cílová zařízení
• Automatická kontrola struktury dokumentu (prohlížeč se klasické HTML vždy
"pokusí" nějak interpretovat, XML ne)!
• Rozšiřuje možnosti relačních databází u složitě strukturovaných dat, která se
nedají dost dobře uložit do tabulek
• Přesné indexování a vyhledávání dokumentů a jejich částí
8. 8
Nedostatky XML
• XML umí být „pěkně ukecaný“ formát, jako všechny značkovací jazyky
• Je určen hlavně pro výměnu textových dat, nehodí se pro
▫ binární data
▫ velké objemy dat – pro tzv. datové pumpy použijte nějaký ETL tool
• XML standardy se neustále vyvíjejí
• S XML dokumentem lze (zatím) pracovat jen jako s celkem
• Poněkud problematické je indexování a prohledávání XML dokumentů – nic na
způsob „domácího“ fulltextu zatím není u XML k dispozici
• V porovnání s relačními databázemi
▫ poněkud složitější programování
▫ menší rychlost
▫ problematická kontrola přístupových práv k jednotlivým částem XML dokumentu
▫ je třeba řešit i zálohování souborů uložených mimo DB…
9. 9
Agenda
Co je to XML?
Přednosti a nedostatky XML
10 • Nejčastější použití XML
• Základy syntaxe
• Prohlížení a kontrola XML dokumentů
• Vzhled XML dokumentů
• DTD a XML schémata
• Jmenné prostory, prefixy
• Co je to XSL a XSLT?
• Internet, doporučená literatura
10. 10
Nejčastější použití XML
• Zveřejňování informací na webových stránkách (XHTML)
• Vytváření popisných metadat (RDF – W3C standard, jde model) o dokumentech
(např. OpenURL, Dublin Core, RSS/atom kanály apod.)
• Vzájemná komunikace (výměna dat) mezi různými informačními systémy >>
hlavně webové služby
• Elektronické publikování (knihy, manuály, vyhlášky) a následná správa
dokumentů pomocí metadat
• Uchovávání dat malého rozsahu nebo dat nerelačního charakteru
• Konfiguračních data k aplikacím (.NET, Java Spring)
• Formáty založené na XML, např. vektorová grafika (SVG), matematické vzorce
(MathML), chemická data (CML)
• Doporučení: Při implementaci XML v aplikaci využívejte existující standardy
a knihovny. Nevynalézejte znovu kolo!
11. 11
Kdy XML není dobrou volbou?
• Velké množství přenášených dat
▫ Velmi intenzivní komunikace >> vlastní data tvoří pouze zlomek celkové velikosti,
limitujícím faktorem může být i přenosová cesta
příklad: nativní aplikace v mobilním telefonu, komunikující se serverem
alternativy: JSON, REST
▫ Přenos velkých (strukturovaných) dat >> problémem je jednak velikost dat, jednak
"náklady" na serializaci/parsing
příklad: datové pumpy (přenos velkých dat z A -> B), datová replikace většího množství dat
v reálném čase (i mezi více systémy)
alternativy: ETL nástroje, flat-file
• Nepodporovaný typ rozhraní >> nativní podpora neexistuje nebo je velmi
omezena na dané platformě
▫ příklad: velké firmy, jejichž ICT infrastruktura vznikala v průběhu 70-80. let nebo i
dříve, stále používají main-frame/mid-range servery
▫ alternativa: proprietární/průmyslové formáty jako COPYBOOK, SWIFT nebo flat-file
• Low-level programování, kde je kladen důraz na výkon
▫ příklad: telefonní ústředny, ATMs (bankomaty) nebo platební terminály
▫ alternativa: flat-file
12. 12
Agenda
Co je to XML?
Přednosti a nedostatky XML
10 Nejčastější použití XML
• Základy syntaxe
• Prohlížení a kontrola XML dokumentů
• Vzhled XML dokumentů
• DTD a XML schémata
• Jmenné prostory, prefixy
• Co je to XSL a XSLT?
• Internet, doporučená literatura
13. 13
XML elementy
• Základním stavebním prvkem XML dokumentu jsou elementy
• Každý XML dokument musí být uzavřen v jednom XML elementu (root),
obdobně jako se v HTML používá tag <html>
• Všechny elementy jsou párové. Pokud je element prázdný, je možné jej zapsat
ve zkrácené podobě <element />
• Elementy je možno do sebe vnořovat, ale není možno je křížit
• V názvech elementů a atributů se rozlišují velká a malá písmena. Jestliže
v HTML znamenají prvky <TABLE> a <Table> totéž, v XML tomu tak není!
• Název elementu může obsahovat písmena, čísla, znaky „_“, „–“ a „.“, mezery
nejsou povoleny, nesmí začínat řetězcem „xml“, dvojtečky „:“ jsou vymezeny pro
použití v názvech jmenných prostorů
<obsah>
<mujElement>nějaký řetězec</mujElement>
</obsah>
14. 14
Kódování znaků
• Aby šlo v XML dokumentu bez problémů zapisovat znaky libovolného jazyka,
používá se standardně kódování UTF-8
• Je však možné použít i jiné kódování např. iso-8859-2 nebo windows-1250
• Nastavení kódování XML dokumentu se provádí v XML deklaraci
(vždy na 1. řádku každého XML dokumentu!):
<?xml version="1.0" encoding="windows-1250"?>
• Pokud je použito kódování UTF-8, je možné v XML deklaraci nastavení kódování
vynechat:
<?xml version="1.0 ?>
15. 15
Mime type v XHTML
• Mime typ je textová informace v hlavičce zprávy, která popisuje, jaká data
budou následovat.
• Je složena ze dvou částí: Označení typu dat/Konkretizace dat.
• Podle mime typu se určuje, jaký parser v prohlížeči (HTML vs XML) bude
zdrojový kód zpracovávat.
HTML:
<meta http-equiv="content-type" content="text/html;...
XHTML:
<meta http-equiv="content-type" content="application/xhtml+xml;...
• Až do verze IE9 neuměl MS prohlížeč správně zpracovat mime typ pro XHTML!
• Problém částečně řeší HTML5.
• http://dero.name/weblog/xhtml-mime/
• http://zdrojak.root.cz/clanky/polyglot-aneb-webovym-koderem-pod-oboji/
• http://zdrojak.root.cz/clanky/xhtml-je-mrtve-at-zije-html5-nebo-ne/
16. 16
Znakové entity
• Mezi počáteční a koncovou značkou XML elementu se nesmí používat znaky
„<“ a „&“, nedoporučuje se používat znak „>“
• Namísto těchto kolizních znaků se používají tzv. znakové entity.
V XML jsou předdefinovány tyto znakové entity:
< ... <
& ... &
> ... >
“ ... "
‘ ... '
• Doporučuji používat i v XHTML dokumentech!
http://www.aspnet.cz/Articles/205-jak-na-html-entity-v-xml-dokumentech.aspx
17. 17
Atributy
• Atribut poskytuje dodatečnou (doplňující) informaci o elementu, pokud je
použit, je vždy součástí počáteční (otevírací) značky elementu
• Elementy mohou obsahovat jeden nebo více atributů (na pořadí nezáleží)
• Jednotlivé atributy jsou ve značce odděleny mezerou (proto není mezera
v názvu značky povolena)
• Názvy atributů se řídí stejnými pravidly jako názvy elementů
• Všechny atributy musejí mít určenou hodnotu, která je uzavřena do uvozovek
nebo apostrofů:
<element atribut1='hodnota1’ tribut2=“hodnota2“>obsah</element>
<element2 atribut3=’a“BC“d’>obsah</element2>
18. 18
Komentáře v XML
• Do zdrojového kódu XML dokumentů lze vkládat komentáře
• Komentář je součástí dokumentu, ale je ignorován při jeho zpracování
• Komentář může být kdekoliv ve zdrojovém kódu, ale nesmí být součástí nějaké
značky!
<!– můj komentář -->
<element <!– můj komentář -->>obsah</element> je chybně!
19. 19
Instrukce pro zpracování
• Instrukce pro zpracování se vkládají do XML dokumentu v případě, že
potřebujeme ovlivnit charakter jeho dalšího zpracování
<?identifikátor data?>
• Identifikátor určuje aplikaci nebo zařízení, pro které je instrukce určena
• Data jsou vlastní instrukce (příkazy) ve formátu odpovídajícímu uvedené
aplikaci nebo zařízení
<?xml-stylesheet href="styl.css" type="text/css"?>
...
<?php echo “výpis“ ?>
20. 20
CDATA
• Když potřebujeme do XML dokumentu vložit větší kus textu se značkami (např.
nějaké instrukce pro pozdější zpracování, CSS, JavaScript apod.), je vhodné
použít sekci CDATA
<script type="text/javascript">
<![CDATA[
for (i=0; i < 10; $++)
{
document.writeln("<p>Ahoj</p>");
}
]]>
</script>
21. 21
Agenda
Co je to XML?
Přednosti a nedostatky XML
10 Nejčastější použití XML
Základy syntaxe
• Prohlížení a kontrola XML dokumentů
• Vzhled XML dokumentů
• DTD a XML schémata
• Jmenné prostory, prefixy
• Co je to XSL a XSLT?
• Internet, doporučená literatura
22. 22
Prohlížení a kontrola XML dokumentů
• Prohlížení XML dokumentů je možné např. v prohlížeči s podporou XML (např.
Internet Explorer, Mozilla Firefox apod.)
• Program, kterým se provádí kontrola a zpracování XML dokumentu, se jmenuje
parser
• Prohlížeče s podporou XML tento parser obsahují, jsou proto nejjednodušší
cestou, jak dokument zobrazit a zároveň zkontrolovat
• Bude-li XML dokument správně zformátován (well formed), zobrazí jej.
V opačném případě prohlížeč oznámí chybu!
10-01-priklad.xml
10-02-priklad-validace.html (pouze Internet Explorer! Používá ActiveX prvek)
23. 23
Agenda
Co je to XML?
Přednosti a nedostatky XML
10 Nejčastější použití XML
Základy syntaxe
Prohlížení a kontrola XML dokumentů
• Vzhled XML dokumentů
• DTD a XML schémata
• Jmenné prostory, prefixy
• Co je to XSL a XSLT?
• Internet, doporučená literatura
24. 24
Vzhled XML dokumentů
• XML odděluje informační obsah dokumentu od definice grafického vzhledu >>
neurčuje, jakým způsobem se má obsah jednotlivých značek (elementů)
zobrazovat
• K tomu se používají stylové jazyky:
▫ CSS (Cascading Style Sheet)
▫ XSL (eXtensible Stylesheet Language)
• CSS je jednodušší a není vytvořen podle pravidel XML (na rozdíl od XSL), používá
svá vlastní pravidla!
25. 25
XML a CSS
• Připojení CSS k dokumentu XML:
<?xml-stylesheet href="styl.css" type="text/css"?>
• Pozor! V CSS pro XML se rozlišuje velikost písmen v názvech selektorů
• Vlastnost display (block, inline, list-item, none) určuje způsob
zobrazení obsahu elementu v prohlížeči
• Neurčíme-li v CSS jinak, je výchozí zobrazení elementu nastaveno na display:
inline
10-03-priklad.xml
26. 26
Agenda
Co je to XML?
Přednosti a nedostatky XML
10 Nejčastější použití XML
Základy syntaxe
Prohlížení a kontrola XML dokumentů
Vzhled XML dokumentů
• DTD a XML schémata
• Jmenné prostory, prefixy
• Co je to XSL a XSLT?
• Internet, doporučená literatura
27. 27
DTD a XML schémata – I.
• DTD (Document Type Definition) a XML schémata jsou formální sady pravidel, které jsou
určeny pro lepší kontrolu nad obsahem XML dokumentu
• Vymezují množinu elementů a atributů, které mohou být v dokumentu použity, včetně
jejich obsahu a vzájemných vazeb (způsobů vnořování)
• Pokud XML dokument obsahuje odkaz na strukturu, kterou má dodržovat, je možné
kromě správné strukturovanosti (well formed) kontrolovat také její validitu
• Použití DTD a XML schémat má význam při výměně informací mezi informačními
systémy, umožňuje jednoznačnou interpretaci elementů
• Každé XML schéma je zároveň XML dokumentem, DTD používá vlastní formát
• Existují i další varianty pravidel pro XML, např. RELAX NG (Wikipedia)
28. 28
DTD a XML schémata – II.
• DTD je starší, jednodušší (a díky tomu i více rozšířené)
• XML schémata sice vznikla později, ale jsou zase mnohem komplexnější
(řeší některé nedostatky DTD, např. datové typy)
• Vazba XML dokumentu na XML schéma je složitější, než je tomu v případě DTD
• DTD soubory používají příponu *.dtd, XML schémata *.xsd
• Příklad použití XML souboru s DTD:
10-04-priklad.xml
• Příklad použití XML souboru s XML schématem:
http://www.kosek.cz/xml/schema/index.html
29. 29
Příklady nejběžnějších DTD
• Hypertext Markup Language (HTML)
• Channel Definition Format (CDF)
• Mathematical Markup Language (MathML)
• Resource Description Framework (RDF)
• Chemical Markup Language (CML)
• Precision Graphics Markup Language (PGML)
• UML eXchange Format (UXF)
• DocBook (publikování)
• Scalable Vector Graphics (SVG)
30. 30
Agenda
Co je to XML?
Přednosti a nedostatky XML
10 Nejčastější použití XML
Základy syntaxe
Prohlížení a kontrola XML dokumentů
Vzhled XML dokumentů
DTD a XML schémata
• Jmenné prostory, prefixy
• Co je to XSL a XSLT?
• Internet, doporučená literatura
31. 31
Jmenné prostory
• V XML dokumentech od různých autorů může nastat situace, kdy budou
v jednotlivých dokumentech použity stejně pojmenované elementy, ale
s různým významem!
• Pomocí jmenných prostorů tomu lze předejít a odlišit elementy jednoho autora
od elementů jiného autora
• Označení jmenného prostoru je vizuálně podobné URL adrese
http://doména/volitelná_informace_o_prostoru/popis_prostoru/verze
Příklad:
http://www.mojedomena.cz/alfa/dopisy/1.0
• Někdy se místo označení URL (Uniform Resource Locator) používá zkratka URN
(Uniform Resource Name). 1URN = 1-n URL
32. 32
Deklarace jmenných prostorů, prefixy
• Jmenný prostor je možné deklarovat v libovolném elementu
<dopis xmlns=“identifikace jmenného prostoru“>
...
</dopis>
• Jmenný prostor se vztahuje na element, ve kterém je deklarován a na všechny
jeho potomky
• V případě, že chceme v elementu (a v jeho potomcích) použít více jmenných
prostorů, lze používat prefixy
<mujelement xmlns=“identifikace prostoru“
xmlns:bib=“http://www.book.org/bibliography“>
<test1>obsah</test1>
<bib:test2>obsah2</test2>
<test3>obsah2<test3>
</mujelement>
33. 33
Agenda
Co je to XML?
Přednosti a nedostatky XML
10 Nejčastější použití XML
Základy syntaxe
Prohlížení a kontrola XML dokumentů
Vzhled XML dokumentů
DTD a XML schémata
Jmenné prostory, prefixy
• Co je to XSL a XSLT?
• Internet, doporučená literatura
34. 34
Co je XSL a XSLT?
• XML dokumenty samy o sobě nejsou dost dobře zobrazitelné, představují
datovou základnu, se kterou je možné dále pracovat
• Jednou z možností je tzv. XSL (eXtensible Stylesheet Language) transformace
dat uložených v XML dokumentu do požadovaného formátu, např. HTML, RTF,
PDF nebo jinak
• XSL transformace se provádí prostřednictvím jazyka XSLT (eXtensible Stylesheet
Language Transformations)
• XSL má dvě části:
▫ XSLT,
▫ XSL-FO (formátovací objekty typu XSL).
35. 35
Použití XSL a XSLT
• XSL používá jazyk XML a je tedy sám XML dokumentem
• XSL dokumenty mají příponu *.xsl
• Každý XSL dokument
▫ Vždy obsahuje řídící příkazy XSLT procesoru
▫ Může obsahovat data (elementy, text), která se použijí při sestavování
výsledného výstupu (dokumentu)
• Řídící příkazy XSLT procesoru náleží jmennému prostoru
http://www.w3.org/1999/XSL/Transform,
podle kterého XSLT procesor pozná, že má element zpracovat
• Pro vyhledávání jednotlivých prvků XML dokumentu, které vyhovují zadaným
podmínkám, se používá dotazovací jazyk XPath (XPath je pro XML totéž, co SQL
pro relační databáze )
10-05-priklad.xml
36. 36
Agenda
Co je to XML?
Přednosti a nedostatky XML
10 Nejčastější použití XML
Základy syntaxe
Prohlížení a kontrola XML dokumentů
Vzhled XML dokumentů
DTD a XML schémata
Jmenné prostory, prefixy
Co je to XSL a XSLT?
• Internet, doporučená literatura
38. 38
Doporučená literatura
• Bráza, Jiří – XML Praktické příklady, Grada 2003
• Žák, Miroslav – XML Začínáme programovat, Grada 2003
• Esposito, Dino – XML Efektivní programování pro .NET, Grada 2004
• Herout, Pavel – Java a XML pro Javu 5 i 6, Kopp 2007
39. 39
Agenda
Co je to XML?
Přednosti a nedostatky XML
10 Nejčastější použití XML
Základy syntaxe
Prohlížení a kontrola XML dokumentů
Vzhled XML dokumentů
DTD a XML schémata
Jmenné prostory, prefixy
Co je to XSL a XSLT?
Internet, doporučená literatura