1 XML eXtensible Markup Language 2 XML Zpočátku programy pro přípravu tisku, specializované na tu kterou osvitovou jednotku (vzájemně nekompatibilní), tj. v textu řídící sekvence pro osvitovou jednotku. Potom se začaly používat společné příkazy, které se překládaly pro konkrétní typ osvitové jednotky (nejrozšířenější troff a TeX). Programy jako TeX se však hodí pouze pro zpracování dokumentů, které se mají ve výsledku tisknout. Hlavně kvůli tomu, že nabízejí příkazy, které umožňují měnit druh použitého písma, způsob zarovnání a nepřeberné množství dalších parametrů. 3 XML S rozmachem Internetu a dalších médií (např. CDROM) vznikla potřeba jedny a tytéž informace prezentovat mnoha způsoby – kvalitním tiskem na papíře, jako hypertextovou příručkou na CD-ROMu apod. Pro tyto účely je však potřeba znát logickou strukturu dokumentu. Musíme vědět, že tohle je nadpis a tohle zase popis obrázku. Konkrétní velikost písma a způsob formátování záleží až na tom, zda chceme produkovat tištěnou knihu nebo multimediální CD-ROM. 4 XML Potřebujeme tedy jazyk, který umožní označit význam jednotlivých částí textu, a ne jejich vzhled. Takovýmto „samopopisným jazykem“ je i XML. Nejde však zdaleka o první jazyk svého druhu. Jazykům, které umožňují vyznačovat části textu, se říká značkovací jazyky (markup language). 5 XML Asi prvním známým značkovacím jazykem byl GML (Generalized Markup Language, autoři Ch. Goldfarb, E. Mosher, R. Lorie ?) Princip GML se osvědčil a v 80. letech začala na základě GML vyvíjet standardizační organizace ANSI jazyk, který umožňoval definici vlastních značkovacích jazyků – uživatel si dle potřeb mohl vytvořit vlastní sadu značek vhodnou pro daný druh dokumentů. Tou dobou se sdružení GCA (Graphics Communications Association) snažilo vytvořit standardní formátovací jazyk GenCode použitelný na širokém spektru zařízení. Mnohé cíle obou projektů byly podobné, a proto se obě aktivity spojily. Výsledkem byl jazyk SGML (Standard Generalized Markup Language), který je definován v ISO normě 8879 z roku 1986. 6 XML Jazyk SGML je skutečně hodně obecný – samozřejmě umožňoval definici vlastních značkovacích jazyků (sad značek a jejich vzájemných vztahů) pomocí tzv. definic typu dokumentu (DTD). Navíc měl spoustu volitelných parametrů – počínaje maximální délkou názvů značek a konče určením znaků použitelných jako oddělovače značek od textu. Komplexnost standardu SGML poněkud zbrzdila jeho praktické využívání. Velkou podporou pro SGML bylo americké ministerstvo obrany, které od svých dodavatelů vyžadovalo dokumentaci k výrobkům právě ve formátu SGML. Důvod byl zřejmý – bylo třeba, aby byla dokumentace použitelná v poměrně dlouhém období. Nešlo tedy použít nějaký proprietární formát textového procesoru, který se každých pár let mění. 7 XML Asi nejznámější aplikací SGML je jazyk HTML (Hypertext Markup Language), který se používá pro tvorbu webových stránek. To jaké značky můžeme na stránkách používat určuje příslušné DTD, které je pro každou verzi HTML trošku jiné. 8 XML V polovině 90. let došlo k paradoxní situaci. Jazyk HTML si získal velkou oblibu díky své jednoduchosti, která byla v ostrém kontrastu s komplexností SGML. Ukázalo se však, že pevně daná skupina značek, které HTML používá, už nestačí. Pro účely vyhledávání a vůbec efektivnější výměny dat by bylo lepší mít možnost používání vlastních značek, které by přesně vymezily význam textu. Požadavek by tedy mohl bez problémů splnit jazyk SGML. 9 XML Standard SGML je dost komplexní a jeho úplná implementace velice náročná. Přitom se během deseti let používání SGML ukázalo, že se v praxi používá stejně jen část jeho možností. Tato nejdůležitější podmnožina SGML proto byla vybrána jako nový jazyk, který dovede Web do třetího tisíciletí. Správně již tušíte, že nový jazyk dostal jméno XML (eXtensible Markup Language). Jedná se o podmnožinu SGML, která si zachovává možnost definování vlastních DTD, a tedy značek, pro jednotlivé skupiny dokumentů. 10 XML Na rozdíl od SGML je mnoho parametrů předem určeno a nelze je měnit – délka názvů značek, použité oddělovače a speciální znaky atd. XML už rovnou počítá s podporou všech možných jazyků, takže není tak úzce svázáno s angličtinou jako většina předchozích počítačových technologií. Navíc je syntaxe zápisu dokumentů v XML oproti SGML poměrně přísná, což umožní mnohem snazší a levnější vývoj aplikací, které umožňují s XML pracovat. 11 XML XML pochází z oblasti, která se zaměřuje na uchovávání a zpracování textových dokumentů. Pro tyto účely se XML výborně hodí. Mnoho velkých i malých firem vyrábějících software, hardware nebo třeba letadla používá pro tvorbu dokumentace systémy založené na XML nebo SGML. 12 XML Elektronické publikování dokumentů však není jedinou doménou XML. Značky umožňují v dokumentu zachytit důležité informace o struktuře a významu. Není proto problém do XML dokumentu uložit například obsah tabulky z relační databáze. O dokumentech bychom měli spíše uvažovat jako o nosičích informací – není už tak důležité, jak moc strukturovaná jsou data v nich. Některé aplikace pracují s dokumentem, který je filosofickou esejí, jiné za dokument považují řadu čísel s burzovními indexy. 13 XML 14 XML Co přináší XML nového Standardní formát pro výměnu a sdílení informací Mezinárodní podpora Vysoký informační obsah Snadná konverze do dalších formátů Automatická kontrola struktury dokumentu 15 XML Co přináší XML nového? Standardní formát pro výměnu a sdílení informací (je potřeba používat nějaký jednoduchý otevřený formát, který není úzce svázán s nějakou platformou nebo proprietární technologií). Otevřený formát je to proto, že jeho specifikace je každému zdarma k dispozici na serveru konsorcia W3C, které se stará i mnoho dalších technologií souvisejících s Webem. Každý tak může bez problémů do svých aplikací implementovat podporu XML. To je velký rozdíl oproti firemním formátům, k nimž není k dispozici žádná dokumentace a navíc se jedná v porovnání s XML o velice složité, často binární, formáty. 16 XML Mezinárodní podpora XML používá znakovou sadu ISO 10646. Pod tím si asi nepředstavíte nic konkrétního. ISO 10646 je 32bitová znaková sada, která dokáže pojmout všechny dnes používané znaky všech jazyků. V XML proto můžeme vytvářet dokumenty, které obsahují texty v mnoha jazycích najednou – můžeme míchat např. češtinu, angličtinu, ruštinu, arabštinu a korejštinu zcela dle libosti. Pokud by dokumenty obsahovaly pouze český text, bylo by ukládání přímo v ISO 10646 zbytečné plýtvání místem. XML dokument proto může být v libovolném kódování (např. windows-1250, iso- 8859-2). Kódování je však v každém dokumentu přesně určeno, takže odpadají problémy s konverzí z jednoho kódování do druhého. Je hned jasné, v jakém kódování dokument je. 17 XML Vysoký informační obsah Pomocí XML značek vyznačujeme v dokumentu význam jednotlivých částí textu. Říkáme "toto je název výrobku, tohle zase telefonní číslo a tohle je číslo našeho účtu". Dokumenty obsahují mnohem více informací, než kdyby se používalo prezentační značkovaní – tohle je tučným písmem Arial o velikosti 12 bodů zarovnané vlevo. 18 XML Snadná konverze do dalších formátů V mnoha případech potřebujeme XML dokument zobrazit na nějakém běžném médiu – na obrazovce, na papíře. V tomto případě už samozřejmě chceme přesně ovlivnit, jak se obsah jednotlivých značek zobrazí. XML samo o sobě žádné takové prostředky nenabízí. Existuje však několik stylových jazyků, které umožňují definovat, jak se mají jednotlivé elementy zobrazit. Souboru pravidel nebo příkazů, které definují jak se dokument převede do jiného formátu se říká styl. 19 XML Stylových jazyků existuje dnes několik. Mezi nejznámější patří asi kaskádové styly (CSS). Ty lze použít pouze pro jednoduché formátování, které dobře poslouží pro zobrazení dokumentu na obrazovce v XML editoru nebo v prohlížeči. Pro náročnější aplikace slouží jazyk XSL (eXtensible Stylesheet Language). Ten umožňuje před samotným zformátováním dokument různě upravovat a transformovat (části dokumentu třeba vypustit nebo naopak automaticky vygenerovat obsah dokumentu). Dvě části: XSLT (transformace), XSLFO (formátovací objekty) Společně s XML lze použít i velice výkonný, i když pro některé aplikace příliš složitý, jazyk DSSSL (Document Style Semantics and Specification Language), který byl původně vyvinut pro potřeby jazyka SGML. 20 XML Automatická kontrola struktury dokumentu XML nám umožňuje definovat si vlastní sadu značek, které chceme v dokumentu používat. Tuto možnost samozřejmě využít nemusíme – můžeme používat jaké značky chceme. Pokud si však předem pomocí DTD definujeme, jaké značky může dokument obsahovat, máme další život mnohem lehčí. Zcela automaticky můžeme kontrolovat, zda dokument obsahuje pouze povolené značky. Programu, který kontroluje správnost XML dokumentů, se říká parser. To má velký význam i při vývoji aplikací. Pro čtení dat můžeme použít parser, který za nás detekuje většinu chyb v datech – obrovsky nám to ušetří práci. 21 XML K čemu můžeme XML použít již dnes B2B – business-to-business aplikace „Inteligentní“ webové stránky Elektronické publikování Univerzální datový formát 22 XML B2B – business-to-business aplikace Výměnu informací mezi obchodními partnery v elektronickém formátu. Jako vhodný formát pro přenos dat se jeví právě jazyk XML, který je velice jednoduchý a podporovaný na mnoha počítačových platformách. Pomocí XML si firmy mohou vyměňovat objednávky, faktury a mnoho dalších údajů. To bylo možné již dříve díky EDI (Electronic Data Interchange). Datové formáty používané v EDI byly však dost složité a jejich implementace byla poměrně nákladná. Navíc jednotlivé EDI systémy nebyly mezi sebou kompatibilní, a tak bylo často potřeba informační systém speciálně upravit pro každého dalšího obchodního partnera, se kterým jsme chtěli komunikovat elektronicky. 23 XML Inteligentní“ webové stránky Nasazení na Webu. Možnost definice vlastních značek, které přesně vyznačí význam jednotlivých částí stránky bude mít pozitivní efekt na přesnost a rychlost vyhledávání informací. V zásadě lze XML pro tvorbu stránek využít dvěma způsoby. První, více revoluční přístup, počítá s tím, že stránky budou používat zcela vlastní sady značek. Pro mnoho aplikací je však mnohem jednodušší používat již zažité HTML značky a pouze je vhodně doplnit o pár dalších, kterými se označí části stránky důležité pro vyhledávání. XHTML jazyk 24 XML Elektronické publikování Papír však dnes není jediné cílové médium. Často potřebujeme jeden dokument v několika různých formátech – jako tištěnou knihu, sadu provázaných webových stránek nebo hypertextovou příručku na CD-ROMu. Stojíme před novým problémem – už nestačí pohodlně vytvořit text a ten rozmnožit v libovolném počtu výtisků. My navíc potřebujme jeden text publikovat v několika naprosto odlišných formátech. 25 XML SGML HTMLXML 26 XML Různé xml (odlišná data, ale stejné značky) a jeden styl (definice vzhledu) vytvoří dokumenty podobného typu styl+ XML = Stejný vzhled dokum entu 27 XML Různé styly vytvoří ze stejného xml různé dokumenty XML + styly = dokum enty 28 XML Element – základ struktury XML dokumentu Obsah elementu: Počáteční značka (tag) Obsah elementu Koncová značka = lomítko + počáteční značka Značky je zapsaná v lomených závorkách Př. obsah ukazky Prázdný element = 29 XML Názvy značek Musí začínat písmenem nebo podtržítkem Dále písmena, číslice, podtržítka, pomlčky a tečky Jiné znaky nejsou povoleny Xml je case senzitive nějaký text je chybně Elementy se nesmí křížit U každého elementu (počáteční značky) se může vyskytnout atribut, je oddělen mezerou od názvu značky, pak rovnítko, je uzavřen v apostrofech nebo uvozovkách nějaký text 30 XML Zakázané znaky – místo nich vestavěné znakové entity Znak < nahrazuje entita < Znak > nahrazuje entita > Znak & nahrazuje entita & Znak “ nahrazuje entita " Znak ´ nahrazuje entita &apos 31 XML Poznámka – komentář 32 XML Příklad Karel Novak Kamenicky 1 Brno 444 555 666 novakkarel@seznam.cz 33 XML Příklad s chybami Karel Novák Kameničky 1 Brno 444 555 666 novakkarel@seznam.cz 34 XML Proč chyby? Novák, Kameničky – je použitá diakritika, ale není sděleno, jaké kódování se bude používat, implicitní kódování nezná češtinu /Telefon – v koncové značce je použité velké písmeno T, v začátečním je malé t, jde o dvě různé značky (XML je case senzitive) /e-meil – rozdíl od začáteční značky e-mail 35 XML U některých elementů na obrazovce (odkazy v následujícím snímku) je znak – (znak mínus) Jde o ty elementy, které obsahují ještě jiné elementy, pomocí mínus je mohu skrýt nebo zobrazit pomocí plus 36 XML Ukázky Ukázka první a třetí jsou ukázky správně syntakticky napsaného dokumentu (well formed document), ve třetí ukázce je přidán řádek s verzí XML a použitým kódováním UKAZKAXML.xml UKAZKAXMLchyby.xml UKAZKAXMLkodovani.xml 37 XML Pokud dokument odpovídá syntaktickým pravidlům, říkáme že se jedná o správně strukturovaný dokument, well-formed document. 38 XML Ale je ještě sada pravidel pro tvorbu určitého typu dokumentu, soubor podmínek. Jde o Definici Typu Dokumentu (Document Type Definition) neboli DTD. Jde o důležitou vlastnost, zděděnou od SGML.Umožní nám definovat vlastní sadu značek. Pokud dokument odpovídá všem pravidlům v určitém DTD, říkáme že je validní. 39 XML DTD Element Jméno Obsah Atribut 40 XML Element Obecný tvar Každá deklarace začíná Př. 41 XML Obsah elementu Je určen modelovou skupinou Skládá se ze závorek a minimálně jednoho jmenného symbolu Druhy obsahu elementu Data (text) tvar (#PCDATA), # určuje že se nejedná o název elementu Př. 42 XML Druhy obsahu elementu Prvek, který obsahuje další elementy Element aaa obsahuje právě jeden element bbb Element aaa obsahuje vždy jeden element bbb a ccc v daném pořadí Element aaa obsahuje buď jeden bbb nebo jeden ccc 43 XML Druhy obsahu elementu Předchozí deklarace byly vždy pouze pro jeden element bbb nebo ccc Více elementů bbb (může se objevit jednou i vícekrát, tj. minimálně jednou) Element bbb buď jednou nebo vůbec ne Element bbb se může vyskytnou v libovolném počtu 44 XML Druhy obsahu elementu – identifikátory kvantity Libovolný počet opakování (0 a vícekrát)* Výskyt jednou nebo vůbec ne (0 nebo jedenkrát) ? Výskyt alespoň jednou (jednou a vícekrát)+ Nahrazuje slovo nebo| Přesně určené pořadí, 45 XML Druhy obsahu elementu Identifikátory kvantity se mohou použít na celou modelovou skupinu Kombinace elementů bbb, ccc se musí objevit alespoň jednou Musí být aaa, dále musí být bbb nebo ccc 46 XML Mimo deklarace obsahu může DTD obsahovat i deklaraci atributů Tvar: V elementu aaa může jeho atribut ccc obsahovat skoro libovolná data (ne např. < &), CDATA je Character Data < aaa ccc=“50.8”) > text 47 XML Atributy Tato varianta stanovuje, že hodnota atributu ddd je složena z písmen, číslic, teček, pomlček, podtržítek a dvojteček, tj. vyhovuje syntaxi tvorby jmen xml elementů (ale neplatí omezení pro první znak písmeno). Pokud chceme i mezery mezi znaky, tak je atribut NMTOKENS. < aaa ddd=“4VB”) > nějaký text < aaa ddd=“A B Ceda”) > nějaký text 48 XML Další typy atributů ID, IDREF, IDREFS Výčet možných hodnot, případně implicitní hodnota (řetězec v uvozovkách za výčtem) Atribut bbb může nabývat hodnot 1,2,3,4, pokud neuvedeme, tak má hodnotu 1 Příklad: < aaa bbb=“3”) > nějaký text 49 XML Další typy atributů Můžeme ještě použít slovo #REQUIRED (atribut je povinný) nebo #IMPLIED (atribut je volitelný) nebo #FIXED před implicitní hodnotou (určená hodnota je jediná, kterou může atribut nabýt). < aaa bbb=“nic” ddd=“ABC” > text 50 XML Následující ukázka je převzatá z existujícího systému na Mendelově zemědělské a lesnické univerzitě v Brně. Jde o část DTD tabulky pro vytváření studijních podkladů. 51 XML 53 XML Jak připojím DTD k dokumentu XML Zapíšeme na začátek xml dokumentu Viz další snímek Nebo uložíme DTD jako samostatný soubor a na začátku xml dokumentu je cesta k DTD. Viz další snímek Pokračování prezentace po ukázkách 54 XML ]> Karel Novák Kameničky 1 Brno Zpět na poslední zobrazený snímek 55 XML Karel Novák Kameničky 1 Brno 444 555 666 novakkarel@seznam.cz 56 XML Soubor XMLKompletníbezDTD.dtd je uložen ve stejném adresáři jako xml soubor, ve kterém je DTD používáno (relativní adresování) 57 XML Zajímavé odkazy http://www.xml.com Zpravodajský server věnovaný XML. Komentáře k nově vyvíjeným standardům, recenze programů atd. http://www.biztalk.org Server firmy Microsoft zamýšlený jako repozitory schémat využívaných v různých oblastech. http://www.xml.org Další server, který se chce stát repozitory DTD, schémat atd. http://www.oasis-open.org/cover/ Jeden z nejlepších informačních zdrojů o XML a SGML. http://www.zvon.org Výukové materiály o XML, XSL a dalších. http://www.xmlsoftware.com/ Velice obsáhlý přehled programů, které umožňují pracovat s XML. V přehledu jsou uvedeny komerční i „free“ produkty. http://www.w3.org/XML/ Stránky konsorcia W3C věnované jazyku XML obsahují zajímavé odkazy a samozřejmě specifikaci XML a dalších souvisejících jazyků. 58 XML Literatura Kosek, J.: XML pro každého. Grada Publishing, Praha 2000. ISBN 80-7169-860-1 Grusová, J.: XML pro úplné začátečníky. Computer Press, Praha 2002. ISBN 80-7226-697-7 www.w3.org