Die Python-DOM-API

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

DOM ist eine Sammlung von Schnittstellen. Alle Kernschnittstellen sind in Python implementiert, inklusive:

Diese Schnittstellen und ihre spezifische Implementierung in Python werden als Referenz auf dieser Seite detailliert beschrieben. Außerdem werden 4DOM-Erweiterungen kurz erwähnt.


DOMException

DOM-Operationen können gelegentlich auf ein Problem stoßen und eine Ausnahme auslösen. Die in der W3C-DOM-Spezifikation enthaltene abstrakte Schnittstelle definiert eine Ausnahme und mehrere Konstanten. In dieser Schnittstelle werden spezifische Ausnahmen festgestellt, indem die allgemeine Ausnahme abgefangen und das code-Attribut des Ausnahmeobjekts geprüft wird. Python erweitert sie so, daß sie sich mehr wie andere Python-Ausnahmen verhält: Es gibt eine DOMException-Basisklasse für die Ausnahmen und eine davon abgeleitete Klasse für jede spezifische Ausnahme. Das code-Attribut enthält immer noch eine der definierten Konstanten als Wert. Quellcode, der nur mit einer bestimmten Ausnahme umgeht, sollte nur diese eine bestimmte abgeleitete Ausnahme in einer except-Klausel angeben, während Quellcode, von dem man annimmt, daß er beliebige DOM-Ausnahmen in allgemeiner Weise behandelt, die Basisklasse DOMException angeben sollte. Alle Ausnahmeklassen und -Konstanten werden im Modul xml.dom definiert.

In dieser Liste ist der erste Name der der Ausnahmeklasse, und der zweite Name in Klammern ist der der Konstanten für das code-Attribut.

IndexSizeErr (INDEX_SIZE_ERR)

Wird ausgelöst, falls ein Index negativ oder größer als der erlaubte Wert ist.

DOMStringSizeErr (DOMSTRING_SIZE_ERR)

Wird ausgelöst, falls der angegebene Textbereich nicht in einen DOMString paßt.

HierarchyRequestErr (HIERARCHY_REQUEST_ERR)

Wird benutzt, falls ein Knoten irgendwo eingefügt wird, wo er nicht hingehört.

WrongDocumentErr (WRONG_DOCUMENT_ERR)

Wird benutzt, falls ein Knoten in einem anderen Dokument verwendet wird als in jenem, das ihn erzeugt hat (das ihn nicht unterstützt).

InvalidCharacterErr (INVALID_CHARACTER_ERR)

Wird benutzt, falls ein ungültiges oder nicht erlaubtes Zeichen, z. B. in einem Namen, verwendet wird. Ungültige Zeichen werden in der XML-Spezifikation angegeben.

NoDataAllowedErr (NO_DATA_ALLOWED_ERR)

Wird benutzt, falls Daten in einem Knoten angegeben sind, der keine Daten unterstützt.

NoModificationAllowedErr (NO_MODIFICATION_ALLOWED_ERR)

Wird benutzt, falls der Versuch gemacht wird, ein Objekt zu modifizieren, bei dem keine Modifikation erlaubt ist.

NotFoundErr (NOT_FOUND_ERR)

Wird verwendet, falls der Versuch gemacht wird, einen Knoten in einem Kontext zu referenzieren, in dem er nicht existiert.

NotSupportedErr (NOT_SUPPORTED_ERR)

Wird benutzt, falls die Implementierung den verlangten Objekt- oder Operationstyp nicht unterstützt.

InuseAttributeErr (INUSE_ATTRIBUTE_ERR)

Wird verwendet, falls der Versuch gemacht wird, ein Attribut hinzuzufügen, das bereits anderswo verwendet wird.

InvalidStateErr (INVALID_STATE_ERR)

Wird benutzt, falls der Versuch gemacht wird, ein Objekt zu verwenden, das nicht oder nicht mehr verwendet werden kann.

SyntaxErr (SYNTAX_ERR)

Wird benutzt, falls ein ungültiger oder unerlaubter String angegeben wird.

InvalidModificationErr (INVALID_MODIFICATION_ERR)

Wird benutzt, falls der Versuch gemacht wird, den Typ des zugrundeliegenden Objekts zu modifizieren.

NamespaceErr (NAMESPACE_ERR)

Wird benutzt, falls der Versuch gemacht wird, ein Objekt in einer Weise zu erzeugen oder zu verändern, die bei Berücksichtigung von Namensräumen inkorrekt ist.

InvalidAccessErr(INVALID_ACCESS_ERR)

Wird benutzt, falls ein Parameter oder eine Operation vom zugrundeliegenden Objekt nicht unterstützt wird.


DOMImplementation

Die DOMImplementation-Schnittstelle enthält eine Anzahl von Methoden für Operationen, die unabhängig von jeder Instanz von DOM sind.

hasFeature(feature, version)

Testet, ob die DOM-Implementierung über ein bestimmtes Feature verfügt. Es wird ein Boolescher Wert zurückgegeben.

createDocumentType(qualifiedName, publicId, systemId)

Erzeugt einen leeren DocumentType-Knoten und gibt diesen zurück. Entity-Deklarationen und Notationen sind nicht verfügbar. Man erwartet, daß eine zukünftige Version von DOM die Möglichkeit bieten wird, einen DocumentType mit Inhalt zu füllen.

createDocument(namespaceURI, qualifiedName, doctype)

Erzeugt ein XML-Dokumentobjekt des angegebenen Typs und Dokumentelements. Der Rückgabewert sollte ein Document-Objekt sein. namespaceURI und doctype können None sein, wenn sie beim neuen Dokument keine Bedeutung haben.


DocumentFragment

Erbt von Node

DocumentFragment ist ein minimales Dokumentobjekt. Es ist als Speicher-Container gedacht, den Anwendungen benutzen können, wenn sie einen Teil eines anderen Dokuments isolieren und sich getrennt mit ihm befassen möchten oder um temporäre Fragmente während komplexer Cut&Paste-Operationen aufzubewahren. Dokumentfragmente können beliebige Knotentypen enthalten und verfügen über ein spezielles Verhalten, wenn sie in den Dokumentbaum eingefügt werden. Am interessantesten (und am nützlichsten) ist: Wenn ein DocumentFragment angefügt oder eingefügt wird, werden die Kinder des Fragments an passender Stelle eingefügt und nicht das Fragment selbst.

Ein DocumentFragment ist eine Schnittstelle, die von Node erbt, aber keine weiteren Methoden oder Attribute hinzufügt.


Document

Erbt von Node

Die Document-Schnittstelle ist die Objektdarstellung eines gesamten XML-Dokuments. Es enthält alle Wurzelelemente ebenso wie den Dokumenttyp. Die in Document enthaltenen Kindobjekte haben ihr eigenes ownerDocument-Attribut, das mit diesem Elternelement verbunden ist.

doctype

Enthält die mit dem Dokument assoziierte Dokumenttyp-Deklaration. Der Wert kann nur gelesen und in DOM Level 2 nicht modifiziert werden.

documentElement

Stellt das Wurzelelement des Dokuments dar. Beim Arbeiten mit DOM ist es ganz natürlich, mit Elementen zu arbeiten, und es ist wünschenswert, schnell auf das Wurzelelement eines Dokumentobjekts zugreifen zu können.

implementation

Das DOMImplementation-Objekt, das dieses Dokument behandelt.

createAttribute(name)

Erzeugt ein Attr-Objekt mit dem angegebenen name. Namensräume werden durch die Methode createAttributeNS unterstützt.

createAttributeNS(namespaceURI, qualifiedName)

Macht im wesentlichen das gleiche wie createAttribute(name), erzeugt jedoch das Attribut mit dem angegebenen Parameter namespaceURI.

createCDATASection(data)

Erzeugt einen CDATA-Abschnittsknoten mit den angegebenen Daten und gibt ihn zurück.

createComment(data)

Erzeugt einen Kommentarknoten und gibt ihn zurück.

createDocumentFragment( )

Erzeugt ein leeres DocumentFragment-Objekt und gibt es zurück.

createElement(tagname)

Erzeugt ein Element mit dem Tag-Namen tagname. Gibt ein Element-Objekt zurück.

createElementNS(namespaceURI, qualifiedName)

