Das Dokument bestehend aus dem Inhalt und den SGML-Marken (auch: Dokument-Instanz).
Die Festlegung der Dokumentstruktur.
Die Festlegung von Parametern für die Verarbeitung des Dokuments und der DTD (z.B. Länge der Markennamen).
Ein SGML-Dokument besteht aus:
<MEMO status="CONFIDEN"> <FROM>Prof. Hess</FROM> <TO>Assistenten in Computerlinguistik</TO> <SUBJECT>Motivation für das SGML-Seminar </SUBJECT> <!-- Das ist ein Beispiel für einen Kommentar. --> <BODY> <P>In Unternehmen und Verwaltung fallen immer mehr Dokumente in elektronischer Form an. Um diesen Wissensbestand optimal einzusetzen, ist es notwendig, diese Dokumente in plattformunabhängiger Weise abzulegen und systematisch zu verwalten. SGML, die Standard Generalized Markup Language, kann dabei eine zentrale Rolle übernehmen.</P> </MEMO>
Marken im SGML-Dokument gliedern den Text in eine hierarchische Struktur.
FORMAT: <Bezeichner (Attribute)> Inhalt </Bezeichner>
Beispiel: <FROM>Prof. Hess</FROM>
<FROM> Anfangsmarke des Elementes FROM (Anfangs-Tag) Prof. Hess Inhalt des Elementes </FROM> Endemarke des Elementes (Ende-Tag)
Beispiel: <MEMO Status = "CONFIDEN"><FROM>...</MEMO>
MEMO Name eines Elementes Status Name eines Attributs CONFIDEN Wert des Attributs in Hochkommas
Über Attribute können auch Referenzen aufgebaut werden.
Beispiel für Referenzziel: <P IDNUM = "XYZ1">
Der Wert von IDNUM muß im Dokument eindeutig sein. Verwiesen wird z.B. mit dem Attribut POINTER, das den entsprechenden Wert haben muß:
Beispiel für Referenz: <PREF POINTER = "XYZ1">
Einheiten dienen folgenden Zwecken:
&Name; allgemeine Einheit %Name; Parametereinheit
Beispiel: &SGML; verweist auf die Definition der Entität SGML und wird durch den Parser aufgelöst, z.B. in "Standard Generalized Markup Language".
Beispiel: [ verweist auf eine öffnende eckige Klammer, die auf Position 91 für die ISO-Norm festgelegt ist.
Beispiel:%kap1.txt; verweist auf eine Datei mit diesem Namen.
beinhaltet die DTD für das SGML-Dokument oder (typischer) einen Verweis auf eine Datei mit der entsprechenden DTD. Jedes SGML-Dokument beginnt mit einer solchen Doctype-Deklaration.
Beispiel für eine DTD in der Doctype-Deklaration:
<!DOCTYPE MEMO [<!ELEMENT MEMO - - ((TO & FROM), SUBJECT, BODY) > <!ELEMENT TO - O (#PCDATA) > <!ELEMENT FROM - O (#PCDATA) > <!ELEMENT BODY - O (P)* > ... ]>
Beispiel für einen Verweis:
<!DOCTYPE MEMO SYSTEM "PFAD/DATEI.DTD">
Eine DTD definiert u.a.:
Alle Deklarationen beginnen mit <! und enden mit >.
Format: <! ELEMENT Bezeichner(gruppe) Verkürzung Beschreibung>
Beispiele:
<! ELEMENT MEMO - - ((TO & FROM), SUBJECT, BODY)> <! ELEMENT BODY - O (P)* >bestehend aus
ELEMENT Keyword für DeklarationstypMEMO Bezeichner des Elements (Generic Identifier)
- - Weglaßbarkeit der Marken (je ein Symbol für Startmarke und Endemarke),
- steht für obligatorisch und O für omissible, weglaßbar.
((TO & FROM), BODY) Inhalt des Elements
Die Bezeichner im Beschreibungsfeld werden mit folgenden Operatoren gruppiert:
, Sequenz-Konnektor & UND-Konnektor | ODER-Konnektor (exklusives ODER) * optional und wiederholbar ? optional + obligatorisch und wiederholbar
<!ELEMENT (TO | FROM) - O (#PCDATA) >
<!DOCTYPE MEMO [<!ELEMENT MEMO - - ((TO & FROM), SUBJECT, BODY) > <!ELEMENT TO - O (CDATA) > <!ELEMENT FROM - O (#PCDATA) > <!ELEMENT BODY - O (P)* > ... ]> <MEMO> <TO>Martin <Name>Volk </TO> <FROM>Martin <Name>Volk </FROM> ... </MEMO>
Soll ein Element in allen Unterelementen möglich sein, so kann es in der Elementdeklaration durch +('Element') angegeben werden und wird somit auf alle Unterelemente vererbt.
Beispiel: <! ELEMENT MEMO - - ((TO & FROM), BODY) +(FOOTNOTE)>
Damit kann FOOTNOTE in allen Unterelementen von MEMO benutzt werden.
Soll ein Element in allen Unterelementen ausgeschlossen sein, so kann das in der Elementdeklaration durch -('Element') angegeben werden und wird somit auf alle Unterelemente ausgeschlossen.
Beispiel: <! ELEMENT FOOTNOTE - - (P+) -(FOOTNOTE)>
Damit wird verhindert, dass FOOTNOTE innerhalb von FOOTNOTE auftritt.
Format <!ATTLIST Element(gruppe) Attributname Wertebereich Vorbelegung >
Beispiele:
<!ATTLIST MEMO STATUS (CONFIDEN|PUBLIC) PUBLIC > <!ATTLIST P IDNUM ID #IMPLIED > <!ATTLIST PREF POINTER IDREF #REQUIRED >
Aufzählung Bezeichner getrennt durch | CDATA irgendwelche Zeichen, einschließlich Marken ENTITY Namen einer Einheit (z.B. eines deklarierten Teildokuments) ID (identifier) Zielpunkt einer Referenz IDREF Ausgangspunkt einer Referenz NAME irgendein Bezeichner NMTOKEN (name token) irgendwelche Zeichen NUMBER eine Ziffernfolge NUTOKEN (number token) irgendwelche Zeichen jedoch beginnend mit einer Ziffer
VORSICHT: Attribute sind zu unterscheiden von SGML-FEATURES!!!
Ein Entity (Einheit) ist ein benennbarer Teil eines markierten Dokuments (z.B. ein String oder eine Datei).
Format:
<!ENTITY Bezeichner Parameter> allgemeine Einheit <!ENTITY % Bezeichner Parameter> Parameter-Einheit <!ENTITY % Bezeichner SYSTEM Dateiangabe> externe systembezogene Einheit <!ENTITY % Bezeichner PUBLIC Identifikator> externe öffentliche Einheit
Beispiele:
<!ENTITY SGML "Standard Generalized Markup Language" > <!ENTITY % Chap1 SYSTEM "C:\KAPITEL1.SGM" >
Unterscheide:
Für Umlaute und andere Sonderzeichen gibt es ISO-standardisierte Identifikatoren.
ä ä ö ö ü ü Ä Ä Ö Ö Ü Ü ß ß
Um undeklarierte Entities zu vermeiden, kann man eine Default-Entity festlegen.
<!ENTITY #DEFAULT 'UNDEFINIERTE ENTITY'>
Format: <!SGML Angaben>
In der SGML Deklaration werden folgende lokale Einstellungen für ein SGML-System vorgenommen.
SGML-Features definieren die Zulässigkeit bestimmter SGML-Konstrukte.
Beispiel: Wenn eine Startmarke verarbeitet wird, wird überprüft, ob die vorhergehende Marke geschlossen werden muss.
<FROM> Prof. Hess <TO>Assistenten <SUBJECT> ... anstatt <FROM> Prof. Hess </FROM><TO>Assistenten </TO><SUBJECT> ...
Shorttag: Nur wenn SHORTTAG YES gesetzt ist, darf die Minimierung innerhalb von Marken vorgenommen werden.
Beispiel: Bei einer leeren Ende-Marke wird angenommen, daß damit das zuletzt geöffnete Element geschlossen wird.
</> anstatt </Q>
Beispiel: Bei einem Attributwert ohne Attribut wird das entsprechende Attribut angenommen.
<Memo confiden> anstatt <Memo status= "confiden">
Shortref: behandelt die Umsetzung von Zeichen in SGML-Marken via Entities. Also z.B. die Umsetzung von " in ein <Q>. Genauer: ein Shortref-String wird auf eine Entity-Referenz abgebildet, die dann zu einer Marke erweitert wird.
<!SHORTREF MAP-TO &#SPACE; MapEntity1>
Prüfen der Übereinstimmung zwischen SGML-Dokument und zugehöriger DTD. Dabei: