Die Python-SAX-API

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

Die Simple API for XML (SAX) ist im wesentlichen eine Sammlung von Schnittstellen. Python unterstützt die zweite Version der SAX-Spezifikation, die oft als SAX 2 bezeichnet wird. Es gibt mehrere Schnittstellen, die von der SAX-API definiert werden, und die Python-Implementierung enthält bequeme Basisklassen, die es leicht machen, nur jene Methoden zu implementieren, die Sie wirklich brauchen. In der Python-Version der Schnittstelle sind auch einige Funktionen enthalten, die das Arbeiten mit SAX bei den meisten Anwendungen sehr einfach machen.

Die SAX-Schnittstelle wird in Die Simple API for XML erläutert, wo auch mehrere Beispiele gegeben werden. Die offizielle Dokumentation der Python-Version von SAX ist Teil der Python Library Reference.

   

   


Hilfsfunktionen

Drei wichtige Hilfsfunktionen machen das SAX-basierte Parsen trivial. Diese sind für die meisten Anwendungen ausreichend, besonders dann, wenn ContentHandler der einzige Handler ist, der gebraucht wird. Diese Funktionen befinden sich im Modul xml.sax und funktionieren sowohl mit der Standardbibliothek als auch mit PyXML.

make_parser([parser_list])

Gibt ein SAX-XMLReader-Objekt zurück. Die meisten der Beispiele in Die Simple API for XML benutzen diese Funktion, um einen Reader zu erzeugen. Siehe auch Fortgeschrittene Verwendung der Parser-Fabrik für weitere Informationen über die Verwendung der zugrundeliegenden Parser-Fabrikobjekte.

parse(source, content_handler[, error_handler])

Erzeugt einen Reader mit make_parser, assoziiert die angegebenen Content- und Error-Handler und parst ein XML-Dokument. Das Dokument wird durch den Parameter source identifiziert, der ein Dateiname, eine URL, ein lesbares Dateiobjekt oder eine InputSource-Instanz sein kann.

parseString(text, content_handler[, error_handler])

Ähnlich zu parse, allerdings ist das Eingabedokument der in text angegebene Text.


XMLReader

Dies ist die grundlegende Parser-Schnittstelle, die in SAX 2 benutzt wird. Sie bietet Methoden, um Handler-Objekte zu setzen und zu bekommen und eine Vielzahl von konfigurierbaren Optionen zu steuern.

parse(source)

Startet den Parser auf dem Dokument in dem Entity, das durch source identifiziert wird. Dieser Parameter kann ein Dateiname, eine URL oder ein InputSource-Objekt sein. Die InputSource-Schnittstelle wird später auf dieser Seite beschrieben.

getContentHandler( )

Liefert den aktuell konfigurierten Content-Handler oder None, falls es keinen gibt.

getDTDHandler( )

Liefert den aktuell konfigurierten DTD-Handler oder None, falls es keinen gibt.

getEntityResolver( )

Liefert den aktuell konfigurierten Entity-Resolver oder None, falls es keinen gibt.

getErrorHandler( )

Liefert den aktuell konfigurierten Error-Handler oder None , falls es keinen gibt.

getFeature(name)

Holt den aktuellen Booleschen Wert für das durch name angegebene Feature. Diese Methode gibt true zurück, falls das Feature aktiviert ist, und false, wenn es deaktiviert ist. Löst die Ausnahmen SAXNotRecognized bzw. SAXNotSupported aus, falls name nicht bekannt ist bzw. nicht unterstützt wird.

getProperty(name)

Liefert den aktuellen Wert der durch name angegebenen Property. Diese Methode gibt irgendein zu dieser bestimmten Property passendes Python-Objekt zurück; die Anwendung muß so geschrieben sein, daß sie die mit dieser Property verbundenen Regeln befolgt. Wenn die Property, deren Wert verlangt wird, dem Parser nicht bekannt ist oder von ihm nicht unterstützt wird, wird die entsprechende Unterklasse von SAXException als Ausnahme ausgelöst.

setContentHandler(handler)

Setzt den Content-Handler auf handler, der der ContentHandler-Schnittstelle entsprechen muß (wird im nächsten Abschnitt beschrieben). Falls handler gleich None ist, werden Inhaltsereignisse nicht berichtet.

setDTDHandler(handler)

