Značkovací jazyk

**Značkovací jazyk** alebo **značkový jazyk** (z angl. *markup language*) kombinuje text a informáciu o texte (metainformáciu). Metainformácia, napríklad o logickej štruktúre alebo spôsobe prezentácie textu, sa vyjadruje použitím *značiek* (**tags**), ktoré sú premiešané s primárnym textom. Najznámejším dnes používaným značkovým jazykom je hypertextový jazyk HTML (z angl. *Hypertext Markup Language*), jeden zo základov World Wide Webu.

Historicky sa značky používali (a používajú) v procese publikovania rukopisu na komunikáciu medzi autormi, korektormi, redaktormi a tlačiarmi.

## Triedy značiek

### Prezentačné značky
Prezentačné značky označujú vizuálny vzhľad celého textu alebo jeho časti. Napríklad v textovom dokumente môže mať názov kapitoly priradenú značku, ktorá hovorí, že text má byt umiestnený v strede riadku, vysádzaný tučným písmom s väčším rezom písma. V podstate všetky aplikácie na spracovanie textu a počítačovú typografiu používajú prezentačné značky. V priebehu normálneho používania sú pre používateľa skryté, a viditeľný je len výsledná prezentačná forma, čím sa docieli takzvaný efekt WYSIWYG.

### Procedurálne značky
Procedurálne značky sa tiež týkajú prezentácie textu, ale zvyčajne sú viditeľné pre používateľa, ktorý upravuje text, alebo ich používateľ ich do textu sám vkladá. Takýto text so značkami potom dávkovo spracováva softvér a ukladá výstupný súbor. Vo väčšine prípadov schopnosti analýzy procedurálneho značkovania tvoria Turingovo úplný programovací jazyk. Medzi príklady procedurálnych značkovacích jazykov patria nroff, troff, TeX a PostScript. Procedurálne značky sa v širokej miere používajú v profesionálnych publikovacích aplikáciách. Procedurálne značky sa používajú aj v softvéri Mediawiki.

### Opisné značky
Opisné značky používajú návestia na fragmenty textu bez toho, aby vynucovali nejké konkrétne zobrazovacie alebo spracovacie sémantiky. Napríklad Atom syndication language poskytuje značky na označenie „aktualizovanej“ časovej známky, ktorá je priradená tým, kto ho publikuje v čase, keď sa niektorá informačná položka zmenila. Kým špecifikácia Atom hovorí o význame „aktualizovanej“ časovej známky a značky používané na jej identifikáciu detailne, nehovorí nič o tom, akým spôsobom by táto informácia mala byť prezentovaná používateľovi. Software môže použiť túto značku mnohými spôsobmi, vrátane mnohých, ktoré návrhári jazyka Atom nemohli predvídať. SGML a XML sú systémy explicitne navrhnuté, aby podporovali návrh opisných značkových jazykov; príkladmi takýchto jazykov sú Atom, MathML a XBRL.

Rozdelenie značkovacích jazykov do tried je často nejasné. Napríklad HTML obsahuje značkové prvky, ktoré sú čisto prezentačné, (napr. &lt;b&gt; pre tučné písmo) a iné, ktoré sú čisto opisné (atribút „href=“). V HTML tiež existuje element „pre“, ktorý obsahuje oblasť prezentačného značkovania, ktorá bude rozložená presne tak, ako bola napísaná.

Za hlavnú prednosť značkového jazyka sa považuje jeho flexibilita; ak sa označia fragmenty textu ako "čo sú" na rozdiel od toho "ako by mali byť zobrazené", je možné napísať software tak, aby spracovával tieto fragmenty užitočnými spôsobmi, ktoré nebrali do úvahy návrhári jazyka. Napríklad hyperlinky HTML, pôvodne navrhnuté na aktiváciu človekom, sa tiež používajú vyhľadávačmi, ktoré tak objavujú nový materál na zaindexovanie a odhad popularity webových zdrojov.

Prezentačné značkovacie systémy zvyčajne obsahujú "pomenované štýly" alebo ekvivalent, ktorý do istej miery replikuje účinky opisného značkovania. Podobne procedurálne značkovacie jazyky zvyčajne obsahujú "makrá" na dosiahnutie podobného cieľa.

## História
Termín "značka" je odvodený od tradičnej publikovacej techniky "označkovania" rukopisu, to znamená pridania inštrukcí pre tlačiara na okraje rukopisu. Po storočia túto úlohu vykonávali ľudia známi ako "značkovači", ktorí značkovali text, aby špecifikovali, aký font, štýl a veľkosť majú byť použité na každú časť, a potom odovzdali rukopis niekomu inému na únavnú úlohu ručného sadzania.