Identisch mit createElement, aber namespaceURI wird mit dem Element assoziiert.

createEntityReference(name)

Erzeugt ein EntityReference-Objekt und gibt es zurück; kann eine Ausnahme für ungültige Zeichen auslösen, falls unerlaubte Zeichen benutzt werden.

createProcessingInstruction(target, data)

Erzeugt einen ProcessingInstruction-Knoten mit den angegebenen Parametern target und data und gibt ihn zurück.

createTextNode(data)

Erzeugt einen Textknoten mit dem in data angegebenen Text und gibt ihn zurück.

getElementById(elementId)

Gibt ein Element-Objekt mit der entsprechenden ID zurück. Liefert None, wenn es kein solches Element gibt. Denken Sie daran, daß ID-Attribute in der DTD angegeben werden müssen. Einfach ein Tag wie <account id="234"/> zu erzeugen führt nicht dazu, daß er von dieser Methode zurückgeliefert wird, außer die verwendete DTD weist dem Attribut den Token-Typ ID zu. Zusätzlich muß das DOMImplementation-Objekt wissen, welche Attribute vom Typ ID sind. Attribute vom Typ ID müssen in jedem XML-Dokument eindeutig sein.

getElementsByTagName(tagName)

Gibt eine NodeList mit allen Elementen namens tagName zurück. Sie werden in der Reihenfolge zurückgegeben, in der sie beim Parsen des Originaldokuments gefunden wurden.

getElementsByTagNameNS(namespaceURI, localName)

Gibt eine NodeList von Elementen zurück, die sowohl localName als auch namespaceURI entsprechen.

importNode(importedNode, deep)

Diese Methode importiert einen Knoten aus einem anderen Dokument in das aktuelle Dokument. Der Node hat keinen Elternknoten. Alle Attribute und der Namensraum des importierten Node sind gleich. Wegen der Vielzahl verschiedener importierbarer Knoten kommen gewisse Regeln bzw. Nebeneffekte zum Tragen.

  • Importierte Knoten, die Attribute sind (Attr), haben kein Besitzerelement, und alle Kinder werden ebenfalls importiert.
  • Bei DocumentFragment-Knoten werden auch deren Kinder importiert, falls der Parameter deep auf wahr gesetzt ist.
  • Document-Knoten werden nicht importiert, da ein Document kein anderes Document enthalten kann.
  • Element-Knoten werden wie erwartet importiert, inklusive Attribute. Wenn deep wahr ist, werden auch Kinder des Elements importiert.
  • Bei EntityReference-Knoten werden nur diese selbst kopiert, unabhängig von deep. Wenn das Entity einen Wert definiert, wird er ebenfalls importiert.
  • Notation-Knoten können importiert werden, aber DOM erlaubt zur Zeit keine Modifikation von DocumentType.
  • ProcessingInstruction-Knoten werden wie erwartet vollständig importiert. Charac-terData (inklusive CDATASection- und Comment-Knoten) werden wie erwartet mit ihren data-Attributen kopiert.

Node

Als Großvater von vielem in DOM enthält die Node-Klasse eine ganze Menge Informationen.

Knotenkonstanten

Node definiert mehrere Konstanten, die von Anwendungsentwicklern benutzt werden können, um den nodeType des Knotens zu bestimmen.

ELEMENT_NODE

Ein Element-Knoten

ATTRIBUTE_NODE

Ein Attr-Knoten

TEXT_NODE

Ein Text-Knoten

CDATA_SECTION_NODE

Ein CDATASection-Knoten

ENTITY_REFERENCE_NODE

Ein EntityReference-Knoten

ENTITY_NODE

Ein Entity-Knoten

PROCESSING_INSTRUCTION_NODE

Ein ProcessingInstruction-Knoten

COMMENT_NODE

Ein Comment-Knoten

DOCUMENT_NODE

Ein Document-Knoten

DOCUMENT_TYPE_NODE

Ein DocumentType-Knoten

DOCUMENT_FRAGMENT_NODE

Ein DocumentFragment-Knoten

NOTATION_NODE

Ein Notation-Knoten

Attribute und Methoden von Node

attributes

Dies enthält eine NamedNodeMap, die die Attribute dieses Knotens enthält, oder aber der Wert ist None.

