Značkovací jazyk () je v informatice prostředek k obohacení textu o dodatečné informace – nejčastěji o významu, struktuře a způsobu zobrazování jednotlivých částí textu. Dodatečné informace se vkládají přímo do textu v podobě značek (), příkazů () nebo direktiv. Značky se používají od vynálezu knihtisku, autor dával tiskařovi značkou na vědomí, že bude změna typu písmen, že má vynechat místo na obrázek, atd. Výsledný zdrojový text je stále obyčejný textový soubor, často v kódování ASCII, což umožňuje jeho editaci i nejjednoduššími textovými editory, jako je například Poznámkový blok v MS Windows nebo vi v Unixu. Nejznámějšími značkovacími jazyky jsou HTML (HyperText Markup Language) a XML, ve kterých je vytvořena většina WWW stránek.
Tradičními představiteli značkovacích jazyků byly nástroje pro formátování textu – programy nroff, troff z operačního systému Unix či typografický systém TeX. Za značkovací jazyk lze označit i PostScript a RTF.
Pro vymezení řídicích konstrukcí – značek či příkazů – slouží znaky se speciálním významem. V nroffu a troffu je to znak tečka (.) na začátku řádku, v PostScriptu lomítko (/), v TeXu a RTF zpětné lomítko (\), v HTML a XML znaky „menší než“ (<) a „větší než“ (>), jež ohraničují značky. Text mezi nimi je chápán jako instrukce, kterou využije zpracovávající software.
Velkou 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, které lze však poměrně rychle získat. Na rozdíl od WYSIWYG nástrojů však není možné si ke značkovacímu jazyku sednout a bez znalosti jeho příkazů či značek jen tak experimentovat.
Ukázka použití značkovacího jazyka Krátký text ve značkovacím jazyce může vypadat například takto:
<h1>Nadpis</h1> <p>Text prvního odstavce se <em>zvýrazněným</em> slovem.</p> Dvojice značek – zahajující <h1> a ukončující </h1> – označuje nadpis nejvyšší (první) úrovně.
Značkovací jazyk musí obsahovat speciální konstrukce pro zobrazení znaků, které mají zvláštní význam. Obvykle obsahuje i konstrukce pro zápis znaků, které se nevyskytují ve znakové sadě použité pro zápis zdrojového textu souboru. V HTML a XML lze speciální znaky "<", ">", "&" a znaky "á" a "€" vložit do textu následujícím způsobem:
Speciální znak Způsob zadání < < > > & & á á € € příp. €
Rozdělení značkovacích jazyků Značkovací jazyky lze rozdělit do několika skupin, jejichž hranice ale nejsou přesně stanovené.
Jazyky popisné (deskriptivní) 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 stanovit, která část textu je 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.
Jazyky výkonné (procedurální) 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. K procedurálním jazykům 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. Jeho nadstavba, LaTeX, už patří spíše k jazykům popisným.
Jazyky prezentační Soustřeďují se především na způsob, jak bude označkovaný text zobrazen nebo vytištěn. Je to přístup typický pro textové procesory, které ovšem obvykle používají binární značkování, nebo formátovací příkazy ukládají odděleně od textu. Nejrozšířenějším prezentačním jazykem je alternativní formát textového procesoru Word – Rich Text Format (RTF).
Historie
Etymologie a původ Pojem značkování () souvisí se středověkou praxí připisování poznámek do rukopisů a s korektorskými značkami, sloužící k opravám a úpravám textu před tiskem.
Značkování na počítačích Počáteční impuls pro vývoj značkovacích jazyků lze vystopovat v programu RUNOFF, jehož jméno vychází z I'll run off a copy (vyjedu kopii), který napsal Jerome H. Saltzer v jazyce symbolických adres MAD v roce 1964 pro operační systém CTSS. RUNOFF se stal přímým předchůdcem programu runoff pro formátování dokumentů na operačním systému Multics. Od něho odvozují svůj původ unixové programy troff a nroff a jejich následníci. Tyto programy patří mezi první šířeji používané počítačové systémy pro přípravu textů používající značkovací jazyk mimo polygrafický průmysl. Na základě formátovacích příkazů, které se vkládají přímo do textu dokumentu, se vytváří příkazy pro zformátování textu pro určité výstupní zařízení, aby se výstup co nejvíce blížil požadavkům autora. Řídicí instrukce byly často specifické pro konkrétní výstupní zařízení. Při jejich použití se nezřídka postupovalo metodou pokusu a omylu, dokud nebyl vzhled výsledného dokumentu uspokojivý. Když začaly být dostupné systémy WYSIWYG (), mnoho uživatelů přešlo na tyto systémy. Přímé používání značkovacích jazyků pro typografii se nyní většinou omezuje na profesionální přípravu textu k publikování. WYSIWYG editory však obvykle podporují ukládání dokumentů ve formátech založených na některém ze značkovacích jazyků.
Pod vlivem programu RUNOFF William W. Tunnicliffe v roce 1967 prezentoval na konferenci značkovací jazyk pro zpracování textů na počítači pod názvem obecné kódování (). V 70. letech 20. století Tunnicliffe vedl vývoj standardu pro polygrafický průmysl nazývaného GenCode, a později se stal prvním předsedou výboru International Organization for Standardization, který vytvořil první standardní deskriptivní značkovací jazyk SGML.
Knižní výtvarník Stanley Rice publikoval v roce 1970 text.Rice, Stanley. “Editorial Text Structures (with some relations to information structures and format controls in computerized composition).” American National Standards Institute, March 17, 1970 Brian Reid, ve své disertaci na Carnegie Mellon University z roku 1980 vypracoval teorii a fungující implementaci deskriptivního značkování.
Za otce značkovacích jazyků však bývá považován Charles Goldfarb z IBM, který přišel na základní princip v roce 1969 při práci na jednoduchém systému pro správu dokumentů pro právnické firmy a, který v tomto roce spolupracoval při návrhu jazyka IBM GML. GML bylo poprvé publikováno v roce 1973. Už v roce 1974 vytvořil na základě GML a GenCode jazyk SGML a později se stal předsedou SGML výboru.
TeX Mezi hlavní publikační standardy patří systém TeX vytvořený ve druhé polovině 70. let 20. století Donaldem Knuthem se záměrem vytvořit nástroj pro naprosto přesný popis rozvržení textu pro sazbu odborné literatury v profesionální kvalitě. V průběhu 80. let byl doplněn mimo jiné o systém pro popis znaků Metafont a systém pro souběžný vývoj programového vybavení a dokumentace (Web). TeX je díky svým rozšířením používán pro sazbu odborné i krásné literatury a je standardním publikačním formátem v mnoha odvětvích vědy. Jeho nevýhodou je strmá učící křivka. Pro práci se systémem TeX se často používají nadstavbové sady maker, z nichž nejznámější je LaTeX.
Scribe, GML and SGML
První jazyk, který jednoznačně oddělil strukturování dokumentu od jeho vizuální prezentace, byl jazyk Scribe, který vytvořil a ve své doktorské práci z roku 1980 popsal Brian Reid.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. Scribe byl v několika ohledech revoluční: přinesl nejen myšlenku stylů oddělených od značek, ale také gramatiku určující možnosti použití značek. Scribe ovlivnil vývoj Generalized Markup Language a je přímým předchůdcem jazyků HTML a LaTeX.
Myšlenka, že značky by měly odrážet strukturu dokumentu a vizuální prezentaci ponechat stranou vedla na počátku 80. let 20. století k vytvoření SGML. Jazyk, který zahrnul principy z nejrůznějších zdrojů (včetně Tunnicliffova GenCode) definoval výbor vedený Ch. Goldfarbem, mezi jehož členy patřili Sharon Adler, Anders Berglund a James A. Marke.
SGML definuje nejen formát značek, ale pomocí Document Type Definition (DTD) nebo XML schématu umožňuje i popsat, které značky jsou v určitém místě povoleny. To umožňuje vytvářet libovolné systémy značek, podle potřeb autorů. SGML je tedy ve skutečnosti meta-jazyk, který umožňuje popsat množství konkrétních značkovacích jazyků. SGML se v roce 1986 stalo mezinárodním standardem ISO 8879. Jazyk SGML byl velmi dobře přijat a byl téměř 20 let využíván v systémech s velkými požadavky na zpracování textů. Většina značkovacích jazyků, které vznikly na konci 80. let, včetně TEI a DocBook vychází ze SGML. Nicméně pro svoji šíři je poměrně obtížný na naučení, což je vedlejším efektem snahy poskytovat příliš mnoho a být co nejflexibilnější. Kvůli předpokladu, že značkování budou manuálně provádět lidé, kteří uvítají možnost vypustit některé značky, vedla k možnosti, že některé značky (koncové, počáteční nebo obojí) nejsou povinné, což způsobuje problémy při zpracování SGML dokumentů. Po přijetí standardu XML stále větší množství aplikací nahrazuje SGML značkování XML.
HTML
Jazyk HTML navrhl v roce 1990 Tim Berners-Lee při vytváření informačním systému pro CERN, fyzikální výzkumné centrum poblíž Ženevy ve Švýcarsku. Tim Berners-Lee napsal i první webový prohlížeč WorldWideWeb, který dal jméno celému systému. HTML se v kombinaci s protokolem HTTP (HyperText Transfer Protocol – protokol pro přenos hypertextu) a hypertextovými odkazy URL stal základem WWW – nástroje, který dal tvář dnešnímu Internetu; HTML samotný se stal nejrozšířenějším značkovacím jazykem.
V roce 1993 dokončili Marc Andreessen a Eric Bina, zaměstnanci NCSA (National Center for Supercomputer Applications) první grafický prohlížeč Mosaic pro počítače IBM PC a Macintosh, který započal cestu WWW na počítače obyčejných lidí – neinformatiků.
Pro původní HTML neexistovalo DTD, jazyk byl silně inspirován značkovacími jazyky vycházejícími ze SGML. Deskriptivní značkování, které poskytlo celému systému nebývalou flexibilitu a rozšiřitelnost, bylo podle Stevena DeRoseaDeRose, Steven J. "The SGML FAQ Book." Boston: Kluwer Academic Publishers, 1997. hlavním faktorem úspěchu WWW.
Podle některých autorů by se HTML, XML a SGML (s výjimkou jeho řídce používané volby CONCUR) neměly nazývat značkovací jazyky, ale obalující jazyky (container language), protože nepodporují nehierarchické struktury (viz Hierarchický model). Termín obalující jazyky je však velmi málo rozšířen. Probíhá výzkum nehierarchických značkovacích modelů, z nichž některé jsou popsány v XML a odvozených jazycích (např. v příručkách Text Encoding Initiative, Open Scripture Information Standard a CLIX), zatímco jiné nikoli (například MECS a Layed Markup and Annotation Language nebo LMNL). Výsledky výzkumu jsou publikovány v proceedings konferencí Extreme Markup a Balisage.
XML
XML (Extensible Markup Language) je v současnosti nejpoužívanější značkovací metajazyk. Byl vyvinut organizací World Wide Web Consortium ve výboru, který vytvořil a kterému předsedal Jon Bosak s cílem vytvořit jednodušší variantu SGML pro publikaci dokumentů na Internetu.Extensible Markup Language (XML) XML je stejně jako SGML meta-jazyk, což uživatelům umožňuje vytvářet značky podle jejich potřeb i popisovat, jak mohou být tyto značky používány.