SGML (Standard Generalized Markup Language, ISO 8879:1986) ist die Mutter aller strukturierten Auszeichnungssprachen: HTML und XML sind direkte Anwendungen beziehungsweise Vereinfachungen von SGML. Wer die Befehle und Konzepte von SGML versteht, erkennt die Herkunft moderner Markup-Sprachen sofort.

Grundkonzept: Deklarationen statt Tags

Anders als bei XML steht bei SGML nicht die Dokumentinstanz im Vordergrund, sondern die Deklaration. Eine SGML-Deklaration definiert die Zeichenmenge, die Syntax und die Element-Regeln, auf die sich ein Dokument bezieht — Dateien beginnen daher typischerweise mit einem <!DOCTYPE>-Konstrukt oder einer SGML-Deklaration.

Die wichtigsten SGML-Befehle und Konstrukte

  • <!DOCTYPE name ...> — Dokumenttyp-Deklaration, verweist auf die DTD (Document Type Definition)
  • <!ELEMENT name contentmodel> — definiert ein Element und sein Inhaltsmodell
  • <!ATTLIST name attname type default> — deklariert Attribute eines Elements
  • <!ENTITY name "wert"> — benannte Entität, wird beim Parsen aufgelöst (z.B. &amp;)
  • <![ ... ]]> — Marked Section, z.B. <![CDATA[...]]> für rohen Inhalt
  • #PCDATA — parsed character data, gemischter Inhalt (Text plus Elemente)
  • ?, *, + — Häufigkeitsoperatoren im Inhaltsmodell (optional, beliebig oft, mindestens einmal)

Ein klassisches Beispiel einer Element-Deklaration:

<!ELEMENT absatz (#PCDATA | stark | kursiv)*>
<!ATTLIST absatz id ID #IMPLIED>

HTML und XML als SGML-Erben

HTML 2.0 bis HTML 4.01 waren offiziell SGML-Anwendungen mit einer öffentlichen SGML-Deklaration. XML ist die 1998 erschienene vereinfachte Teilmenge von SGML: Sie streicht die optionalen Mechanismen (Minimierung, kurze Tags, exotische Entitäten) und erzwingt Wohlgeformtheit. Für die Praxis relevant sind heute vor allem die XML-Nachfolger: XML-Befehle und XSLT/XSL-Befehle.

Verwandte Grundlagen: XML – Glossar, XPath-Befehle, XQuery-Befehle.