childNodes

Dies enthält eine NodeList mit allen Kindknoten. Wenn keine Kinder existieren, ist die Liste leer.

firstChild

Das erste Kind des Knotens. Ein praktisches Attribut, wenn Sie die Struktur des Dokuments kennen. Wenn der Knoten keine Kinder hat, ist dies gleich None.

lastChild

Ähnlich zu seinem Gegenstück firstChild, enthält jedoch das letzte Kind des Knotens. Wenn der Knoten keine Kinder hat, ist dies gleich None.

localName

Gibt den lokalen Teil des qualifizierten Knotennamens zurück.

namespaceURI

Die Namensraum-URI des Knotens oder None, wenn keiner existiert.

nextSibling

Der Knoten unmittelbar nach diesem Knoten oder None, wenn keiner existiert.

nodeName

Der Knotenname, abhängig von seinem Typ. Text- und CharacterData-Knoten haben keinen eigenen Namen, sondern nur einen String, der angibt, daß sie von diesem bestimmten Typ sind. Bei Element-Knoten ist es der Tag-Name. Bei anderen Typen mit Namen wird der entsprechende Name zurückgegeben.

nodeType

Eine Ganzzahl, die den Knotentyp darstellt. Dieser korreliert direkt mit den definierten Konstanten der Node-Klasse.

nodeValue

Der Wert dieses Knotens, abhängig von seinem Typ. Bei Attributen ist es der ihnen zugewiesene Wert. Bei ProcessingInstruction-, CDATASection-, Comment- und Text-Knoten ist es ihr entsprechender Inhalt. Bei Element-Knoten ist dieser Wert jedoch nicht identisch mit den Zeichendaten unterhalb des Elements, sondern mit None.

ownerDocument

Das Document-Objekt, zu dem dieser Knoten gehört.

parentNode

Der unmittelbare Elternknoten des Knotens. Dieser kann gleich None sein, falls der Knoten gerade erst erzeugt und noch nicht als Kind eines anderen Knotens eingefügt wurde. Bei Attributknoten ist dies immer gleich None.

prefix

Dies ist das Namensraum-Präfix oder None, falls der Knoten keines hat.

previousSibling

Ähnlich zu nextSibling ist dieses Attribut mit dem Knoten unmittelbar vor diesem Knoten oder None assoziiert.

appendChild(newChild)

Diese Methode fügt den Knoten newChild am Ende der in diesem Knoten enthaltenen NodeList an. Wenn der Knoten bereits existiert, wird er entfernt und dann wieder angefügt.

cloneNode(deep)

Diese Methode gibt ein Duplikat des Knotens zurück. Der Duplikatknoten wird nicht angehängt und hat keinen Elternknoten. Falls der Parameter deep wahr ist, gibt er an, daß der gesamte Baum unter diesem Knoten bei der Operation mitkopiert werden soll.

hasChildNodes( )

Diese Methode gibt true oder false zurück, je nachdem, ob der Knoten Kinder hat.

insertBefore(newChild, refChild)

Fügt den neuen Knoten unmittelbar vor refChild in der NodeList des Knotens ein. Wenn newChild in der Liste bereits existiert, wird es zuerst entfernt und dann wieder eingefügt.

supports(feature, level)

Diese Methode gibt true oder false zurück, je nachdem, ob die DOM-Implementierung ein bestimmtes Feature für diesen speziellen Knoten unterstützt.

normalize( )

Diese Methode steigt bis zur vollen Tiefe unterhalb dieses Knotens ab und garantiert, daß nur Markup-Strukturen wie Elemente, Kommentare und Verarbeitungsanweisungen zwischen den Text-Knoten liegen. Dadurch werden leere Knoten (oder Leerraum) zwischen Textbrocken in Ihren Auszeichnungen eliminiert.

removeChild(childNode)

Gibt den childNode zurück und entfernt ihn aus der NodeList des Knotens.

replaceChild(newChild, oldChild)

Ersetzt oldChild durch newChild und gibt oldChild zurück. Wenn newChild bereits ein Kind eines anderen Elements ist, wird es entfernt.


NodeList