Setzt den DTD-Handler auf handler, der der DTDHandler-Schnittstelle entsprechen muß, die später in dieser Referenz beschrieben wird. Falls handler gleich None ist, werden der Anwendung keine Informationen über ungeparste Entities übermittelt.

setEntityResolver(resolver)

Setzt den Entity-Resolver auf handler, der der EntityResolver-Schnittstelle entsprechen muß. Diese Schnittstelle wird später in dieser Referenz detaillierter beschrieben. Falls handler gleich None ist, ist es dem Parser als Standardverhalten erlaubt zu bestimmen, ob und wie auf externe Entities zugegriffen wird. Viele Parser verfügen über ein Mindestmaß an Möglichkeiten, um externe Entities zu laden.

setErrorHandler(handler)

Setzt den Error-Handler auf handler, der der ErrorHandler-Schnittstelle entsprechen muß. Diese Schnittstelle wird später in dieser Referenz detaillierter beschrieben. Falls handler gleich None ist, kommt das Standardverhalten zum Tragen.

setFeature(name, value)

Aktiviert oder deaktiviert das durch name angegebene Parser-Feature. Das Feature wird aktiviert, falls value gleich true, bzw. deaktiviert, falls es false ist. Wenn das Feature unbekannt ist, wird die Ausnahme SAXNotRecognized ausgelöst. Wird der spezielle Wert nicht unterstützt, wird SAXNotSupported ausgelöst. Einige Features müssen vor dem Parsen und andere können zu beliebigen Zeitpunkten gesetzt werden.

setLocale(locale)

Setzt die Locale (Landeseinstellungen) für die Fehlermeldungen vom Parser. Falls der Parser die angegebene Locale nicht unterstützt, wird eine SAX-Ausnahme ausgelöst. Die Anwendung darf die Ausnahme abfangen und ignorieren, aber die Locale ändert sich nicht. Die Anwendung darf die Locale ändern, wann immer sie mag.

setProperty(name, value)

Setzt den Wert der durch name identifizierten Property auf value. Der Parser prüft, ob value den richtigen Typ für diese bestimmte Property hat, und kann eine Ausnahme auslösen, wenn dem nicht so ist. Falls die Property name dem Parser nicht bekannt ist oder von ihm nicht unterstützt wird, wird die entsprechende Ausnahme ausgelöst. Einige Properties müssen vor dem Parsen und andere können zu beliebigen Zeitpunkten gesetzt werden.


ContentHandler

Der ContentHandler ist das meistbenutzte der SAX-Handler-Objekte. Er ist der Handler, der die Informationen über die geparsten Elemente ebenso wie ihre Attribute und den Inhalt zwischen Start- und End-Tags erhält. Die im vorherigen Abschnitt beschriebenen Hilfsfunktionen parse und parseString benötigen eine Implementierung von ContentHandler als Argument.

setDocumentLocator(locator)

SAX-Parsern empfiehlt man, einen locator anzugeben, um im Dokument die Quelle eines Ereignisses zu finden, damit Sie die Endposition eines beliebigen dokumentbezogenen Ereignisses bestimmen können. Das locator-Objekt entspricht der Locator-Schnittstelle, die später auf dieser Seite beschrieben wird.

startDocument( )

Wenn der Parser mit einem Dokument beginnt, ruft er diese Methode zuerst und genau einmal auf – außer es existiert setDocumentLocator, die dann vorher aufgerufen wird.

endDocument( )

Diese Methode wird nur einmal als allerletzte Methode vom Parser aufgerufen.

startPrefixMapping(prefix, uri)

Diese Methode wird aufgerufen, wenn eine Namensraum-Deklaration angetroffen wird. Der Parameter prefix ist der im Dokument benutzte Präfix-String, und uri bezieht sich auf den Universal Resource Identifier (URI), den das Präfix darstellt.

endPrefixMapping(prefix)

Dieses Ereignis tritt zu dem Zeitpunkt auf, wenn das Endelement zur entsprechenden startPrefixMapping aufgerufen wird. Das bedeutet, daß die Deklaration für prefix den Geltungsbereich verlassen hat. Es bedeutet nicht, daß es keine Abbildung für prefix gibt, da eine äußere Deklaration noch immer im Geltungsbereich sein kann.

startElement(name, attrs)

