XML-Definitionen

(Auszug aus "Python & XML" von Christopher A. Jones & Fred L. Drake, Jr.)

Diese Seite enthält detaillierte Definitionen aus der XML-Spezifikation. Diese Fachbegriffe werden oft in Verbindung mit DOM und mit XML-Technologie allgemein benutzt. Alle Begriffe werden hier zu Referenzzwecken definiert. Dieser Anhang sollte begleitend zur Übersicht der Spezifikation in XML-Grundlagen benutzt werden. Um die XML-Begriffe und -Definitionen aus der Spezifikation zu extrahieren, fanden wir es nur passend, ein XML-verarbeitendes Skript zu schreiben, das auf der XML-Version der W3C-Empfehlung operiert. Benutzen Sie das folgende Programm als gutes Beispiel dafür, wie man den Nutzen von Python und XML entdeckt und Begriffe aus der XML-Version der Spezifikation extrahieren kann.

Beispiel: gen-td.py – ein Skript zur Ausgabe von XML-Definitionen

"""
Erzeuge HTML für Begriffe und Definitionen direkt aus der XML-Spezifikation.

XML-Quelle muß von der Standardeingabe kommen.
"""
import sys

from xml.sax import ContentHandler
from xml.sax import make_parser

class XMLSpecHandler(ContentHandler):
   """   
   Diese Klasse implementiert einen Teil der SAX-API, um Begriffsdefinitionen
   aus der Quelldatei der XML-Spezifikation herauszuziehen.
   """
   inTermDef = 0
   
   def startElement(self, name, attrs):
      if name == "termdef":
      self.inTermDef = 1
      self.strTermDefContents = ""
      
      print "<p><b>" + attrs.get(’term’, "") + "</b><br>"
   
   def characters(self, ch):
      if self.inTermDef:
      self.strTermDefContents += ch
   
   def endElement(self, name):
      if name == "termdef":
      self.inTermDef = 0
      self.strTermDefContents += "</p>"
   
      print self.strTermDefContents
   
   # Hauptprogramm
   if __name__ == "__main__":
   dh = XMLSpecHandler( )
   parser = make_parser( )
   parser.setContentHandler(dh)
   
   print "<html><head>"
   print "<style type=’text/css’>"
   print "body { font-family: sans-serif; }"
   print "</style>"
   print "</head><body>"
   parser.parse(sys.stdin)
   print "</body></html>"      

Sie können die XML-Spezifikation als XML-Dokument von der W3C-Website (W3C: All Standards and Drafts: XML) herunterladen. Dann können Sie das Skript im obigen Beispiel ausführen, um eine sehr einfache HTML-Datei zu bekommen:

 $[chris@spindle]> python gen-td.py < XMLSpec.py > termdef.html

Wenn Sie die Datei termdef.html in Ihrem Webbrowser laden, werden Sie alle Begriffsdefinitionen der XML-Spezifikation in einfachem HTML sehen. Die folgende Abbildung zeigt diese Datei in einem Browser.

Anmerkung: Die XML-Spezifikation wurde von Henning Behme und Stefan Mintert ins Deutsche übersetzt (Extensible Markup Language (XML) 1.0). Allerdings liegt sie nur im HTML-Format vor und ist damit für das hier angegebene Skript nicht geeignet. Der Text im Browser ist daher das englische Original. – Anm. d. Ü.

termdef.html in einem Browser

Abbildung: termdef.html in einem Browser

Eine Bemerkung: Die Architekten der XML-Version der Spezifikation haben den vollständigen Text jeder Definition nicht hübsch innerhalb der termdef-Tags eingeschlossen. Daher war ein kleiner Eingriff notwendig, um sie wirklich akkurat in diesem Text vorzustellen. Außerdem sind die hier angeführten Definitionen eine Teilmenge dessen, was in der Spezifikation erscheint, da Definitionen, die nur auf die Spezifikation selbst bezogen sind (und nicht auf XML), entfernt wurden. Die Liste wurde aus Gründen der besseren Lesbarkeit alphabetisch geordnet.

Definitionen von XML-Begriffen

Attribut

Die Name-AttValue-Paare werden als Attributspezifikationen eines Elements bezeichnet.