Die NodeList-Schnittstelle ist eine generische Liste mit den Kindknoten des Knotens, unabhängig vom spezifischen Untertyp. Mit anderen Worten: Text-Knoten kommen in der Liste neben Element- und ProcessingInstruction-Knoten vor. Diese Schnittstelle ist nicht mit Hilfe der Node-Schnittstelle definiert.

length

Dieses nur-lesbare Attribut gibt die Anzahl der Knoten in der Liste an. Wenn die Länge 10 beträgt, gehen die tatsächlichen Indizes von 0 bis 9.

item(index)

Diese Methode gibt den Knoten mit dem entsprechenden Index in NodeList zurück. Wenn der Index außerhalb des erlaubten Bereichs liegt, wird None zurückgegeben.


NamedNodeMap

Diese Schnittstelle ähnelt der von NodeList, ist aber so entworfen, den Zugriff auf Knoten der Liste per Namen zu gestatten. Es gibt keine Garantie dafür, daß die Knoten in irgendeiner bestimmten Reihenfolge in dieser Abbildung vorkommen. Diese Schnittstelle ist nicht mit Hilfe der Node-Schnittstelle definiert.

length

Die Anzahl der Knoten in der Abbildung. Wie bei NodeList gilt: Einer Länge von 10 entsprechen Indizes von 0 bis 9.

getNamedItem(name)

Diese Methode sucht den mit dem Parameter name angegebenen Knoten. Wenn er gefunden wird, wird er zurückgegeben, sonst None.

getNamedItemNS(namespaceURI, localName)

Diese Methode gibt den Knoten mit den angegebenen Parametern localName und namespaceURI zurück.

item(index)

Gibt den Knoten an Position index oder None zurück, falls index außerhalb des erlaubten Wertebereichs liegt.

removeNamedItem(name)

Entfernt den mit name angegebenen Knoten. Wenn dies ein Attr-Knoten ist (XML-Attribut) und er einen Vorgabewert hat (wie in der DTD definiert), wird der Vorgabewert ersetzt und behält die gleiche Namensraum-URI, den lokalen Namen und das Präfix. Der entfernte Knoten wird zurückgegeben.

removeNamedItemNS(namespaceURI, localName)

Identisch mit removeNamedItem, außer daß die Suchkriterien sowohl namespaceURI als auch localName enthalten, um einen Knoten zu finden. Der entfernte Knoten wird zurückgegeben.

setNamedItem(arg)

Der erste Parameter arg sollte ein Objekt sein. Wenn ein Knoten mit dem gleichen Namen bereits existiert, wird er durch den neuen ersetzt, und der alte wird zurückgegeben. Der Wert None wird zurückgegeben, wenn Knoten hinzugefügt, aber nicht ersetzt werden.

setNamedItemNS(arg)

Diese Methode ist im wesentlichen identisch mit setNamedItem, außer daß ein qualifizierender Namensraum-URI und ein lokaler Name (beide aus dem Parameter arg vom Typ Node) hinzukommen.


CharacterData

Erbt von Node

Die CharacterData-Schnittstelle ist ein Untertyp von Node, der zusätzliche Methoden zum Arbeiten mit Textdaten enthält. Diese Schnittstelle entspricht nicht einem konkreten Knotentyp, sondern wird als Basis für die Definition der Schnittstellen Text und Comment benutzt.

data

Dieser String stellt die im Knoten enthaltenen Zeichendaten dar.

length

Die Anzahl von Zeichen, die über das Attribut data und die Methode substringData verfügbar sind. Wenn das Objekt leer ist, kann der Wert 0 sein.

appendData(arg)

Diese Methode fügt den String arg an das Ende der Zeichendaten an.

deleteData(offset, count)

Entfernt eine gegebene Anzahl von Zeichen aus den Zeichendaten, beginnend bei offset und bis offset + count. Wenn der angegebene Bereich über die Länge des Strings hinausreicht, wird der Inhalt von offset bis zum Ende des Strings gelöscht.

insertData(offest, arg)

Diese Methode erlaubt das Einfügen von Zeichendaten in den Knoten, beginnend an der Position offset.

replaceData(offset, count, arg)