Myšlienka "značkovacích jazykov" bola zjavne po prvýkrát prezentovaná vedúcim pre publikáciu Williamom W. Tunnicliffeom na konferencii v roku 1967, hoci uprednostnil názov "všeobecné kódovanie". Tunnicliffe neskôr viedol vývoj štandardu zvaného GenCode pre publikačný priemysel. Návrhár kníh Stanley Fish tiež publikoval špekuláciu podobným smerom na konci 60-tych rokov. Výskumník IBM Charles Goldfarb je však dnes všeobecne považovaný za "otca" značkovacích jazykov, vďaka jeho výskumu od roku 1969, ktorý transformoval myšlienku do skutočne fungujúceho produktu. Nezávisle od Tunnicliffa a Fisha Goldfarb narazil na rovnakú základnú myšlienku, kým pracoval na projekte, ktorý mal pomôcť novinám digitalizovať pracovný cyklus; neskôr sa oboznámil s prácou Tunnicliffa a Fisha a dnes s nimi pozorne zdieľa zásluhy.

Medzi rané príklady značkovacích jazykov dostupných mimo publikačného priemyslu patria sadzacie nástroje na Unixových systémoch ako troff a nroff. V týchto systémoch sa formátovacie príkazy vkladali do textu dokumentu tak, aby sadzací softvér mohol naformátovať text podľa požiadaviek redaktora. Správne vytlačenie dobumentu bol iteratívny proces pokusu a omylu. Dostupnosť WYSIWYG ("what you see is what you get") publikačného softvéru priblížilo mnoho z použiteľnosti týchto jazykov bežným používateľom, hoci seriózna publikačná práca stále používa značkovanie na špecifikáciu nevizuálnej štruktúry textu.

Iným veľkým publikačným štandardom bol TeX, vytvorený a neustále zdokonaľovaný Donaldom Knuthom v 70-tych a 80-tych rokoch. TeX sa sústredil na detailné rozloženie textu a opis fontu pre tlač matematických kníh vo vysokej kvalite. To vyžadovalo, aby Knuth strávil značnú dobu skúmaním umenia sadzania. TeX však vyžaduje značnú zručnosť používateľa, a preto sa používa hlavne na univerzitách.
Prvý jazyk, ktorý jasne oddelil štruktúru a prezentáciu bol Scribe, vyvinutý Brianom Reidom a opísaný v jeho dizertačnej práci v roku 1980. Scribe bol revolučný v mnohých smeroch, v neposlednom rade predstavil myšlienku štýlov oddelených od označkovaného dokumentu. Scribe ovplyvnil vývoj Generalized Markup Language (neskôr SGML) a je priamym predchodcom HTML a LaTeXu. LaTeX je de-facto štandard v mnohých vedeckých disciplínach.

V skorých 80-tych rokoch myšlienka, že značkovanie by sa malo zameriavať na štrukturálne aspekty dokumentu a nechať vizuálnu prezentáciu na interpretátorovi viedlo k vytvoreniu SGML. Jazyk vyvinula komisia, ktorej predsedal Goldfarb. Zahŕňal myšlienky z mnohých zdrojov, vrátane Tunnicliffovho projektu, GenCode.

SGML špecifikoval syntax značkovania v dokumentoch, ako aj iný systém (tzv. "metajazyk") pre samostatný opis významu značiek. To umožnilo autorom tvoriť a používať akékoľvek želané značkovanie a vybrať si štítky, ktoré im dávali najväčší zmyslel. Medzi príklady takýchto značkovacích jazykov založených na systéme patria TEI a DocBook. SGML ISO urobila medzinárodným štandardom v roku 1986. 

SGML sa však vo všeobecnosti považuje za neohrabaný, čo je postranný účinok snahy robiť príliš mnoho príliš flexibilným spôsobom. Napríklad SGML v istých kontextoch umožnilo nepoužiť koncové štítky, pretože sa myslelo, že značkovanie bude vytvárať prepracovaný podporný personál, ktorý uprednostní tu a tam ušetrenie niekoľkých klávesov.

Do roku 1991 sa zdalo, že SGML bude obmedzené na medzné použitie, kým WYSIWYG nástroje (ukladajúce dokumentu v proprietárnych binárnych formátoch) zaujmú prevažnú väčšinu spracovania dokumentov.

Situácia sa dramaticky zmenila keď Sir Tim Berners-Lee použil niečo zo syntaxe SGML bez metajazyka na vytvorenie HTML. V HTML značkovanie pozostáva zo sady "známych" značiek, ktoré sú schopné vykonať bežné formátovacie úlohy. Jazyk však bol pôvodne vytvorený na označkovanie jednoduchých vedeckých dokumentov a preto bol do veľkej miery rozšírený, aby mohol ponúknuť dnešný bohatý obsah webu, a z tohto dôvodu dodatky často nesledujú žiaden logický návrh, hoci posledné snahy adresujú prave toto. HTML je pravdepodobne najpoužívanejším formátom dokumentov v dnešnom svete.