Dieses Ereignis tritt immer dann auf, wenn das öffnende Tag eines Elements angetroffen wird. name ist der Tag-Name des Elements. Der Parameter attrs ist ein Python-Dictionary mit Attributnamen und -werten. Dies wird aufgerufen, wenn Namensräume nicht verarbeitet werden.

startElementNS(name, qname, attrs)

In dieser Methode ist name ein Tupel aus URI und lokalem Namen. Der Parameter qname ist der im XML-Dokument verwendete Tag-Name. Der Parameter attrs ist wieder ein Python-Dictionary mit Paaren von Attributnamen und -werten. Dies wird nur dann aufgerufen, wenn Namensräume verwendet werden.

endElement(name)

Dieses Ereignis tritt auf, wenn das Ende eines Elements erreicht wird und der Anfang des Elements von startElement zuvor berichtet worden ist.

endElementNS(name, qname)

Dies ist die entsprechende Methode bzw. das Ereignis zum startElementNS-Ereignis.

characters(content)

Diese Methode wird für jeden Zeichendatenabschnitt aufgerufen, der nicht Teil eines Elements oder anderer Auszeichnungen ist. Sie kann bei einem anscheinend zusammengehörenden Abschnitt von Zeichendaten mehrfach aufgerufen werden. Mit anderen Worten: Einige Parser können diese Methode für jede Zeile des Dokuments und andere auf zusammengesetzten Zeilen zwischen anderen Markup-Abschnitten aufrufen. In beiden Fällen werden alle Zeichendaten an diesen Methodenaufruf übergeben. Der Parameter content enthält die eigentlichen Zeichendaten.

ignorableWhitespace(whitespace)

Diese Methode wird von validierenden Parsern aufgerufen, wenn sie über Leerraum (Whitespace) im Elementinhalt berichten. Ähnlich zur bereits erwähnten Methode characters kann auch diese in Abhängigkeit vom Parser mehrfach aufgerufen werden. Validierende Parser müssen diese Methode aufrufen. Der Parameter whitespace enthält den tatsächlich gefundenen Leerraum.

processingInstruction(target, data)

Diese Methode wird einmal für jede vom Parser gefundene Verarbeitungsanweisung aufgerufen. XML-Deklarationen und Text-Deklarationen dürfen nicht auf diese Weise übermittelt werden. Die Parameter target und data sind beides Stringtypen, die die anwendungs-relevanten Informationen der Verarbeitungsanweisung enthalten.

skippedEntity(name)

Der Parser ruft diese Methode jedesmal auf, wenn eine Entity-Referenz gefunden wird, deren Inhalt nicht geparst wird. Nicht-validierende Parser dürfen externe Entities bzw. irgendwelche Entities überspringen, zu denen sie keine Deklaration gesehen haben.


DTDHandler

Mit diesem Handler kann die Anwendung einige Informationen bekommen, die bei der Verwendung von ungeparsten externen Entities nützlich sein können. Dieser Handler wird nicht oft benutzt.

notationDecl(name, publicId, systemId)

Diese Methode wird aufgerufen, wenn eine Notation-Deklaration vorgefunden wird. Mindestens einer der ID-Parameter muß übergeben werden, und falls die systemId vorhanden und eine URL ist, muß der Parser sie vollständig auflösen, bevor sie durch dieses Ereignis an die Anwendung weitergegeben wird.

unparsedEntityDecl(name, publicId, systemId, ndata)

Der Notationsname entspricht einer Notation, die vom bereits erwähnten Ereignis notationDecl berichtet wird. Wieder gilt: Wenn systemId eine URL ist, muß der Parser sie vor der Weitergabe an die Anwendung vollständig auflösen.


EntityResolver

Diese Handler-Schnittstelle dient dazu, der Anwendung eine Kontrolle darüber zu ermöglichen, wie externe Entities geladen werden. Das kann benutzt werden, um einen Cache-Speicher auf Anwendungsebene zu unterstützen oder um eine oder mehrere Techniken zur Abbildung von öffentlichen (Public-)Bezeichnern auf System-Bezeichner zu benutzen.

resolveEntity(publicId, systemId)

Der Parser ruft diese Methode auf, um die Bezeichner für ein externes Entity in einen System-Bezeichner umzuwandeln, der dann geladen wird. Der Parameter systemId ist die in einer Entity-Deklaration angegebene URL, und publicId ist der öffentliche Bezeichner oder None, wenn es keinen gibt. Diese Methode sollte einen String mit dem neuen System-Bezeichner oder ein Objekt liefern, das die InputSource-Schnittstelle unterstützt.


