Obsah lekce:
Technologie značkovacích jazyků se dnes využívají především v podnikové sféře (B2B - co to je?). Prvotním stimulem pro vznik značkovacích jazyků byla potřeba standardizace a jakési jednotnosti v rámci výměny informací.
Obrovský boom počítačů způsobil velký konkurenční boj o platformy, operační systémy a samozřejme softwarové aplikační vybavení - zejména pro kancelářské použití. Každý systém obsahuje vlastní řešení (formát) dat. Z uvedeného plyne, že systémy spolu nejsou v podstatě schopny komunikovat a vyměňovat si informace (v momentě, kdy například společnost Microsoft vydá novou verzi svého kancelářského balíku, tak zpravidla přichází i nový formát pro ukládání vytvořených souborů a tím i přinejmenším dočasná naprostá neschopnost jiných aplikací takovéto dokumenty otevřít). Řešením by mohl být nějaký standard, pomocí něhož by se soubory ukládaly a šly pak zpracovat libovolným program, který by tento standard podporoval.
Avšak hlavní hráči na trhu softwaru si hájí a vytváří vlastní uzavřené formáty dokumentů. Sledují tak cíle spíše marketingové než snahu o zlepšení situace. Uzavřený formát jednotlivých dokumentů nahrává zejména řešením s největším rozšířením a posiluje jejich pozici na trhu. Dodnes se tento trend nezměnil a byl nastaven především Microsoftem, lídrem nejen vývoje operačních systémů, ale i kancelářského softwaru.
Firmy s vytvořenou rozsáhlou datovou základnou, desítky tisíc dokumentů, prakticky nemají možnost přejít na jiný software. S problémem nekompatibility se dokonce potýkají i jednotlivé verze nejrozšířenějšího kancelářského softwaru MS Office.
Každá aplikace si data ukládá typicky ve svém uzavřeném formátu, který je uložen v binární podobě a je pro člověka nečitelný. Výhodou je obvykle menší velikost uloženého souboru. Snaha o změnu se však objevila už dávno v minulosti. Jedním z prvních předchůdců XML byl jazyk GML (Generalized Markup Language) užívaný IBM pro uchovávání právních dat, známý už v roce 1960. V roce 1986 vzniká jazyk SGML (Standard Generalized Markup Language), který je tak komplexní, že jeho složitost brání většímu rozšíření.
Odvozeninou jazyka SGML se později stává jazyk HTML (HyperText Markup Language), který se používá pro tvorbu internetových stránek.
Jazyk HTML se ujal především pro jeho jednoduchost. Definice jazyka vymezuje jen omezenou skupinu elementů určujících strukturu dokumentu, jako velikost nadpisu, odstavec, blok textu, tučný text apod. Tím byla splněna potřeba uniformního formátu zajišťujícího přenositelnost a možnost sdílení textu mezi organizacemi a napříč jednotlivými platformami. Ten však umožňuje zapisovat nejen strukturu, ale také říkat co jak vypadá a tím opět kombinuje formální a prezentační logiku (význam a vzhled). Příkladem tohoto problému je například využívání tabulek pro tvorbu designu stránky. Navíc je HTML příliš jednoduché a má jen velmi omezenou množinu značek. Tímto byl zadán stimul pro vytvořené XML (eXtensible Markup Language), což je další derivát SGML.
XML popisuje pouze logickou strukturu, neobsahuje žádné prezentační tagy (vzhled) a umožňuje jednotlivým blokům textu dát význam nejen hodnotový (větší nebo menší), ale přímo popisuje logický význam dat.
−<CATALOG>
−<CD>
<TITLE>Songs of Distant Earth</TITLE>
<ARTIST>Mike Oldfield</ARTIST>
<COUNTRY>GB</COUNTRY>
<COMPANY>Warner</COMPANY>
<PRICE>499</PRICE>
<YEAR>1994</YEAR>
</CD>
−<CD>
<TITLE>Seascapes</TITLE>
<ARTIST>Michael Jones</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Narada</COMPANY>
<PRICE>399</PRICE>
<YEAR>1988</YEAR>
</CD>
</CATALOG>
Značkovací jazyk (Markup Language) je jazyk, jehož zdrojový text obsahuje současně jak vlastní text, tak instrukce pro jeho zpracování. Ty se zpravidla vyskytují v podobě příkazů (commands) či značek (tags). Zdrojovým textem bývá obyčejný ASCII soubor, což umožňuje jeho snadnou editaci i nejjednoduššími textovými editory, jako je například Poznámkový blok v MS Windows nebo vi v unixu.
Typickým rysem značkovacích jazyků jsou znaky se speciálním významem. Ty slouží k vymezení řídicích konstrukcí - příkazů či značek. Například v XML, které je nepochybně nejvýznamnějším současným představitelem značkovacích jazyků, mají speciální význam znaky „menší než“ (<) a „větší než“ (>), jež zahajují a ukončují značky. Text mezi nimi je chápán jako instrukce, kterou využije zpracovávající software. Zdrojový text může vypadat například takto:
<h1>Hlavní nadpis</h1>
<p>Text prvního odstavce se <em>zvýrazněným</em> slovem.</p>
Výsledek tohoto zápisu v HTML:
Text prvního odstavce se zvýrazněným slovem.
Dvojice značek - zahajující <h1> a ukončující </h1> - v něm označuje nadpis atd. Jelikož některým znakům byl přidělen speciální význam, musí značkovací jazyk obsahovat také konstrukce pro jejich vložení do textu.
Tradičními představiteli značkovacích jazyků byly nástroje pro formátování textu - programy nroff, troff a další operačního systému Unix či typografický systém TeX. Za značkovací jazyk lze označit i PostScript.
Hlavní výhodou značkovacích jazyků je to, že díky otevřenému textovému formátu nevyžadují speciální programové vybavení pro svou editaci. Specializované programy či alespoň adaptace některých výkonnějších editorů ale jejich editaci podstatně usnadní a zpříjemní. Dokumenty v těchto jazycích lze snadno strojově generovat. Nástroje pro jejich zpracování většinou bývají k dispozici zdarma a s otevřeným zdrojovým kódem. Na druhé straně jejich použití vyžaduje určité základní znalosti,ale křivka učení bývá poměrně strmá. Na rozdíl od WYSIWYG nástrojů není možné si ke značkovacímu jazyku sednout a bez znalosti jeho příkazů či značek jen tak experimentovat.
Mezi značkovacími jazyky lze vymezit dvě základní skupiny.
Jejich konstrukce slouží k popisu, co jsou informace obsažené v dokumentu zač. Typickými představiteli jsou XML či HTML - jejich prostřednictvím lze například vymezit na stránce nadpis, odkud kam sahají jednotlivé odstavce či popsat odkaz na jinou stránku. Je ponecháno na zpracovávajícím programu, jak s těmito informacemi naloží a jak je promítne například do zobrazení dokumentu.
Obsahují i výkonné instrukce na úrovni programovacího jazyka - typicky určitou formu pamětí či proměnných a nástroje pro přiřazování a využívání jejich hodnot. Výkonné jazyky zpravidla také umožňují velmi detailně popsat vizuální charakteristiky výstupu. Uživatel může tedy velmi přesně řídit vzhled výsledného dokumentu. Mezi procedurální jazyky patří TeX či PostScript. K demonstraci vyjadřovací síly prvního z nich v něm byl dokonce vytvořen interpret jazyka BASIC, přestože se jedná o typografický program.
HTML je asi nejznámější značkovací jazyk na světě, protože je používán k vytvoření téměř veškerých webových stránek (buď kostry pro další jazyky, nebo celých stránek).
Zkratka HTML znamená HyperText Markup Language a je to značkovací jazyk pro hypertext. Po dlouhém vývoji je nyní k dispozici verze 4.01, pracuje se na verzi 5, která přinese výrazné vylepšení. HTML si můžete zobrazit v každém prohlížeči, pokud zadáte příkaz Zobrazit zdrojový kód stránky.
<html> <!-- toto je komentář --> <head> <meta charset="kódování"> <title>Titulek stránky</title> </head> <!-- tělo dokumentu --> <body> <h1>Nadpis stránky</h1> <p>Toto je tělo dokumentu</p> </body> </html>
V předchozím zdrojovém kódu vidíme, že většina příkazů (tagů) je párová, i když to není podmínkou. Párový tag vypadá tak, že začíná značkou <znacka> a končí značkou </znacka>. Mezi tyto tagy se zapisuje jejich obsah.
V příkladu vidíme například párový tag title, jehož obsah je vypsán na horní liště v prohlížeči - jde tedy o název stránky. Dále si můžeme všimnout, že celá stránka je uzavřena v tagu html, který se skládá z částí head (zde se definují styly, název stránky, metadata, skripty a další) a body (zde se umisťuje obsah stránky - text, obrázky, videa, ...).
Texty uzavřené mezi značkami <!-- a --> jsou považovány za komentáře - zůstanou ve zdrojovém kódu, ovšem nebudou vykreslovány do stránky.
XML je zkratka pro Extensible Markup Language, česky rozšiřitelný značkovací jazyk, který byl vyvinut a standardizován. Používá se pro serializaci dat mezi programi a službami. Jeho zpracování je podporováno celou řadou nástrojů a programovacích jazyků.
Jazyk je určen především pro výměnu dat mezi aplikacemi a pro publikování dokumentů, u kterých popisuje strukturu z hlediska věcného obsahu jednotlivých částí, nezabývá se vzhledem.
<?xml version="1.0" encoding="UTF-8" ?> <!-- Poznamka je nutné přidat více receptů. --> <recept jméno="chleba" čas_přípravy="5 minut" čas_vaření="3 hodiny"> <titulek>Jednoduchý chleba</titulek> <přísada množství="3" jednotka="šálky">Mouka</přísada> <přísada množství="0,25" jednotka="unce">Kvasnice</přísada> <přísada množství="1,5" jednotka="šálku">Horká voda</přísada> <přísada množství="1" jednotka="kávová lžička">Sůl</přísada> <instrukce> <krok>Smíchejte všechny přísady dohromady a dobře prohněťte.</krok> <krok>Zakryjte tkaninou a nechejte hodinu v teplé místnosti.</krok> <krok>Znovu prohněťte, umístěte na plech a pečte v troubě.</krok> </instrukce> </recept>
Můžeme vidět, že strukturou je tento jazyk podobný jazyku HTML, také jsou jednotlivé položky uzavřeny mezi tagy. Na prvním řádku vidíme definici verze a kodování, která je důležitá, aby program, který bude soubor používat věděl, jak s ním zacházet.
Dále vidíme tag s názvem recept, který obsahuje jeden titulek, dále několik přísad a na konec instrukce, které se skládají z několika kroků. Obrovskou výhodou je, že tento zápis je pro většinu programu srozumitelný a navíc můžeme přidávat libovolné množství položek bez nutnosti tuto skutečnost ošetřovat v programu.
Můžete si všimnout tzv. atributů, které jsou přidány u jednotlivých přísad - atribut je vložen dovnitř závorek <> a jeho hodnota se vkládá do uvozovek. U přísad je tedy vždy přidán atribut množství, k němuž je přidána odpovídající hodnota. Stejným způsobem je přidána jednotka.
Zobrazení XML souboru v prohlížeči může vypadat například takto:
TeX je program pro počítačovou sazbu. Vytvořil jej profesor Donald Ervin Knuth, který v 70. letech 20. století nebyl spokojen s tím, jak školní nakladatelství sázelo jeho skripta určená studentům (ve skriptech se objevovalo mnoho chyb, především v matematických vzorcích, a ani typografie za mnoho nestála) a zpřístupnil jej zdarma pro ostatní.
TeX je populární zejména v oborech jako matematika, fyzika a informatika. Obecně je považován za nejlepší nástroj pro sazbu složitějších vzorců.
Pro TeX existuje několik sad maker (příkazů), například oblíbený LaTeX, který je rovněž zdarma.
\documentclass{article} \pagestyle{empty} \usepackage{czech} \begin{document} \bf{Zadání:} $$\log_3 \sqrt{3+x} + \log_3 \sqrt{x+4} = \log_3 \sqrt{2} + \log_3 \sqrt{7x+1}$$ \end{document}
Můžeme si všimnout, že z textu je sice částečně patrné, jaký obsah bude dokument mít, nicméně to rozhodně není jako dokument ve Wordu. Jednotlivé části dokumentu jsou popsány příkazy, které poté překladač přeloží.
Celý zdrojový kód jedné stránky v LaTeXu je uzavřen do příkazů \begin{document} a \end{document}. V hlavičce je uvedeno pár informací pro překladač - použitá sada písmen, styl pro stranu a typ dokumentu.
Příkaz \bf znamená nadpis, ve složených závorkách je uveden text tohoto nadpisu. Následuje matematický vzorec, který je uzavřen mezi znaky $$, protože sazba takových textů byla bez LaTeXu drahá. Ve vzorci jsou použity odmocniny (sqrt), logaritmy o základu 3 (log_3) a jednoduché sčítačí operace.
Výsledek tohoto kódu po překladu můžeme vidět v následujícím obrázku:
PostScript je programovací jazyk určený ke grafickému popisu tisknutelných dokumentů vyvinutý v roce 1985 firmou Adobe Systems Incorporated. Jeho hlavní výhodou je, že je nezávislý na zařízení, na kterém se má dokument tisknout. Je považován za standard pro dražší tiskárny. Díky svým rozsáhlým možnostem se však brzy stal i formátem k ukládání obrázků.
Jedná se o množinu matematických příkazů, které určují rozvržení stránky. Je pravda, že výsledný dokument může být podstatně větší, ovšem veškerý jeho obsah je převeden na jednoduché příkazy.
newpath 100 200 moveto 200 250 lineto 100 300 lineto closepath gsave 0.5 setgray fill grestore 4 setlinewidth 0.75 setgray stroke
Výsledný dokument, který bude vytisknut z těchto příkazů můžete vidět v následujícím obrázku:
Zdroj a další příklady zde (Paul Bourke).
Vidíme, že výsledný obrazec byl popsán elementárními příkazy typu "100 200 moveto" (posun vykreslovací hlavy na daný bod), "200 250 lineto" (čára z předchozího bodu do tohoto bodu) atd.
Zkratka znamená Extensible Application Markup Language a jedná se o jazyk vyvinutý společností Microsoft pro použití v technologiích .NET Framework 3.0 a 4.0, Silverlight, WPF a dalších. Jedná se opět o značkovací jazyk, který například v případě technologie Silverlight popisuje vzhled a obsah dokumentu.
<LinearGradientBrush> <LinearGradientBrush.GradientStops> <!-- no explicit new GradientStopCollection, parser knows how to find or create --> <GradientStop Offset="0.0" Color="Red" /> <GradientStop Offset="1.0" Color="Blue" /> </LinearGradientBrush.GradientStops> </LinearGradientBrush>
Tato část dokumentu může být použita pro pozadí libovolného prvku na stránce (například panelu, nebo tlačítka) a je v ní popsán lineární přechod, jeho jednotlivé barvy a jejich posuny. Prohlížeč, který podporuje Silverlight poté z tohoto kódu vykreslí element s odpovídajícím pozadím (HTML 4 nemá možnost vykreslovat přechody na pozadí).
Výsledné pozadí, který bude vykresleno, můžete vidět v následujícím obrázku (kvalita obrázku je horší kvůli převodu do jpg - méně barev):
Pro příklady byla využita http://www.wikipedia.org/.