Element (Auszeichnungssprache)
Ein SGML-Element ist ein Knoten in dem durch SGML repräsentierten Informationsbaum. Ein SGML-Element besteht aus den Element-Eigenschaften (Name, SGML-Attribute) und dem Element-Inhalt. In einer SGML-Instanz wird ein SGML-Element durch SGML-Tags repräsentiert.
Insorfern kann man sagen: Ein SGML-Element dient zum Auszeichnen von Textdateien. Beispielsweise:
<elem> .... </elem>
Das SGML-Element ist hierbei elem, das durch den öffnenden Tag <elem> sowie den schließenden Tag </elem> gebildet wird. Der schließende Tag kann entfallen, wenn das Element keinen Inhalt hat und die verwendete SGML-Anwendung es erlaubt. Anstelle von <elem></elem> kann dies zum Beispiel durch den Tag <elem /> erreicht werden.
Die am häufigten verwendete SGML-Anwendung ist sicherlich HTML. Diese nutzt jedoch einige Eigenschaften von SGML, die die Dokumente schwer parse-bar machen (z.B. SHORTTAG). So ist z.B. das Folgende ein komplettes, dem Standard entsprechendes HTML-Dokument verglichen mit dem kompletten Parse-Baum:
valides HTML-Dokument | vollständiger Parse-Baum |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> <title>bla</> <p/foo/ |
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head> <title>bla</title> </head> <body> <p>foo</p> </body> </html> |
Hierbei werden implizit folgende Ergänzungen vorgenommen:
- Durch das Öffnen des title-Elements wird das html- sowie head-Element geöffnet.
- Das title Element wird durch die Zeichenkette </ wieder beendet.
- Durch das Öffnen eines Elements des Textkörpers (body), wird dieser geöffnet und zuvor der Kopf (head) geschlossen.
- Das p-Tag wird durch den Schrägstrich (/) beendet.
- Der nächste Schrägstrich schließt das p-Element.
- Das Ende des Dokuments beendet den Textkörper sowie das html-Dokument.
Um diese Probleme zu umgehen, wurde eine Untermenge von SGML definiert, nämlich XML, die einfach weiterzuverarbeiten ist. HTML wurde dann als XML-konforme Anwendung XHTML neu definiert.
Besonderheiten
SGML-Element
Bei SGML kann in der Deklaration definiert werden, wie Elemente aussehen (sie müssen nicht notwendigerweise in spitzen Klammern stehen). Ebenso kann die Beachtung der Groß-/Kleinschreibung und das Vorhandensein von Starttag bzw. Endtag (Tag-Minimierung) eingestellt werden. Elemente, die als EMPTY deklariert sind dürfen kein Endtag haben. Attribute können dergestalt minimiert sein, dass nur der Wert des Attributes angegeben wird.
XML-Element
Bei XML müssen alle geöffneten Tags von Elementen auch wieder geschlossen werden, die Groß-/Kleinschreibung wird beachtet. Attribute müssen immer als Name-/Wert-Paar angegeben werden.
Leere Elemente dürfen auch als Leeres-Element-Tag dargestellt werden:
<colspec colwidth="10*" />
HTML-Element
Manche HTML-Elemente müssen nicht geschlossen werden (z.B. <br>
). Das liegt daran, dass HTML eine Anwendung von SGML ist, wo die sogenannte Tag-Minimierung angewandt wird, die in der DTD festgelegt wird. Ebenso können manche Attribute einfach durch ihren Inhalt angegeben werden.
In XML ist die Tag-Minimierung weggefallen, d.h. es muss jedes Element geschlossen werden, also auch in XHTML. Desgleichen müssen Attribute immer als Name-/Wert-Paar dargestellt werden.
- HTML:
<p>Erste Zeile<br>Zweite Zeile</p>
- XHTML:
<p>Erste Zeile<br />Zweite Zeile</p>
Siehe auch: Markup