InputSource

Die Anwendung kann Instanzen der im Modul xml.sax.xmlreader definierten Klasse InputSource als Rückgabewerte der resolveEntity-Methode in der EntityResolver-Schnittstelle oder als Parameter zur Hilfsfunktion parse oder zur Methode XMLReader benutzen. Normalerweise sollte es keinen Grund geben, eine alternative Implementierung dieser Klasse zu benutzen, aber es ist erlaubt. Wenn die Anwendung eine InputSource vorbereitet, um sie dem Parser zu übergeben, sollte sie die vielfältigen set-Methoden benutzen, um das Objekt mit allen Informationen über die Eingabequelle zu versorgen, die sie hat.

Wenn der Parser die InputSource-Instanz erhält, versucht er zuerst, den Zeichenstrom zu benutzen, falls vorhanden; sonst benutzt er den Byte-Strom. Ist keiner von beiden verfügbar, benutzt er den System-Bezeichner und versucht, selbst einen Byte-Strom zu öffnen.

getByteStream( )

Gibt den mit dieser Eingabequelle assoziierten Byte-Strom zurück. Dies ist ein Strom, der rohe Bytes von der Eingabequelle statt decodierte Unicode-Zeichen zurückgibt.

getCharacterStream( )

Gibt den mit dieser Eingabequelle assoziierten Zeichenstrom zurück. Ein Zeichenstrom versorgt den Parser mit decodierten Unicode-Zeichen statt mit rohen Bytes.

getEncoding( )

Gibt die Codierung des Byte-Stroms zurück, falls bekannt, und sonst None. Bei unbekannter Codierung wendet der Parser die Regeln zur automatischen Codierungserkennung an, basierend auf den ersten Bytes des Eingabestroms.

getPublicId( )

Gibt den öffentlichen Bezeichner der Eingabequelle oder None zurück, wenn keine existiert oder sie nicht bekannt ist.

getSystemId( )

Gibt den System-Bezeichner der Eingabequelle oder None zurück, wenn keine existiert oder sie nicht bekannt ist. Es gibt nur eine einzige Situation, in der dies jemals None für eine vollständig initialisierte Eingabequelle zurückgeben sollte, nämlich, wenn die Quelle benutzt wird, um das Dokument-Entity anzugeben, und die Eingabequelle vom Benutzer statt einer URL oder einem Dateinamen angegeben wird.

setByteStream(stream)

Setzt den Byte-Strom der Eingabequelle. Dies sollte verwendet werden, wenn die Bytes des Entity effizienter referenziert werden können, als es der Parser basierend auf dem System-Bezeichner tun könnte. Das ist ratsam, wenn das Dokument aus einem Cache-Speicher statt über das Netzwerk geladen wird.

setCharacterStream(stream)

Setzt den Zeichenstrom für die Eingabequelle. Dies sollte benutzt werden, wenn die Quelle Unicode-Zeichen direkt ausgeben kann.

setEncoding(encoding)

Setzt die Codierung des Byte-Stroms auf encoding. Diese kann bekannt sein, wenn die Ressource mit einem Protokoll geladen wird, das diese Information direkt angibt. HTTP z. B. kann Informationen über die Zeichencodierung im Parameter charset des Content-Type-Headers der Antwort enthalten.

setPublicId(id)

Setzt den öffentlichen Bezeichner auf id.

setSystemId(id)

Setzt den System-Bezeichner auf id.


ErrorHandler

Die Art, wie SAX mit Fehlerbedingungen umgeht, ist im Abschnitt SAX-Handler-Objekte beschrieben. Von den Methoden in der ErrorHandler-Schnittstelle wird jede mit einer SAXException-Instanz als Parameter aufgerufen. Die spezifischen Ausnahmeklassen werden im Abschnitt »SAX-Ausnahmen« später auf dieser Seite beschrieben.

error(exception)

Diese Methode erlaubt der Anwendung, auf einen unkritischen Fehler zu antworten.

fatalError(exception)

Ähnlich zu error gibt diese Methode an, daß der Parser einen Fehler gefunden hat, der jedoch kritisch ist. Anwendungen sollten davon ausgehen, daß das Dokument an diesem Punkt unbrauchbar ist.