Attribute Default – Attribut-Vorgabewerte

Falls die Deklaration weder #REQUIRED noch #IMPLIED ist, enthält der AttValue-Wert den deklarierten Vorgabewert. Das Schlüsselwort #FIXED besagt, daß das Attribut immer den Vorgabewert haben muß. Wenn ein Vorgabewert deklariert ist und ein XML-Prozessor auf ein ausgelassenes Attribut trifft, verhält er sich so, als ob das Attribut mit dem deklarierten Vorgabewert präsent wäre.

Attribute-List Declaration – Attributlisten-Deklaration

Attributlisten-Deklarationen geben den Namen, Datentyp und Vorgabewert (falls vorhanden) aller mit einem Elementtyp assoziierten Attribute an.

Attribute Name – Attributname

Der Name in jedem Paar wird als Attributname bezeichnet.

Attribute Value – Attributwert

Der Inhalt von AttValue (der Text zwischen den Begrenzungszeichen ' oder ").

CDATA Section – CDATA-Abschnitt

Darf überall vorkommen, wo Zeichendaten vorkommen dürfen; wird verwendet, um Textblöcke zu kennzeichnen, die Zeichen enthalten, die sonst als Auszeichnungen interpretiert würden.

Character – Zeichen

Eine atomare Texteinheit, wie in ISO/IEC 10646 spezifiziert. Erlaubte Zeichen sind Tabulator, Wagenrücklauf, Zeilenvorschub und die erlaubten graphischen Zeichen von Unicode und ISO/IEC 10646. Die Versionen dieser Standards waren beim Schreiben dieses Buches aktuell. Zu diesen Standards können neue Zeichen in Ergänzungen oder neuen Ausgaben hinzugefügt werden. Daraus folgt, daß XML-Prozessoren jedes beliebige Zeichen in dem für Char spezifizierten Bereich akzeptieren müssen. Von der Verwendung von Kompatibilitätszeichen wird abgeraten.

Character Data – Zeichendaten

Jeder Text, der keine Auszeichnung ist, bildet die Zeichendaten des Dokuments.

Character Reference – Zeichenreferenz

Verweist auf ein spezielles Zeichen im Zeichensatz ISO/IEC 10646 – z. B. eines, das nicht direkt auf Eingabegeräten verfügbar ist.

Comment – Kommentar

Kommentare dürfen überall im Dokument außerhalb von anderen Auszeichnungen vorkommen; zusätzlich dürfen sie in der Dokumenttyp-Deklaration an den Stellen vorkommen, die von der Grammatik erlaubt werden. Sie sind nicht Teil der Zeichendaten des Dokuments; ein XML-Prozessor kann es einer Anwendung gestatten, auf den Text von Kommentaren zuzugreifen, muß es aber nicht. Aus Kompatibilitätsgründen darf der String »--« nicht in Kommentaren vorkommen.

Conditional Section – Bedingter Abschnitt

Teile der externen Teilmenge der Dokumenttyp-Deklaration, die in die logische Struktur der DTD importiert oder davon ausgeschlossen werden, je nach Schlüsselwort, mit dem sie verwendet werden.

Content – Inhalt

Der Text zwischen dem Start- und End-Tag.

Content Model – Inhaltsmodell

In diesem Fall beinhaltet die Einschränkung ein Inhaltsmodell, eine einfache Grammatik, die die erlaubten Typen von Kindelementen und die Reihenfolge, in der sie vorkommen dürfen, bestimmt.

Document Entity – Dokument-Entity

Dient als Wurzel des Entity-Baums und als Ausgangspunkt für einen XML-Prozessor.

Document Type Declaration – Dokumenttyp-Deklaration

Die XML-Dokumenttyp-Deklaration enthält oder verweist auf Markup-Deklarationen, die eine Grammatik für eine Klasse von Dokumenten zur Verfügung stellen. Diese Grammatik ist als Dokumenttyp-Definition (DTD) bekannt. Die Dokumenttyp-Deklaration kann auf eine externe Teilmenge (ein spezielles externes Entity) mit Markup-Deklarationen zeigen oder Markup-Deklarationen direkt in einer internen Teilmenge enthalten oder beides. Die DTD für ein Dokument besteht aus beiden Teilmengen zusammen.

Element

Jedes XML-Dokument enthält ein oder mehrere Elemente, deren Grenzen entweder von Start- und End-Tags bestimmt werden oder bei leeren Elementen durch ein Tag mit einem leeren Element. Jedes Element hat einen Typ, durch einen Namen identifiziert, der manchmal als dessen Generischer Identifier (GI) bezeichnet wird, und kann eine Anzahl von Attributspezifikationen haben.

Element Content – Elementinhalt

Ein Elementtyp hat einen Elementinhalt, wenn Elemente dieses Typs nur Kindelemente enthalten dürfen (aber keine Zeichendaten), die optional durch Leerraum getrennt sind (Zeichen, die auf das nicht-terminale S passen).

Empty

Ein Element ohne Inhalt.

Empty-Element Tag – Leerelement-Tag

Ein Leerelement-Tag nimmt eine spezielle Form an: <tagName/>.

End-Tag

Das Ende eines jeden Elements, das mit einem Start-Tag beginnt, muß mit einem End-Tag ausgezeichnet werden, das den Namen des Elementtyps wiedergibt, der auch im Start-Tag angegeben ist.

Entity

Ein XML-Dokument kann aus einer oder vielen Speichereinheiten bestehen. Diese werden Entities genannt; alle haben einen Inhalt, und alle (außer dem Dokument-Entity und der externen DTD-Teilmenge) werden durch den Entity-Namen identifiziert.

Entity-Referenz

Verweist auf den Inhalt eines benannten Entity.

Enumerated Attribute Values – Aufgezählte Attributwerte

Aufgezählte Attribute können einen Wert aus einer in der Deklaration angegebenen Liste von Werten annehmen.

Error – Fehler

Eine Verletzung der Regeln der XML-Spezifikation; Ergebnisse sind nicht definiert. XML-konforme Software kann einen Fehler erkennen und berichten und sich davon erholen.

Escape

Entity- und Zeichenreferenzen können beide dazu benutzt werden, das Größer-als-Zeichen, das Kaufmanns-Und sowie andere Begrenzungszeichen zu schützen. Zu diesem Zweck wird eine Anzahl von allgemeinen Entities (amp, lt, gt, apos, quot) spezifiziert. Numerische Zeichenreferenzen dürfen ebenfalls benutzt werden; sie werden sofort expandiert, wenn sie erkannt werden, und müssen als Zeichendaten behandelt werden, d. h., die numerischen Zeichenreferenzen #60; und &#38; können anstelle von < und & benutzt werden, wenn diese in Zeichendaten vorkommen.

External Entity – Externes Entity

Wenn das Entity nicht intern ist, handelt es sich um ein externes Entity.

External Markup Declaration – Externe Markup-Deklaration

Ist definiert als Markup-Deklaration in der externen Teilmenge oder in einem Parameter-Entity (extern oder intern – letzteres auch deswegen, weil nicht-validierende Prozessoren sie nicht lesen müssen).

Fatal Error – Kritischer Fehler

Ein Fehler, den ein standardgerechter XML-Prozessor erkennen und der Anwendung melden muß. Stößt der Prozessor auf einen kritischen Fehler, kann er mit der Datenverarbeitung fortfahren, um weitere Fehler zu suchen, und der Anwendung solche Fehler melden. Um die Korrektur von Fehlern zu unterstützen, kann der Prozessor unverarbeitete Daten aus dem Dokument verwenden (mit gemischten Zeichendaten und Auszeichnungen), das der Anwendung zur Verfügung steht. Wenn einmal ein kritischer Fehler erkannt wurde, darf der Prozessor jedoch nicht mit der normalen Verarbeitung fortfahren (d. h., er darf nicht damit fortfahren, Zeichendaten und Informationen über die logische Struktur des Dokuments auf normale Weise an die Anwendung zu übergeben).

General Entity – Allgemeines Entity

Entities zum Gebrauch im Dokumentinhalt. In dieser Spezifikation werden allgemeine Entities manchmal mit dem unqualifizierten Begriff Entity bezeichnet, falls dies zu keiner Mehrdeutigkeit führt.

General Entity Reference – Allgemeine Entity-Referenz

Referenzen auf geparste allgemeine Entities verwenden das Kaufmanns-Und (&) und das Semikolon (;) als Begrenzungszeichen.

Include

Ein Entity wird importiert (include), wenn sein Ersetzungstext abgerufen und an Stelle der Referenz selbst so verarbeitet wurde, als ob er Teil des Dokuments an der Stelle wäre, wo die Referenz erkannt wird.

Internal Entity Replacement Text – Interner Entity-Ersetzungstext

Wenn die Definition des Entity ein EntityValue ist, wird das definierte Entity ein internes Entity genannt. Es gibt kein separates physisches Speicherobjekt, und der Inhalt des Entity wird in der Deklaration angegeben.

Literal Entity Value – Literaler Entity-Wert

Der in Anführungszeichen gesetzte String in der Entity-Deklaration, der dem nichtterminalen Entity-Wert entspricht.

Markup

Auszeichnungen (Markup) sind: Start-Tags, End-Tags, Leerelement-Tags, Entity-Referenzen, Zeichenreferenzen, Kommentare, CDATA-Abschnittsbegrenzer, Dokumenttyp-Deklarationen, Verarbeitungsanweisungen, XML-Deklarationen, Textdeklarationen und beliebiger Leerraum auf oberster Ebene des Dokument-Entity (d. h. außerhalb des Dokumentelements und nicht innerhalb etwaiger anderer Auszeichnungen).

Markup-Deklaration

Eine Elementtyp-Deklaration, eine Attributlisten-Deklaration, eine Entity-Deklaration oder eine Notation-Deklaration.

Mixed Content – Gemischter Inhalt

Ein Elementtyp hat gemischten Inhalt, falls Elemente dieses Typs Zeichendaten, optional mit Kindelementen durchsetzt, enthalten dürfen.

Name

Ein Token, das mit einem Buchstaben oder einem von wenigen Interpunktionszeichen beginnt und mit Buchstaben, Ziffern, Bindestrichen, Unterstrichen, Doppelpunkten oder Punkten weitergeht. Zusammen werden diese Namenszeichen genannt.

Notation

Identifiziert namentlich das Format von ungeparsten Entities, das Format von Elementen, die ein Notationsattribut haben, oder die Anwendung, an die eine Verarbeitungsanweisung gerichtet ist.

Notation-Deklaration

Bietet einen Namen für die Notation zum Gebrauch in Entity- und Attributlisten-Deklarationen und in Attributspezifikationen und einen externen Bezeichner für die Notation, der es einem XML-Prozessor oder seiner Anwendung ermöglicht, ein Hilfsprogramm zu finden, das Daten in der angegebenen Notation verarbeiten kann.

Parameter-Entity

Geparste Entities zum Gebrauch in der DTD.

Parameter-Entity-Referenz

Parameter-Entity-Referenzen benutzen Prozentzeichen (%) und Semikolon (;) als Begrenzungszeichen.

Parent/Child – Eltern/Kind

Zu jedem Nichtwurzelelement C im Dokument gibt es ein anderes Element P im Dokument, so daß C im Inhalt von P ist, aber nicht im Inhalt irgendeines anderen Elements, das im Inhalt von P ist. P wird als Elternelement von C bezeichnet und C als ein Kindelement von P.

Process Declarations – Prozeßdeklarationen

Obwohl diese nicht gebraucht werden, um die Gültigkeit des Dokuments zu prüfen, werden sie dafür benötigt, alle Deklarationen zu verarbeiten, die sie in der internen DTD-Teilmenge und in allen Parameter-Entities lesen – bis zur ersten Referenz auf ein Parameter-Entity, die sie nicht lesen. Das heißt, sie müssen die Informationen in diesen Deklarationen benutzen, um Attributwerte zu normalisieren, den Ersetzungstext interner Entities zu laden und Attribut-Vorgabewerte bereitzustellen.

Processing InstructionVerarbeitungsanweisung

Verarbeitungsanweisungen (PIs) ermöglichen es Dokumenten, Anweisungen für Anwendungen zu beinhalten.

Public Identifier – Öffentlicher Bezeichner

Zusätzlich zum System-Bezeichner (System Identifier) kann ein externer Bezeichner einen öffentlichen Bezeichner (Public Identifier) enthalten.

Replacement Text – Ersetzungstext

Der Inhalt des Entity nach Ersetzung der Zeichenreferenzen und Parameter-Entity-Referenzen.

Root Element – Wurzelelement

Es gibt genau ein Element, Wurzel- oder Dokument-Element genannt, von dem kein Teil im Inhalt irgendeines anderen Elements vorkommt.

Start-Tag

Kennzeichnet den Beginn aller nicht-leeren XML-Elemente.

System Identifier – System-Bezeichner

Das SystemLiteral wird der System-Bezeichner (System Identifier) des Entity genannt. Es ist eine URI-Referenz (definiert in IETF RFC 2396 und aktualisiert durch IETF RFC 2732), die dafür gedacht ist, dereferenziert zu werden, um eine Eingabe für den XML-Prozessor zu erhalten und damit den Ersetzungstext des Entity zu konstruieren.

Text

Ein geparstes Entity enthält Text (eine Zeichenfolge), der Auszeichnungen oder Zeichendaten darstellen kann.

Text-Entity

Der Inhalt eines geparsten Entity wird als Ersetzungstext bezeichnet; dieser Text wird als integraler Bestandteil des Dokuments betrachtet.

Unparsed Entity – Ungeparstes Entity

Ein ungeparstes Entity ist eine Ressource, deren Inhalt Text sein kann oder auch nicht. Falls es Text ist, darf es auch etwas anderes als XML sein. Jedes ungeparste Entity hat eine assoziierte Notation, die mit einem Namen identifiziert wird. Über die Anforderung hinaus, daß ein XML-Prozessor die Bezeichner des Entity und die Notation gegenüber der Anwendung verfügbar macht, nimmt XML keine Einschränkungen bezüglich des Inhalts von ungeparsten Entities vor.

Validity – Gültigkeit

Ein XML-Dokument ist gültig, wenn es eine assoziierte Dokumenttyp-Deklaration hat und das Dokument die darin ausgedrückten Einschränkungen erfüllt.

Validity Constraint – Gültigkeitsbeschränkung

Eine Regel, die für alle gültigen XML-Dokumente gilt. Verletzungen von Gültigkeitsbeschränkungen sind Fehler; sie müssen benutzeroptional von validierenden XML-Prozessoren gemeldet werden.

Validating Processor – Validierender Prozessor

Muß benutzeroptional Verletzungen der in den Deklarationen der DTD ausgedrückten Beschränkungen ebenso wie das Versagen, die Gültigkeitsbeschränkungen in dieser Spezifikation zu erfüllen, melden.

Well-Formed –Wohlgeformt

Ein Textobjekt ist genau dann ein wohlgeformtes XML-Dokument, wenn:

  1. es als Ganzes die Produktion namens »Dokument« erfüllt,
  2. es alle Wohlgeformtheits-Beschränkungen der Spezifikation erfüllt,
  3. alle geparsten Entities, die direkt oder indirekt im Dokument referenziert werden, wohlgeformt sind.

Well-Formedness Constraint – Wohlgeformtheits-Beschränkung

Eine Regel, die für alle wohlgeformten XML-Dokumente gilt. Verletzungen der Wohlgeformtheits-Beschränkungen sind kritische Fehler.

XML Declaration – XML-Deklaration

XML-Dokumente sollten mit einer XML-Deklaration beginnen, die die verwendete Version von XML angibt.

XML Document – XML-Dokument

Ein Datenobjekt ist ein XML-Dokument, wenn es wohlgeformt ist, wie in dieser Spezifikation definiert. Zusätzlich kann ein wohlgeformtes XML-Dokument gültig sein, wenn es bestimmte weitere Beschränkungen erfüllt.

XML Processor – XML-Prozessor

Ein Softwaremodul, das zum Lesen von XML-Dokumenten und für den Zugriff auf deren Inhalt und Struktur benutzt wird.

  

<< zurück vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema Python & XML bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © 2002 O'Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "Python & XML" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

O’Reilly Verlag GmbH & Co. KG, Balthasarstraße 81, 50670 Köln, kommentar(at)oreilly.de