Ďalším, novším značkovacím jazykom, ktorý v súčasnosti nadobúda na význame je XML (Extensible Markup Language). Na rozdiel od HTML, ktoré používa sadu značiek s definovaným významom, XML umožňuje používateľovi vytvoriť ľubovoľnú želanú značku (preto je rozšíriteľný) a následne opísať túto značku v metajazyku známom ako "DTD" (Document Type Definition). Písanie DTD je však náročné, pretože ich syntax je odlišná od XML, a tak boli nedávno dpolnené o XML schému, čo je metajazyk definovaný prostriedkami samotného XML.

XML je konceptuálne podobné SGML, a v skutočnosti vo všeobecnosti, XML je *podmnožinou* SGML a *nadmnožinou* HTML. Hlavný účel XML (na rozdiel od použitia SGML) je udržiavať systém jednoduchším tým, že sa zameriame na špecifický problém -- dokumenty na internete. Tým sa XML vyhlo komplikovanosti SGML. Najnovšou implementáciou HTML je XHTML, alebo *e*'X**tensible **H**yper**t**ext **M**arkup **L*'anguage*, prepracovanejšia a robustnejšia verzia, ktorá je aplikáciou *XML*, a tak požaduje, aby boli dokumenty "správne utvorené" (well-formed), a na druhú stranu definuje zväčša známe HTML značky. Hlavné rozdiely medzi HTML a XHTML z pohľadu kódovania v jazyku je, že *všetky značky musia byť uzatvorené*, vrátane tzv. "prázdnych" značiek ako , ktoré napriek tomu, že nemôžu obsahovať nič iné, musia byť vždy uzatvorené takto: .

## Vlastnosti
Bežnou vlastnosťou mnohých značkových jazykov je, že miešajú text dokumentu so značkami v rovnakom dátovom toku či súbore. Tu je napríklad fragment textu označkovaný v HTML:

 &lt;h1&gt; Anatidae &lt;/h1&gt;
 &lt;p&gt;
 The family &lt;i&gt;Anatidae&lt;/i&gt; includes ducks, geese, and swans,
 but &lt;em&gt;not&lt;/em&gt; the closely-related screamers.
 &lt;/p&gt;

Kódy v uhlových zátvorkách &lt;ako tu&gt; sú značkovacie inštrukcie (známe ako „tags“), kým text medzi inštrukciami je samotný text dokumentu. Kódy „h1“, „p“ a „em“ sú príkladmi *štrukturálnych* značiek, pretože opisujú mienený zmysel či účel textu, ktorý obsahujú. Konkrétne „h1“ znamená „toto je nadpis prvej úrovne“, „p“ znamená „toto je odsek textu“ a „em“ znamená „toto je zvýraznené slovo“. Zariadenie čítajúce takéto štrukturálne značkovanie môže na jeho prezentáciu použiť vlastné štýly -- použiť väčší font, hrubý font, odsadenie alebo čokoľvek sa mu hodí. Inštrukcia „i“ je príkladom *prezentačnej* značky. Špecifikuje presný vzhľad textu (v tomto prípade šikmý font) bez toho, aby špecifikovala dôvod jeho použitia.

Text Encoding Initiative (TEI) publikovala vyčerpávajúce smernice pre kódovanie textov z oblastí humanitných a sociálnych vied, vyvinuté počas rokov medzinárodnej spolupráce.Tieto smernice používajú nespočetné projekty kódujúce historické dokumenty, práce jednotlivých učencov, období, žánrov atď.

## Alternatívne použitie
Kým myšlienka značkového jazyka pochádza z textového dokumentu, použitie značkových jazykov zaznamenáva rozmach v oblastiach ako vektorová grafika, webové služby, content syndication a používateľské rozhrania. Väčšina z nich je aplikáciami XML, keďže XML je čistý, dobre formátovaný a rozšíriteľný značkový jazyk. Použitie XML tiež vedie k možnosti kombinovať viacero značkových jazykov v jedinom profile, ako XHTML+SMIL a XHTML+MathML+SVG http://www.w3.org/TR/2002/WD-XHTMLplusMathMLplusSVG-20020809/.

## Pozri aj
* CSS (Cascading Style Sheets)
* Zoznam značkových jazykov

## Referencie
* smernice TEI 
* Markup systems and the future of scholarly text processing  by James H. Coombs, Allen H. Renear, and Steven J. DeRose. Originally published in the November 1987 CACM, and reprinted several times in other forums, this article introduced many of the concepts now used in discussing markup languages, and lays out the basic arguments for the superior usability of descriptive markup.
* [3]DeRose, Steven J. „The SGML FAQ Book.“ Boston: Kluwer Academic Publishers, 1997. ISBN 0-7923-9943-9
* [4]http://www.w3.org/TR/2004/REC-xml11-20040204/ Extensible Markup Language (XML)]
* [5]Reid, Brian. „Scribe: A Document Specification Language and its Compiler.“ Ph.D. thesis, Carnegie-Mellon University, Pittsburgh PA. Also available as Technical Report CMU-CS-81-100.