warning(exception)

Diese Methode wird aufgerufen, um Bedingungen zu übermitteln, die nicht kritisch sind und nicht notwendigerweise Fehler darstellen.


DeclHandler

Der DeclHandler wird dazu benutzt, Informationen über die laut DTD erlaubte Struktur eines Dokuments zu bekommen. Er wird nur von PyXML unterstützt, nicht jedoch von der Standardbibliothek. Eine einfache Basisklasse für diesen Handler ist in Form der DeclHandler-Klasse im Modul xml.sax.saxlib verfügbar. Der DeclHandler kann mit der Methode setProperty im Parser-Objekt gesetzt werden, indem die Konstante property_declaration_handler aus dem Modul xml.sax.handler benutzt wird.

attributeDecl(element, attribute, type, constraint, default)

Der Parser ruft diese Methode für jedes deklarierte Attribut auf. Der Aufruf repräsentiert die Deklaration des Attributs namens attribute für den Elementtyp element. Der Datentyp des Attributs, der als type angegeben ist, liegt in Form eines Strings mit einem der Werte CDATA, ENTITY, ENTITIES, ID, IDREF, IDREFS, NMTOKEN, NMTOKENS oder NOTATION oder als eine Liste von Strings bei Aufzählungstypen vor. Der Parameter constraint ist ein String oder None, wobei mögliche Stringwerte #FIXED, #IMPLIED und #REQUIRED sind. Wenn für das Attribut ein Vorgabewert definiert ist, wird er als default angegeben, sonst ist default gleich None.

elementDecl(name, contentModel)

Diese Methode wird vom Parser aufgerufen, wenn er eine Elementdeklaration vorfindet. name ist der Name des Elementtyps, und contentModel ist sein Inhaltsmodell. Das Inhaltsmodell ist ein String mit einem der Werte EMPTY oder ANY oder ein Tupel, das das Modell-Trennzeichen, die Liste von Elementtypnamen und den Modifikator enthält.

externalEntityDecl(name, publicId, systemId)

Wenn der Parser die Definition eines extern geparsten Entity sieht, ruft er diese Methode auf, um der Anwendung davon zu berichten. name ist der Name, der dem Entity zugewiesen ist, publicId ist der öffentliche Bezeichner oder None, und systemId ist der System-Bezeichner.

internalEntityDecl(name, value)

Der Parser ruft diese Methode auf, wenn ein internes allgemeines Entity definiert wird. name ist der Name, der dem Entity zugewiesen ist, und value ist ein String mit dem Ersetzungstext für das Entity.


LexicalHandler

Mit dem LexicalHandler erhält man Informationen über syntaktische Ereignisse wie z. B. CDATA-Abschnittsgrenzen und Kommentare in einem Dokument. Er wird nur von PyXML, aber nicht von der Standardbibliothek unterstützt. Eine einfache Basisklasse für diesen Handler ist in Form der LexicalHandler-Klasse im Modul xml.sax.saxlib vorhanden. Der LexicalHandler kann mit der Methode setProperty im Parser-Objekt gesetzt werden, und zwar mit der Konstanten property_lexical_handler des Moduls xml.sax.handler.

comment(text)

Diese Methode wird aufgerufen, wenn der Parser einen Kommentar im Dokument findet. Der Body des Kommentars zwischen den beiden -- wird im Parameter text übergeben.

startDTD( )

Diese Methode wird aufgerufen, bevor der Parser damit beginnt, irgendeine Information aus der DTD zu lesen, unabhängig davon, ob diese Information in der internen oder externen Teilmenge vorliegt. Diese Methode wird höchstens einmal aufgerufen.

endDTD( )

Der Parser ruft diese Methode auf, nachdem die gesamte DTD-Information gelesen wurde. Sie wird höchstens einmal aufgerufen.

startEntity(name)

Diese Methode wird aufgerufen, wenn der Parser damit beginnt, das mit dem Namen name assoziierte Entity in der DTD zu parsen. Die einzige Art, die in der DTD definierten Namen zu kennen, ist, einen DeclHandler zu verwenden und die Methoden externalEntityDecl und internalEntityDecl zu implementieren.

endEntity(name)