Diese Methode ersetzt die Daten ab offset durch die in arg angegebenen Daten bis zur Position offset + count. Wenn die Länge der Daten überschritten wird, wird der zusätzliche Ersetzungstext an die Daten angefügt.

substringData(offset, count)

Extrahiert einen Teil der Daten des CharacterData-Knotens. Falls offset + count die Länge überschreiten, werden alle Zeichen bis zum Ende des Knotens zurückgegeben.


Attr

Erbt von Node

Die Attr-Schnittstelle ist die Node-Schnittstelle für Attribute eines Elements. DOM betrachtet Attr nicht als Teil des Baumes, daher sind die Attribute parentNode, previousSibling und nextSibling für Attr-Objekte alle gleich None. Attribute sollten als Eigenschaften von Elementen betrachtet werden. Attr-Knoten können keine direkten Kinder eines DocumentFragment sein, können jedoch in einem Element eines Dokumentfragments enthalten sein.

Der Wert eines Knotens ist sein zugewiesener Wert in der eigentlichen Auszeichnung. Sonst wird ein Vorgabewert benutzt, wenn dieser in der DTD definiert ist. Kindknoten eines Attr-Objekts können Text-Knoten sein oder den Typ EntityReference haben.

name

Der Attributname.

ownerElement

Diese Eigenschaft stellt den Element-Knoten dar, zu dem das Attribut gehört.

specified

Diese Boolesche Eigenschaft teilt Ihnen mit, ob der Wert explizit im Markup angegeben wurde (true) oder ob es der Vorgabewert ist, der von der DTD zugewiesen wird. Der Wert ist auch dann true, wenn der Wert bearbeitet oder explizit zugewiesen wurde, aber noch immer den Vorgabewert enthält. Falls das Attribut ownerElement gleich None ist (d. h. wenn der Knoten gerade mit keinem Element assoziiert ist), ist specified ebenfalls gleich true.

value

Dies ist der eigentliche Wert des Schlüssel/Wert-Paares, das das Attr in irgendeinem Element ausmacht.


Element

Erbt von Node

Die Element-Schnittstelle stellt ein Markup-Element dar. Zusätzlich zu ihren von Node geerbten Methoden unterstützt sie Zugriffsmethoden, um an die enthaltenen Attribute zu gelangen.

tagName

Der Name des Elementtyps. Für <stag drums="dale"> wird ein String mit dem Wert stag zurückgegeben.

getAttribute(name)

Diese Methode gibt den Wert eines Attributs zurück. Sie vermeidet es, das Attr-Objekt direkt zu holen und dessen Zugriffsmethoden zu benutzen. In einigen Fällen kann es besser sein, den Attr-Knoten direkt zu benutzen, aber die bequemen Methoden des Elementknotens reichen für gewöhnlich aus.

getAttributeNS(namespaceURI, localName)

Ähnlich zu getAttribute, gibt das Attribut jedoch basierend auf dem Namensraum und Namen zurück.

getAttributeNode(name)

Diese Methode gibt das echte Attr-Objekt statt seines Zeichenwertes zurück, wie es bei getAttribute der Fall ist. Liefert None, wenn kein solches Attribut gefunden wird.

getAttributeNodeNS(namespaceURI, localName)

Gibt einen Attr-Knoten zurück, der mit dem angegebenen Namen und dem Namensraum-URI übereinstimmt. Liefert None, wenn kein solches Attribut gefunden wird.

getElementsByTagName(tagName)

Diese Methode liefert eine NodeList der abgehenden Element-Knoten, die den gleichen Elementtyp-Namen haben. Der spezielle Wert * paßt auf alle Tags.

getElementsByTagNameNS(namespaceURI, localName)

Gibt eine NodeList mit allen abgehenden Elementen zurück, die mit dem angegebenen Namen und dem Namensraum-URI übereinstimmen. Der Wert * in einem der beiden Argumente paßt auf alle Namensraum-URIs bzw. alle lokalen Namen; wenn beide Male * benutzt wird, passen darauf alle Elemente unterhalb dieses Knotens.

hasAttribute(name)

Diese Methode gibt true zurück, wenn ein Attribut namens name im Element vorhanden ist oder einen Vorgabewert in der DTD hat.

hasAttributeNS(namespaceURI, localName)

