• +49-(0)721-402485-12
Ihre Experten für XML, XQuery und XML-Datenbanken

SAX 2.0-Features und -Eigenschaften

Dieser Anhang beschreibt die SAX 2.0-Standard-Features und -Eigenschaften. Unabhängig davon, daß eine spezielle Implementierung einer Parser-Software eigene Features und Eigenschaften für herstellerspezifische Funktionalitäten einführen kann, repräsentiert diese Liste die Kernfunktionalität, die jede SAX 2.0-gerechte Parser-Implementierung unterstützen sollte.

Zentrale Features

Hier ist der Kernsatz der Features, die von der XMLReader-Implementierung in SAX 2.0 unterstützt werden. Diese Features können mittels setFeature() gesetzt werden. Ihr momentaner Wert wird mit getFeature() abgefragt. Jedes Feature kann sowohl lesbar als auch schreibbar oder auch nur lesbar sein. Es ist ebenfalls möglich, daß gewisse Features nur während des Parsens modifizierbar sind oder nur dann, wenn gerade nicht geparst wird. Tiefergehende Informationen über SAX-Features und -Eigenschaften sind in den Kapiteln Einstieg in XML und SAX zu finden.

Namensraum-Verarbeitung

Dieses Feature weist einen Parser an, eine Namensraum-Verarbeitung durchzuführen, was bedeutet, daß man auf Namensraum-Präfixe, Namensraum-URIs und Element-lokale Namen durch die SAX-Namensraum-Callbacks zugreifen kann ( startPrefixMapping() und endPrefixMapping(), wie auch auf verschiedene Parameter, die an startElement() und endElement() übergeben werden). Wenn dieses Feature den Wert true hat, wird diese Verarbeitung durchgeführt (das impliziert, daß das Feature Namensraum-Präfix-Reporting ebenfalls angeschaltet ist). Die Voreinstellung für dieses Feature ist in den meisten Parsern true.

  • URI: http://xml.org/sax/features/namespaces
  • Zugriff: nur lesbar während des Parsens, les- und schreibbar sonst

Namensraum-Präfix-Reporting

Dieses Feature weist den Parser an, die in Namensraum-Deklarationen benutzten Attribute, wie zum Beispiel die xmlns:[namespace URI]-Attribute, zu melden. Ist dieses Feature nicht eingeschaltet (false), gelangen keine Informationen über die Attribute nach außen. Sie werden vielmehr vom Parser konsumiert, während er versucht, ein Mapping vom Namensraum-Präfix zu URIs zu finden. Diese Informationen sind im allgemeinen auch in diesem Zusammenhang nicht von Wert für die umgebende Anwendung. Außerdem ist es so, daß bei eingeschalteter Namensraum-Verarbeitung dieses Feature zumeist abgeschaltet ist. Die Voreinstellung in den meisten Parsern ist false.

  • URI: http://xml.org/sax/features/namespace-prefixes
  • Zugriff: nur lesbar während des Parsens, les- und schreibbar sonst

String-Interning

Dieses Feature bestimmt, daß alle lokalen und rohen Elementnamen, alle Namensraum-Präfixe und alle Namensraum-URIs mittels der Methode java.lang.String.intern() durch ihre internen, kanonischen Versionen ersetzt werden. Wenn es nicht angeschaltet (also false) ist, bleiben XML-Komponenten unverändert. Neuere High-Performance-Parser haben dieses Feature als Voreinstellung deaktiviert, um eigene Optimierungen durchführen zu können.

  • URI: http://xml.org/sax/features/string-interning
  • Zugriff: nur lesbar während des Parsens, les- und schreibbar sonst

Validierung

Dieses Feature fordert, daß die Validierung durchgeführt wird und jeder Fehler, der eine gebrochene Beschränkung als Ursache hat, durch das SAX-Interface ErrorHandler weitergeleitet wird (wenn eine Implementierung registriert ist). Wenn der Wert dieses Features false ist, wird keine Validierung durchgeführt, was im allgemeinen die Voreinstellung ist. Sie müssen die Dokumentation des Herstellers der jeweiligen Parser-Implementierung prüfen, um herauszufinden, ob dieses Feature auf DTD- und XML Schema-Validierung wirkt.

  • URI: http://xml.org/sax/features/validation
  • Zugriff: nur lesbar während des Parsens, les- und schreibbar sonst

Verarbeitung externer Entities (generell)

Dieses Feature besagt, daß alle generellen (Text-)Entities innerhalb eines XML-Dokuments verarbeitet werden sollen. Im allgemeinen wird es von den meisten Parsern als Voreinstellung auf true gesetzt.

  • URI: http://xml.org/sax/features/external-general-entities
  • Zugriff: nur lesbar während des Parsens, les- und schreibbar sonst

Verarbeiten externer Entities (Parameter)

Dieses Feature weist den Parser an, alle externen Parameter zu parsen, einschließlich derer in Untermengen externer DTDs. Die Voreinstellung dafür ist ebenfalls in den meisten Parsern true.

  • URI: http://xml.org/sax/features/external-parameter-entities
  • Zugriff: nur lesbar während des Parsens, les- und schreibbar sonst

Kern-Eigenschaften

Eigenschaften stellen eine Möglichkeit dar, mit Objekten zu arbeiten, die während des Parsens benutzt werden. Dies ist besonders bei der Arbeit mit Handlern wie LexicalHandler und DeclHandler, die nicht Teil der zum Kern von SAX 2.0 gehörenden Handler (EntityResolver, DTDHandler, ContentHandler und ErrorHandler) sind, der Fall. Jede Eigenschaft kann sowohl nur lesbar als auch lesbar und schreibbar sein. Außerdem ist es möglich, daß Eigenschaften nur während des Parsens geändert werden können oder nur dann, wenn nicht geparst wird.

Lexical Handler

Diese Eigenschaft erlaubt das Setzen und Lesen einer Implementierung eines LexicalHandler, der zur Behandlung von Kommentaren und DTD-Referenzen in einem XML-Dokument benutzt werden soll.

  • URI: http://xml.org/sax/properties/lexical-handler
  • Typ: org.xml.sax.ext.LexicalHandler
  • Zugriff: immer les- und schreibbar

Declaration Handler

Diese Eigenschaft erlaubt das Setzen und Auslesen einer Implementierung von DeclHandler, der zur Verarbeitung von Beschränkungen in DTDs benutzt werden soll.

  • URI: http://xml.org/sax/properties/declaration-handler
  • Typ: org.xml.sax.ext.DeclHandler
  • Zugriff: immer les- und schreibbar

DOM Node

Während des Parsens liefert diese Eigenschaft den aktuellen DOM-Node (wenn ein DOM-Iterator benutzt wird). Wird nicht geparst, liefert sie den root-DOM-Node. Die meisten Parser, die ich getestet habe, als ich dieses Buch schrieb, unterstützten diese Eigenschaft außer in Ausnahmefällen nicht. Ich würde mich nicht darauf verlassen, daß sie sinnvolle Informationen liefert.

  • URI: http://xml.org/sax/properties/dom-node
  • Typ: org.w3c.dom.Node
  • Zugriff: nur lesbar während des Parsens, les- und schreibbar sonst

Literal (XML) String

Diese Eigenschaft liefert einfach die Zeichenfolge im XML-Dokument, die den aktuellen Event auslöste. Wie schon bei der DOM-Node-Eigenschaft konnte ich wenig Unterstützung finden. Verlassen Sie sich nicht darauf, speziell wenn Sie verschiedene Parser benutzen.

  • URI: http://xml.org/sax/properties/xml-string
  • Typ: java.lang.String
  • Zugriff: nur lesbar