Značkovací jazyk

Značkovací jazyk (anglicky markup language) 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 (anglicky tags), příkazů (anglicky commands) 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í znakZpůsob zadání
<&lt;
>&gt;
&&amp;
á&aacute;
&#8364; příp. &euro;

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í (anglicky markup) 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.[1][2] 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 (what you see is what you get), 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í (generic coding). 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.[3] 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[4] 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

Související informace naleznete také v článcích IBM Generalized Markup Language a Standard Generalized Markup Language.

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.[5] 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

Související informace naleznete také v článku HyperText Markup Language.

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 DeRosea[6] 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

Související informace naleznete také v článku 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.[7] 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.

Přijetí XML napomohl fakt, že každý XML dokument může být zapsán tak, aby splňoval pravidla pro SGML dokumenty, takže stávající uživatelé a aplikace mohli lehce přejít na XML. Z XML bylo vypuštěno mnoho složitějších vlastností, stejně jako vlastností orientovaných na zpracování člověkem, aby se usnadnila implementace pro publikaci a zpracovávání textů. Protože se podařilo najít kompromis mezi jednoduchostí a pružností, XML se nyní již široce používá i pro jiné účely, např. pro komunikaci data mezi aplikacemi. Stejně jako HTML může sloužit jako obalující jazyk.

XHTML

Související informace naleznete také v článku XHTML.

Od ledna 2000 vycházejí všechna Doporučení W3C pro HTML z XML místo ze SGML – proto se používá zkratka XHTML (Extensible HyperText Markup Language). Specifikace jazyka vyžaduje, aby WWW dokumenty ve formátu XHTML byly well-formed XML dokumenty, což umožňuje, aby dokumenty byly formátovány robustněji podle přísnějších pravidel s použitím značek známých z HTML.

K nejvýznamnějším rozdílům mezi HTML a XHTML patří pravidlo, že všechny elementy musí být uzavřené: prázdné HTML elementy jako s <br> musí být buď zakončené normální koncovou značkou nebo nahrazeny speciálním tvarem: <br /> (mezera před '/' na konci značky je nepovinná, ale bývá používána, aby starší prohlížeče a SGML parsery značku zpracovaly). Dále všechny hodnoty atributů ve značkách musí být uvedeny v uvozovkách. Jména všech značek a atributů musí být psána malými písmeny; v HTML, které nerozlišuje velká a malá písmena, se v nich často používala velká písmena.

Další aplikace používající XML

V současnosti existuje mnoho aplikací používajících XML, např. Resource Description Framework (RDF), XForms, DocBook, SOAP a Web Ontology Language (OWL).

Vlastnosti

Společnou vlastností většiny značkovacích jazyků je prokládání textu dokumentu značkovacími instrukcemi v jednom datovém proudu nebo souboru. Alternativním řešením je značkování oddělené od textu a použití ukazatelů, posunutí, identifikátorů nebo jiných metod k propojení značkování s textem. Oddělené značkování je méně rozšířené, ale často ji používají interně programy pro zpracování označkovaných dokumentů. Příklad označkovaného textu v HTML:

<h1> Anatidae </h1>
<p>
The family <i>Anatidae</i> includes ducks, geese, and swans,
but <em>not</em> the closely related screamers.
</p>

Text uzavřený mezi znaky menší než a větší než <jako tento> jsou značkovací instrukce (známé jako tags) a text mezi nimi je skutečný text dokumentu. Značky h1, p, a em jsou příkladem sémantického značkování, které popisuje význam textu, který je mezi nimi uzavřen. Konkrétně h1 znamená "toto je nadpis první úrovně", p znamená "toto je odstavec", a em znamená "toto je zvýrazněné slovo nebo fráze". Program, který interpretuje takovéto strukturní značky může používat svá vlastní pravidla a styly pro prezentaci jednotlivých částí textu použitím různých druhů písma, tučnosti, velikosti písma, odsazení, barvy a dalších stylů. Značka "h1" (hlavička úrovně 1) může být reprezentována velkým tučným bezpatkovým písmem nebo podtrženým písmem psacího stroje nebo může být zobrazena jako ostatní písmo.

Naproti tomu značka i v HTML je příkladem prezentačního značkování; obvykle se používá pro určení určité charakteristiky textu (v tomto případě použití kurzívy) bez udání jeho účelu.

Organizace Text Encoding Initiative (TEI) publikovala rozsáhlé příručky[8] jak kódovat texty s humanitním zaměřením. Tyto kolektivně zpracované příručky se používají v projektech pro digitalizaci historických dokumentů, děl význačných učenců, vybraných období, žánrů apod.

Alternativní použití

Značkovací jazyky sice byly původně určeny pro textové dokumenty, ale stále více se používají i v jiných oblastech pro prezentaci různých typů informací, mimo jiné seznamů skladeb, vektorové grafiky, webových služeb, content syndication a uživatelských rozhraní. Většinou se jedná o XML aplikace, protože XML je dobře definovaný a rozšiřitelný jazyk.

XML umožňuje kombinovat více značkovacích v jednom profilu, jako např. XHTML+SMIL a XHTML+MathML+SVG.[9]

Protože značkovací jazyky a obecněji jazyky pro popis dat (ne nutně používající textové značky) nejsou programovacími jazyky[10] (většinou se jedná o popisy dat bez instrukcí), jsou snáze zpracovatelné než programovací jazyky – například webové stránky ve formátu HTML, oproti programům v jazyce C, a proto bývají často vkládány do WWW stránek pro zobrazení dokud není stránka plně načtena atd. To vede k návrhu WWW využívajícímu princip "Rule of Least Power", které usiluje o použití (výpočetně) nejslabšího jazyka, který postačuje pro požadované použití.

Odkazy

Reference

V tomto článku byl použit překlad textu z článku Markup language na anglické Wikipedii.

  1. John V. Everett. Re: Runoffs (was: TJ-2, a very early word-processor-like program for the PDP-1) [online]. 1997-02-08 [cit. 2008-11-14]. Dostupné online. 5diaq1$6cn$2@kirin.wwa.com. 
  2. BARNES, Larry. RUNOFF: A Program for the Preparation of Documents. Washington, DC: Office of the Secretary of Defense Advanced Research Projects Agency, 27 March 1973. (Bitsavers' PDF Document Archive). Dostupné v archivu pořízeném dne 2012-02-29. R-37. (anglicky)  Archivovaná kopie. www.bitsavers.org [online]. [cit. 2012-03-03]. Dostupné v archivu pořízeném z originálu dne 2012-02-29. 
  3. Rice, Stanley. “Editorial Text Structures (with some relations to information structures and format controls in computerized composition).” American National Standards Institute, March 17, 1970
  4. 2009 interview with SGML creator Charles F. Goldfarb [online]. Dr. Dobb's Journal [cit. 2010-07-18]. Dostupné online. [nedostupný zdroj]
  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.
  6. DeRose, Steven J. "The SGML FAQ Book." Boston: Kluwer Academic Publishers, 1997. ISBN 0-7923-9943-9
  7. Extensible Markup Language (XML)
  8. www.tei-c.org [online]. [cit. 03-03-2012]. Dostupné v archivu pořízeném dne 05-09-2007. 
  9. An XHTML + MathML + SVG Profile". W3C, August 9, 2002. Retrieved on 17 March 2007.
  10. KORPELA, Jukka. Programs vs. markup [online]. Tampere University of Technology, 2005-11-16 [cit. 2011-01-08]. Dostupné v archivu pořízeném dne 2011-01-22. 

Související články

Externí odkazy