5. Stromová struktura otevřených dokumentů: standard SGML

5.1. SGML

SGML - Standard Generalized Markup Language (Standardní univerzální vyznačovací jazyk)
ISO 8879:1986

Příloha A - Úvod do univerzálního vyznačování

  • Obecný jazyk pro popis všech prvků elektronicky publikovaného dokumentu (textu, titulní strany, názvů kapitol, tabulek, obrázků apod.), který formalizuje vyznačování a činí je nezávislým na systému a souvislostech zpracování; dokument tvoří soubor označeného textu se vsunutými označeními údajů (tagy), jež definují začátek a konec každé logické jednotky
  • Metajazyk určený pro popis (kódování) hierarchicky strukturovaných textů
  • Metajazyk určený pro formální popis konkrétních jazyků typu "markup" (definuje jejich syntaxi)
  • Objektově orientovaná metoda popisu dokumentů

užití: oblast publikování (vydavatelská činnost) v nejširším slova smyslu, zejména textově orientovaných informací

Základní notace SGML

<počáteční tag>

</koncový tag>

<!-- komentář, který se nezobrazuje -->

Notace pro definici typu dokumentu a příklady hodnot

název prvku (elementu) pravidla minimalizace vyznačení model obsahu
povinnost uvádění
počátečního tagu
povinnost uvádění
koncového tagu
obsažené elementy možnost opakování,
povinnost výskytu
data
antologie - 0 - 0 (báseň)

+ ? *

(#PCDATA)

spojovací symboly (konektory)
, oddělovač v rámci závazného pořadí
| výběr jedné z uvedených možností
& nutné elementy bez závazného pořadí

přípony (indikátory) výskytu
? volitelný neopakovatelný element (0 nebo 1)
+ povinný opakovatelný element (1 nebo více)
* volitelný opakovatelný element (0, 1 nebo více)

obsah ("datové typy")
#PCDATA parsed character data - syntakticky analyzovaná znaková data
CDATA znaková data - jakákoli data zobrazená znaky (texty)
EMPTY obsah je prázdný
ID jedinečný identifikátor (atribut elementu, který přesně stanoví jeho obsah)
ID=něco znamená, že obsahem atributu je hodnota ID (např. soubor s obrázkem)

příklady prvků DTD

Vyjádření v notaci UML

(zahrnuje jen některé z variant uvedených v levém sloupci)

báseň (autor , sloka*)   báseň tvoří jméno autora a sloky (přesně v tomto pořadí) basen
báseň název báseň má (atribut) název
báseň (název & autor & sloka*) báseň tvoří název, jméno autora a sloky (v libovolném pořadí)
sloka (verš+) každá sloka obsahuje alespoň 1 verš, může jich mít více
autor (foto | kresba | video) u autora se uvádí buď fotografie, nebo kresba nebo video
autor? báseň může mít jen 1 autora, nemusí mít žádného
název (#PCDATA) obsah atributu název je tvořen textem

Příklad:

DTD pro antologii poezie

Logická struktura:

Antologii neboli výbor tvoří básně zpravidla různých autorů, u nichž je uveden název, údaje o autorovi a fotografie nebo kresba autora, případně videozáznam. U překladů se uvádí jméno překladatele. Básně se člení na sloky, sloky na verše. Každá báseň má alespoň jednu sloku, v každé sloce je alespoň jeden verš.

basen

antologie

Definice typu dokumentu:

<! DOCTYPE antologie [
<! ELEMENT antologie - - (báseň+)>
<! ELEMENT báseň - - (název?, autor, sloka+, překladatel?)>
<! ELEMENT název - - (#PCDATA)>
<! ELEMENT autor - - (jméno, datum narození, datum úmrtí?, foto? | kresba?, video?)>
<! ELEMENT jméno - - (#PCDATA)>
<! ELEMENT datum narození - 0 (#PCDATA)>
<! ELEMENT datum úmrtí - 0 (#PCDATA)>
<! ELEMENT foto - 0 EMPTY>
<! ELEMENT kresba - 0 EMPTY>
<! ELEMENT video - 0 (videozáznam, komentář)>
<! ELEMENT videozáznam - 0 EMPTY>
<! ELEMENT komentář - 0 (#PCDATA)>
<! ELEMENT sloka - - (verš+)>
<! ELEMENT verš - 0 (#PCDATA)>
<! ELEMENT překladatel - - (#PCDATA)>
]>

Instance dokumentu:

<antologie>
<!--
Toto je část básně z připravované antologie americké poezie -->
<báseň>
<název>
Samoobsluha v Kalifornii </název>
<autor>
<jméno>
Allen Ginsberg </jméno>
<datum narození>
1926
<datum úmrtí>1997
<foto ID=ginsberg.jpg>
<video>
<videozáznam ID=
GinsbergCorso.mov>
<komentář>
Allen Ginsberg a Gregory Corso v San Franciscu v roce 1997
</autor>
<sloka>
<verš>
Jak jsem na tebe myslel dnes večer, Walte Whitmane, když jsem kráčel postranními uličkami pod stromy, bolela mě hlava a plaše jsem hleděl na měsíc v úplňku.
<verš>Utahaný a hladový, chtěl jsem nakoupit obrazy, a tak jsem vešel do neónové samoobsluhy s ovocem a snil o tvých enumeracích!
<verš>Jaké broskve a jaké odstíny! Celé rodiny nakupující v noci! Uličky plné manželů! Ženy u avocados, děti v rajčatech! - A ty, Garcío Lorco, co tys tam hledal mezi melouny?
</sloka>
<překladatel>
Jan Zábrana</překladatel>
</báseň>
</antologie>


Ukázky struktury a stručný návod k tvorbě DTD dokumentů podle standardu SGML:

SGML1 - Antologie poezie

SGML2 - Bibliografický záznam