Diese Methode gibt true zurück, wenn ein Attribut mit einem bestimmten Namen und Namensraum im Element existiert oder dafür ein Vorgabewert in der DTD existiert.

removeAttribute(name)

Entfernt ein Attribut mit dem im Parameter name angegebenen Namen. Falls das entfernte Attribut einen Vorgabewert in der DTD hat, wird sofort nach Entfernen des Attributs dieser Wert benutzt.

removeAttributeNS(namespaceURI, localName)

Entfernt ein zum angegebenen lokalen Namen und Namensraum passendes Attribut. Falls das entfernte Attribut einen Vorgabewert in der DTD hat, wird sofort nach Entfernen des Attributs dieser Wert benutzt.

removeAttributeNode(node)

Diese Methode entfernt den angegebenen Attributknoten node. Sie erwartet ein komplettes Attr-Objekt als Parameter statt eines String-Namens, wie bei den removeAttribute-Methoden. Der entfernte Knoten wird zurückgegeben.

setAttribute(name, value)

Diese Methode fügt ein neues Attribut an das Element mit dem angegebenen name/value-Paar an. Sie ersetzt alle Elemente, die schon mit diesem Namen existieren. Der angegebene Text wird als String-Literal eingesetzt, d. h., es werden keine EntityReference- oder andere komplexe Attr-Strukturen erzeugt (siehe dafür setAttributeNode).

setAttributeNS(namesapceURI, qualifiedName, value)

Diese Methode funktioniert im wesentlichen genauso wie setAttribute, außer daß ein Namensraum-URI und ein Präfix mit dem Attribut assoziiert werden.

setAttributeNode(node)

Diese Methode fügt dem Element ein neues Attribut hinzu. Wenn der angegebene Parameter node (vom Typ Attr) einen Text-Knoten oder EntityReference-Kinder enthält, werden sie ebenfalls hinzugefügt. Wenn ein Attribut mit gleichem nodeName im Element bereits existiert, wird es ersetzt. Gibt None zurück, außer es wird ein Attribut ersetzt, wobei dann das alte Attribut zurückgegeben wird.

setAttributeNodeNS(node)

Identisch mit setAttributeNode. Wenn ein Knoten mit dem gleichen Namensraum-URI und demselben lokalen Namen bereits existiert, wird er ersetzt und zurückgegeben. Sonst wird das neue Attribut hinzugefügt, und es wird None zurückgegeben.


Text

Erbt von CharacterData

Die Text-Schnittstelle stellt Textdaten innerhalb eines Element oder Attribute dar. Textknoten werden für alle Textstücke außerhalb von regulären Auszeichnungen in einem XML-Dokument erzeugt. Die Methode normalize vereint für jedes Textstück benachbarte Text-Knoten in einem einzigen Knoten. Die Methoden der Schnittstelle CharacterData können auf diesem Objekt benutzt werden, um auf die Textdaten zuzugreifen und diese zu bearbeiten.

splitText(offset)

Diese Methode spaltet den Knoten am Punkt offset in zwei Knoten. Alle Knotendaten vor offset bleiben im Knoten erhalten. Die Daten danach werden Teil eines neuen, benachbarten Text-Knotens, der zurückgegeben wird.


Comment

Erbt von CharacterData

Der Comment-Knoten enthält die Textdaten einer Comment-Struktur: <!-- Achtung, ein Kommentar -->. Mit den Methoden von CharacterData kann der Inhalt des Kommentars bearbeitet werden.


CDATASection

Erbt von Text

Diese Schnittstelle ermöglicht Ihnen die Bearbeitung von CDATASection-Knoten. Im Gegensatz zu Text-Knoten verschmilzt die normalize-Methode keine benachbarten CDATASection-Knoten. CDATASection-Knoten enthalten spezielle Zeichen, die vom Parser mit XML verwechselt werden können.


DocumentType

Erbt von Node

Diese Schnittstelle stellt die DTD Ihres XML-Dokuments dar, oder sie ist None, wenn keine existiert. Ihre Attribute sind laut DOM-Spezifikation nur lesbar, weil das W3C sich darüber im unklaren ist, wie die verschiedenen Anstrengungen zu XML Schema die Verwendung von DTDs beeinflussen werden.

