460 likes | 630 Views
XML a jeho aplikace. Magdalena Raszková Ústav informatiky PEF MZLU v Brně xraszkov @pef.mendelu.cz. Značkovací jazyk. Značkovací jazyk (markup language) je formálně definovaný jazyk zavádějící množinu speciálních symbolů (značky, tagy)
E N D
XMLa jeho aplikace Magdalena Raszková Ústav informatiky PEF MZLU v Brně xraszkov@pef.mendelu.cz
Značkovací jazyk • Značkovací jazyk (markup language) je formálně definovaný jazyk zavádějící množinu speciálních symbolů (značky, tagy) • Značkovací jazyky jsou určeny k vyznačování částí textu podle určitých pravidel, pomocí vyhrazené množiny znaků či sekvencí znaků • Značkování (markup) je proces, kdy je určitý text (dokument) obohacen o nový význam prostřednictvím značek • Značkování může probíhat manuálně či automatizovaně • Důvody značkování • datová nezávislost • životnost označkovaného dokumentu • přehlednost • zjednodušení zpracování dokumentu
Značkovací jazyky • CSV • LaTeX • HTML • XML • a další
XML (eXtensible Markup Language) • Rozšiřitelný značkovací jazyk • Standard konsorcia W3C • Je určen především pro výměnu dat mezi aplikacemi a pro publikování dokumentů • Meta-značkovací jazyk pro textové dokumenty, nedefinuje tedy pevně danou množinu značek • Je možné definovat si vlastní elementy, tak jak je potřeba
Trocha historie nikoho nazabije • V roce 1986 byl jako norma ISO přijat značkovací jazyk SGML (Standard Generalized Markup Language) • SGML je velmi obecný a poměrně složitý • Ze SGML vychází jazyk • HTML • XML
Elementy <osoba> <jmeno>Magda</jmeno> <prijmeni>Raszková</prijmeni> </osoba> Znaková data <osoba>Magda Raszková</osoba> Smíšený obsah <odstavec> <pojem>XML</pojem>je značkovací… </odstavec> Prázdný element <cara /> nebo <cara></cara> Schéma a obsah XML elementu Element <jméno_značky atribut="hodnota"> obsah </jméno_značky> počáteční značka (počáteční tag) koncová značka (koncový tag)
Logická struktura XML • Na XML data lze nahlížet jako na strom • Jednotlivé části stromu jsou tvořeny elementy a případně dalšími součástmi XML dat • Vztahy mezi prvky vycházejí z terminologie rodokmenů • předek • rodič • sourozenec • dítě • potomek (následník)
Syntaktická pravidla jazyka XML • výhodou jazyka XML je jeho flexibilitaa rozšiřitelnost • na druhou stranu XML dokumenty musí splňovat syntaktická pravidla určující umístění značek, atributů, dovolené způsoby tvoření názvů apod. • Každý XML dokument, který striktně dodržuje dále uvedená syntaktická pravidla (pravidla správné formulace) je označován jako dobře strukturovaný (well-formed)
Syntaktická pravidla jazyka XML • XML dokument obsahuje alespoň jeden element • může být i prázdný • Názvy XML elementů odpovídají pravidlům • jména elementů by měla popisovat a blíže specifikovat, jaké informace jsou v daném elementu obsaženy • názvy elementů musí začínat písmenem nebo podtržítkem • další znaky smí být písmena, číslice, podtržítka, pomlčky, tečky • jiné znaky nejsou povoleny
Syntaktická pravidla jazyka XML • XML dokument obsahuje kořenový element • element na nejvyšší úrovni • „obal“ všech ostatních elementů • XML je case-sensitive • rozlišujeme malá a velká písmena v názvech elementů • XML elementy se nesmí křížit • pokud nějaký element obsahuje počáteční značku jiného elementu, musí obsahovat i příslušnou koncovou značku
Syntaktická pravidla jazyka XML • XML atributy odpovídají pravidlům • pro názvy atributů platí stejná pravidla jako pro názvy elementů • hodnota atributu musí být zapsána mezi uvozovky nebo apostrofy • element nesmí mít dva stejně pojmenované atributy • XML dokument neobsahuje zakázané znaky • v XML existují znaky, které mají svůj specifický význam • tyto znaky nemůžeme zapsat přímo, ale musíme pro ně použít tzv. vestavěné znakové entity • znak < nahrazuje entita < • znak > nahrazuje entita > • znak & nahrazuje entita & • znak " nahrazuje entita " • znak ' nahrazuje entita '
XML hlavička • XML hlavička je deklarací XML dokumentu • Je-li hlavička dokumentu uváděna, pak se musí vyskytnout na úplném začátku dokumentu, nesmí se před ní vyskytnou žádné jiné (ani bílé) znaky • Hlavička je nepovinná (jen v případě použití UTF-8 apod.) <?xml version= "1.0" encoding="iso-8859-2" standalone="no"?> • Atributy: • version – verze xml • encoding – kódování dokumentu • standalone – povinnost číst definice z externí podmnožiny DTD
Editace XML dokumentu • jde o čistě textový formát • jakýkoliv textový editor (Notepad, Emacs, …) • XML editory • XMetaL • Epic • XMLSpy • XMLwriter • XMLmind • Stylus Studio XML Enterprise Suite • Cooktop • a další
DTD (Document Type Definition) • DTD – definice typu dokumentu, obsahuje pravidla zápisu XML dat a jejich definici • Jazyk pro popis struktury XML, ale i (X)HTML • Deklarace typu dokumentu obsahuje DTD (interní podmnožinu) nebo odkaz na DTD (externí podmnožinu) • Deklarace se uvádí před kořenovým elementem: • <!DOCTYPE nazev_koren_elementu [interní podmnožina DTD]> • <!DOCTYPE nazev_koren_elementu SYSTEM "URI externí podmnožiny">
Deklarace a definice obsahu elementů • Elementový obsah <!ELEMENT osoba (jmeno+, prijmeni)> • Znaková data <!ELEMENT odstavec (#PCDATA)> • Prázdný element <!ELEMENT cara EMPTY> • Libovolný obsah <!ELEMENT smeti ANY> • Smíšený obsah <!ELEMENT popis (#PCDATA|tucne|kurziva)*>
Výhody a nevýhody DTD • Široce rozšířený, jednoduchý princip popisu obsahui struktury dokumentů • Nižší flexibilita popisu, těžkopádnost • Pouze minimálně podpora rozlišení různých datových typů • Další jazyky pro popis struktury XML • XML Schema • RELAX NG • Schematron • DSD
Validní XML • Pokud dokument odpovídá určitému DTD (případně jinak popsané definici struktury), pak je validní (valid) • Každý validní dokument je dobře strukturovaný • Dobře strukturovaný dokument nemusí být validní • Pokud je dokument validní existuje k němu příslušný popis struktury (DTD, XML Schema, ...) • XML dokument nemusí být validní ani dobře strukturovaný (Je to ještě XML?) • Pomocí parseru lze zkontrolovat, zda dokument danému DTD vyhovuje (tzn. je validní).
XML aplikace • Termín XML aplikace představuje konkrétní množinu značek a pravidel jejich použití • Existuje mnoho běžně používaných formátů dat založených na XML • Většina XML aplikací vznikla pod záštitou konsorciem W3C http://www.w3.org/
XML aplikace • CML (Chemical Markup Language) – popis chemických vzorců • DocBook • InkML • MathML (Mathematic Markup Language) • ODF (Open Document Format) • RSS (Rich Site Summary / RDF Site Summary) • SMIL (Synchronized Multimedia Integration Language) • SVG (Scalable Vector Graphic)
XML aplikace • XForms • XHTML (Extensible HyperText Markup Language) – webové dokumenty, XML reformulace HTML • XSD (XML Schema Definition) • XSL (eXtensible Stylesheet Language) • XUL (XML User Interface Language) • VML (Vector Markup Language) • WML (Wireless Markup Language) • a další
(X)HTML • eXtensible Hypertext Markup Language • Značkovací jazyk pro tvorbu hypertextových dokumentů v prostředí WWW vyvinutý konsorciem W3C • Účelem i významovým rozsahem se jedná o HTML 4.01, řídí se však syntaktickými pravidly XML • Původně se předpokládalo, že se stane nástupcem jazyka HTML, jehož vývoj byl verzí 4.01 ukončen • V roce 2007 však došlo k založení pracovní skupiny, která má za cíl vytvořit novou verzi HTML 5.0 • XHTML je stále paralelně vyvíjeno a nyní se pracuje na verzi 2.0 http://www.w3.org/TR/xhtml2/
MathML • Mathematical Markup Language • MathML je specifikace konsorcia W3C určená pro reprezentaci matematických výrazů na webu • Přímo nebo prostřednictvím pluginů je podporován ve většině moderních prohlížečů (MSIE 5, NN 6.2, Mozilla 0.9.9) • MathML je v porovnání se syntaxí TeXu objemnější, XML struktura ovšem dovoluje použití například v zobrazovacích zařízeních jako jsou webové prohlížeče nebo ulehčuje přímou interpretaci v matematických programech • Konverze mezi TeXem a MathML • itex2mml • MathML je také podporováno hlavními kancelářskými programy jako jsou Microsoft Word, OpenOffice.org
MathML • http://www.w3.org/Math/ • http://www.w3.org/Math/XSL/csmall2.xml • http://cs.wikipedia.org/wiki/MathML
SVG • SVG (Scalable Vector Graphics) je jazyk pro popis vektorové grafiky a animací • Specifikace SVG 1.1 pochází z ledna 2003 • Přímá implementace v prohlížečích zatím chybí, k dispozici jsou ale příslušné pluginy
SVG • http://www.w3.org/Graphics/SVG/ • http://www.croczilla.com/svg/samples/ • http://www.w3schools.com/svg/svg_examples.asp
Stylové jazyk • Základní myšlenkou, na které staví většina značkovacích jazyků včetně XML a SGML, je důsledné oddělení obsahu dokumentu od jeho vzhledu • Můžeme si však odděleně vytvořit definici vzhledu jednotlivých elementů, které se říká styl • Stylové jazyky: • XSL – stylový jazyk navržený speciálně pro XML • DSSSL – stylový jazyk původně navržený pro SGML, umí však zpracovat i XML dokumenty • CSS (kaskádové styly) • FOSI – stylový jazyk používaný v některých komerčních aplikacích
Proč vůbec používat styly? • XML umožňuje strukturovat data uložená v dokumentu, neříká nám však nic o jejich vzhledu • princip oddělení obsahu dokumentu od jeho vzhledu • potřeba převodu XML dokumentu do formátu vhodného pro vlastní prezentaci • můžeme vytvořit vlastní program pro zpracování dat v XML ... • použít modul nějakého programovacího jazyka • využijeme technologie XSL
Proč vůbec používat styly? • připojení různých stylů k jednomu XML dokumentu • Výhoda při aktualizaci • Přizpůsobení různým koncovým zařízením (monitor, tisk, PDA, mobil, …)
Proč vůbec používat styly? • připojení jednoho stylu k různým XML dokumentům • Dosažení jednotného vzhledu • Změna vzhledu úpravou jednoho stylu
XSL • eXtensible Stylesheet Language • stylový jazyk speciálně vyvinutý pro XML http://www.w3.org/Style/XSL/ • původně jedna specifikace, která zajišťovala jak transformaci dokumentů, tak i jejich formátování • později vymezeny 2 samostatné části, které spolu ale úzce souvisí: • transformační část: XSLT (Transformation) • formátovací část: XSL-FO (Formatting Objects) • definuje vizuální vlastnosti objektů a dokumentu – formátování výstupu • transformace do formátu PDF, PS
Transformační část – XSLT • výkonný jazyk pro přímou manipulaci s obsahem dokumentů XML • pomocí XSLT lze jednoduchým způsobem transformovat vstupní XML dokument na rozličné výstupní formáty • umožňuje definovat transformaci XML dokumentu na jiný dokument XML s odlišnou strukturou a značkami • převod na další typy dokumentů: • HTML, XHTML • RTF • obyčejný textový soubor • kód v jazyku JavaScript • sekvence SQL příkazů • zdrojový kód pro TeX • dokumenty XSL-FO… • verze XSLT • XSLT 1.0 – doporučení (recommendation) • XSLT 2.0 – od 23. ledna 2007 také ve formě doporučení
Realizace transformací • uvnitř klientského programu • transformace pomocí prohlížeče (nejlépe Mozilla FireFox) • styl se připojuje ke XML dokumentu pomocí instrukce <?xml-stylesheet?> uvedené za hlavičkou XML dokumentu <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="styl.xsl"?> <knihovna> ... </knihovna> Pozn.: Internet Explorer je schopen provést transformaci pouze pokud je jako typ uveden text/xslmísto text/xml, který by tam měl správně být. FF zvládá obojí.
Realizace transformací • pomocí procesoru jazyka XSLT • samostatný program, která dovede aplikovat styly na základní XML dokument a provést jeho transformaci • XT, Saxon, MSXML, Xalan • příklad transformace pomocí procesoru XT java -cp xt.jar com.jclark.xsl.sax.Driver kurz.xml kurz.xsl kurz.html zdrojový XML dokument XSL styl název cílového dokumentu
DocBook • DocBook je dnes asi druhá nejpoužívanější aplikace SGML/XML, hned za jazykem HTML • DocBook vznikl v roce 1991 jako formát založený na SGML, určený především pro výměnu unixové dokumentace • DocBooku s označením V4.5 existuje ve dvou verzích pro SGML i pro XML • Samotný DocBook není nic jiného než DTD, které definuje jaké elementy a atributy můžeme v dokumentech používat • Volně k dispozici jsou XSL a DSSSL styly, které lze použít pro formátování dokumentů v DocBooku • DocBooku s označením V5.0 je reimplementací DocBooku ve formátu RELAX NG
DocBook • DocBook obsahuje elementy, které umožňují členit dokumenty do kapitol, podkapitol, označovat názvy programů, obrázky, snímky, obrazovky, klávesové zkratky apod. • DocBook se vyvinul do podoby systému, který se hodí zejména pro tvorbu počítačové dokumentace, lze ho však použít pro zápis libovolných knih a článků • Dokumentace k mnoha programům je vytvářena v DocBooku (např. Linux a FreeBSD, ke skriptovacímu jazyku PHP) • DocBook používají i velká počítačové nakladatelství (O'Reilly) • Výhodou DocBooku je, že mnoho editorů a nástrojů pro práci s XML v sobě přímo zahrnuje jeho podporu
DocBook • http://docbook.cz/ • http://www.oasis-open.org/docbook/ • http://docbook.sourceforge.net • http://www.docbook.org
SMIL • Synchronized Multimedia Integration Language • SMIL [čti smajl]je určen pro tvorbu synchronizovaných multimediálních webových prezentací • Pomocí SMIL lze například vložit do prezentaces videozáznamem synchronizované titulky
SMIL • http://www.w3.org/AudioVideo/ • http://www.w3schools.com/smil/ • http://www.w3schools.com/smil/tryit.asp?filename=trysmil_parallel • http://www.w3schools.com/smil/tryit.asp?filename=trysmil_trans • http://interval.cz/serialy/synchronized-multimedia-integration-language/
WML • Wireless Markup Language • značkovací jazyk umožňující tvorbu online dokumentů pro mobilní zařízení • Struktura WML dokumentu je podobná jako v HTML, XHTML apod. Má však určitá specifika, vycházející z jeho změření na mobilní přístroje, především a mimo jiné: • Nepodporuje barvy • Podporuje vnořené dokumenty (card) v jednom souboru • Definuje některé ovládací prvky koncového prohlížeče • Podporuje pouze černobílé obrázky ve formátu WBMP • Prohlížeči bývá vyžadována jeho striktní validita • Definice vstupních formulářů podporuje primitivní validace hodnot
WML • http://www.w3schools.com/wap/wml_examples.asp
Transformace XML do PDF • XSL-FO • Formátovací objekty • TeX • definujeme vlastní transformace na TeXovské příkazy v XSL stylu • PassiveTeX (procesor FO postavený nad TeXem) • TeXML • xmltex (parser XML v TeXu ) Základní přehled zde
Kde se dozvíte více? • Stránky konsorcia W3C http://www.w3.org/ • www.google.com • www.wikipedia.com
Kde se dozvíte více? • Volitelný předmět E-technologie • Garant: Ing. Roman Malo, Ph.D. • Vhodný pro neinformatiky • Volitelný předmět XML aplikace • Garant: Ing. Roman Malo, Ph.D. • Vhodný pro informatiky a odvážné neinformatiky
Dotazy? Děkuji za pozornost