Der Parser ruft diese Methode auf, wenn das Parsen des mit name identifizierten Entity beendet ist. Siehe startEntity für Informationen über die Verwendung von Entity-Namen.

startCDATA( )

Diese Methode wird zu Beginn eines CDATA-Abschnitts aufgerufen.

endCDATA( )

Diese Methode wird am Ende eines CDATA-Abschnitts aufgerufen.


Locator

locator-Objekte werden verwendet, um den Zugriff auf die Informationen zu ermöglichen, wo Ereignisse im Dokument auftreten. Die Anwendung erhält einen Locator, indem die Methode setDocumentLocator im Content-Handler implementiert wird. Locator-Objekte verfügen über Methoden, mit denen die Anwendung bestimmen kann, welches Entity geparst wurde, als das Ereignis eintrat, und welcher Punkt im Entity beim Parsen erreicht wurde. Die Ausnahme klasse SAXParseException genügt ebenfalls der Locator-Schnittstelle.

Die mit diesen Methoden verfügbare Information kann extrem wertvoll zum Berichten von Problemen mit Ihren Dokumenten in einer Anwendung sein. Wenn z. B. eine Bestellung einen Preis enthält, der außerhalb des erlaubten Rahmens liegt, oder eine Artikelnummer, die in Ihrer Datenbank nicht existiert, könnten Sie die Fehlersuche unterstützen, indem Sie genaue Details über die Stelle im XML-Dokument angeben, wo das Problem auftauchte. Damit könnte ein Editor-Widget veranlaßt werden, den Cursor dorthin zu positionieren, wo das Problem gefunden wurde, damit der Benutzer das Dokument korrigieren kann.

getColumnNumber( )

Gibt den Zeichenabstand innerhalb der Zeile zurück, in der das Parsing-Ereignis aufgetreten ist. Dieser Spaltenwert wird bei Tabulatoren nicht angepaßt.

getLineNumber( )

Gibt die Nummer der Zeile zurück, in der das Parsing-Ereignis aufgetreten ist. Die erste Zeile hat die Nummer 1 und nicht 0.

getPublicId( )

Gibt den öffentlichen Bezeichner des geparsten Entity zurück, sofern einer bekannt ist. Wenn nicht, wird None zurückgegeben.

getSystemId( )

Gibt den System-Bezeichner des geparsten Entity zurück, falls er bekannt ist, sobald das Ereignis aufgetreten ist. Er kann z. B. dann unbekannt sein, wenn die Eingabedaten für das Dokument-Entity direkt in den Parser gefüttert werden. Wenn der System-Bezeichner unbekannt ist, gibt diese Methode None zurück.


SAX-Ausnahmen

SAX stellt alle Fehler, inklusive der Ausnahmen, die von Handler-Methoden ausgelöst werden, einer Anwendung als Instanzen der Ausnahmeklasse SAXException oder von Unterklassen davon dar. Instanzen dieser Klasse haben folgende Methoden:

getException( )

Gibt die Ausnahme zurück, die vom SAX-Parser abgefangen wurde, falls es eine solche gibt, sonst None.

getMessage( )

Gibt eine Erklärung des vom Parser angetroffenen Problems in Form eines lesbaren Strings zurück. Der String kann lokalisiert sein, falls die Methode setLocale von XMLReader aufgerufen wird.

Folgende Unterklassen von SAXException werden in SAX definiert.

SAXParseException

Diese Ausnahme wird dann ausgelöst, wenn es ein Problem damit gibt, das Dokument zu parsen. Instanzen dieser Ausnahme implementieren auch die Locator-Schnittstelle.

SAXNotRecognizedException

Wenn eine Anwendung versucht, ein Feature oder eine Property zu setzen oder abzufragen, das/die vom Parser nicht erkannt wird, wird diese Ausnahme ausgelöst. Von Parsern wird verlangt, daß sie alle Features und Properties erkennen, die als Teil der SAX 2-Spezifikation definiert sind, selbst dann, wenn sie diese nicht unterstützen.

SAXNotSupportedException

Ein Parser löst diese Ausnahme aus, wenn die Anwendung versucht, ein Feature oder eine Property zu setzen oder abzufragen, das/die vom Parser erkannt, aber nicht unterstützt wird, oder wenn die Anwendung versucht, ein Feature oder eine Property auf einen Wert zu setzen, der nicht unterstützt wird.

  

zum Seitenanfang

<< 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