entities

Dieses Attribut gibt eine neue NamedNodeMap mit externen wie auch internen in der DTD deklarierten Entities zurück. Parameter-Entities gehören nicht dazu, und Entities, die mehr als einmal deklariert werden, werden nur durch die erste Deklaration dargestellt. Die Einträge von NamedNodeMap implementieren die Entity-Schnittstelle. Falls die Information vom zugrundeliegenden Parser nicht zur Verfügung gestellt wird oder falls keine Entities definiert werden, kann dies None sein.

internalSubset

Dieses Attribut bietet Zugriff auf die interne DTD-Teilmenge in Form eines Strings. Es ist gleich None, wenn keine interne Teilmenge existiert. Der Wert dieses Strings enthält nicht die eckigen Klammern, die die interne Teilmenge umgeben.

name

Der Name des Wurzelelements, wie in der DTD angegeben.

notations

Dieses Attribut stellt eine NamedNodeMap der Notationen in der DTD dar. Jeder Eintrag in dieser Abbildung implementiert die Notation-Schnittstelle. Mehrfach deklarierte Notationen werden nur durch die erste Deklaration dargestellt. Falls die Information vom zugrundeliegenden Parser nicht zur Verfügung gestellt wird oder falls keine Notationen definiert werden, kann dies None sein.

publicId

Dies ist der öffentliche Bezeichner der externen Teilmenge. Gibt es keinen solchen, ist dies gleich None.

systemId

Dies ist der System-Bezeichner der externen Teilmenge. Gibt es keinen solchen, ist dies gleich None.


Notation

Erbt von Node

Diese Schnittstelle stellt eine in der DTD deklarierte Notation dar. Das aus Node geerbte Attribut nodeName wird als deklarierter Name der Notation benutzt.

publicId

Der öffentliche Bezeichner der Notation oder None, falls nicht vorhanden.

systemId

Der System-Bezeichner der Notation oder None, falls nicht vorhanden.


Entity

Erbt von Node

Diese Schnittstelle stellt sowohl geparste als auch ungeparste Entities dar. Ein Parser darf Entities expandieren, bevor das Strukturmodell an DOM weitergegeben wird. In diesem Fall gibt es keine EntityReference-Knoten im Dokumentbaum.

Externe Entity-Werte sind in nicht-validierenden Parsern eventuell nicht verfügbar, da nicht-validierende Parser externe Entities nicht verarbeiten müssen.

Entity-Knoten können nicht editiert werden, sondern sind nur lesbar.

notationName

Dieser Wert ist None bei geparsten Entities bzw. der Name der Notation bei ungeparsten Entities.

puclicId

Der öffentliche Bezeichner des Entity oder None, falls nicht vorhanden.

systemId

Der System-Bezeichner des Entity oder None, falls nicht vorhanden.


EntityReference

Erbt von Node

Diese leere Schnittstelle stellt Entity-Referenzen in einem XML-Dokument dar oder solche, die Sie einfügen möchten. Zeichenreferenzen wie auch Referenzen auf vordefinierte Entities dürfen vom Parser beim Erzeugen des DOM-Baums expandiert werden. In diesem Fall werden keine EntityReference-Objekte vom Parser erzeugt.


ProcessingInstruction

Erbt von Node

Diese einfache Schnittstelle stellt eine Verarbeitungsanweisung dar und hat zwei Stringattribute, die für data und target der ProcessingInstruction stehen.

data

Der Inhalt der Verarbeitungsanweisung.

target

Das Ziel der Verarbeitungsanweisung.


4DOM-Erweiterungen

Das 4DOM-Paket, das PyXML begleitet, enthält einige proprietäre Erweiterungen, die es vielleicht einmal schaffen werden, ins Angebot des W3C aufgenommen zu werden. Diese Klassen enthalten Funktionalität zum Lesen von XML-Strömen und zum »Pretty Printing« sowie bequeme Trennungsfunktionen und einiges andere mehr. Sie sind in der Datei PyXML/doc/4DOM/extensions.html im PyXML-Paket dokumentiert und in anderen DOM-Implementierungen nicht verfügbar.

  

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