| Warnung |
Diese Erweiterung ist
EXPERIMENTELL. Das Verhalten dieser Erweiterung,
einschließlich der Funktionsnamen, und alles Andere was hier dokumentiert
ist, kann sich in zukünftigen PHP-Versionen ohne Ankündigung ändern. Seien
Sie gewarnt und verwenden Sie diese Erweiterung auf eigenes Risiko.
|
Die DOM XML Erweiterung wurde in PHP 4.3.0 überholt, um dem DOM Standard
besser zu entsprechen. Die Erweiterung enthält noch immer viele alte
Funktionen, die aber nicht mehr benutzt werden sollten. Im Besonderen
sollten nicht objektorientierte Funktionen vermieden werden.
Diese Erweiterung erlaubt es, an einem XML Dokument mit dem DOM API zu
arbeiten. Sie bietet auch die Funktion domxml_xmltree(),
um das gesamte XML Dokument in einen Baum von PHP Objekten zu verwandeln.
Zur Zeit sollten Sie diesen Baum nur zum Lesen verwenden — Sie können
ihn zwar modifizieren, aber nachdem DomDocument_dump_mem()
nicht darauf angewendet werden kann, macht dies keinen Sinn. Sollten Sie eine
XML Datei lesen und eine modifizierte Version schreiben wollen, benutzen Sie
die Funktionen DomDocument_create_element(),
DomDocument_create_text_node(),
set_attribute(), etc. und schließlich
DomDocument_dump_mem().
Diese Erweiterung macht von der GNOME XML
library Gebrauch. Laden Sie diese bitte herunter und installieren
Sie diese Bibliothek. Sie werden zumindest libxml-2.4.14 benötigen. Um
DOM XSLT Features zu benutzen, können Sie die libxslt library und EXSLT Erweiterungen von
http://www.exslt.org/ verwenden. Laden Sie diese
Bibliotheken herunter und installieren Sie diese, wenn Sie den Einsatz
von (erweiterten) XSLT Features planen. Sie werden zumindest
libxslt-1.0.18 benötigen.
Diese PECL Erweiterung
ist nicht Teil von PHP.
Zusätzliche Informationen, wie neue Releases, Downloads
Quelldateien, Maintainerinformation und ein CHANGELOG finden Sie hier:
http://pecl.php.net/package/domxml.
Für PHP 4 finden Sie die Quellen dieser
PECL Erweiterung im ext/ Verzeichnis
innerhalb der PHP Quellen oder unter dem PECL Link wie
oben angegeben.
Diese Erweiterung steht nur zur Verfügung, wenn Sie PHP mit der Option
--with-dom[=DIR] konfiguriert haben.
Fü¼r DOM XSLT Unterstützung können Sie die Option
--with-dom-xslt[=DIR] verwenden. DIR ist
das Installationsverzeichnis von libxslt. Für DOM EXSLT Unterstützung können
Sie die Option --with-dom-exslt[=DIR]
verwenden, wobei DIR das libexslt Installationsverzeichnis ist.
Falls Sie Windows benutzen, müssen Sie php_domxml.dll
in der php.ini aktivieren um diese Funktionen benutzen zu können.
Für PHP 4 finden Sie die DLL im
extensions/ Verzeichnis der PHP Windows Binärdistribution.
Sie können die DLL für
diese PECL Erweiterung entweder von
PHP Downloads oder von
http://snaps.php.net/ herunterladen.
Weiterhin gibt es eine zusätzliche DLL, bei der Sie sicherstellen müssen,
dass Sie in Ihrem Suchpfad gefunden wird. Für PHP 4 finden Sie diese DLL
im dlls/Verzeichnis. Für
PHP <= 4.2.0 benötigen Sie libxml2.dll, für
PHP >= 4.3.0 iconv.dll. Seit PHP 5.0.0 ist iconv in
der Binärdistribution für Windows einkompiliert, deshalb benötigen Sie keine
zusätzliche DLL.
Es gibt ziemlich viele Funktionen, die nicht in den DOM Standard passen und
nicht mehr länger benutzt werden sollten. Diese Funktionen sind in der
folgenden Tabelle aufgelistet. Die Funktion
DomNode_append_child() hat ihr Verhalten geändert, indem
sie nun ein 'Kind' statt einem 'Geschwister' hinzufügt. Wenn Ihre Applikation
deshalb nicht mehr funktioniert, verwenden Sie die nicht DOM standardkonforme
Funktion DomNode_append_sibling().
Tabelle 1. Veraltete Funktionen und deren Ersatz
Folgende Konstanten werden von dieser
Erweiterung definiert und stehen nur zur Verfügung, wenn die Erweiterung entweder
statisch in PHP kompiliert oder dynamisch zur Laufzeit geladen wurde.
Das API dieses Moduls entspricht dem DOM Level 2 Standard so weit wie
möglich. Folglich ist das API vollständig objektorientiert. Es wäre
sinnvoll, den DOM Standard verfügbar zu haben, wenn Sie dieses Modul
benutzen. Obwohl das API objektorientiert ist gibt es viele Funktionen,
die in einer nicht objektorientierten Art aufgerufen werden können, indem
das zu bearbeitende Objekt als das erste Argument übergeben wird. Diese
Funktionen dienen hauptsächlich der Kompatibilität zu älteren Versionen
dieser Erweiterung und sollten deshalb beim Erstellen neuer Skripte nicht
mehr verwendet werden.
Dieses API unterscheidet sich von dem offiziellen DOM API auf zwei Arten.
Erstens sind alle Klassenattribute als Funktionen mit dem selben Namen
implementiert. Zweitens folgen die Funktionsnamen der PHP Namenskonvention.
Das heißt, dass eine DOM Funktion lastChild() als last_child() geschrieben
wird.
Dieses Modul definiert eine Anzahl Klassen, die — inklusive ihrer
Methoden — in den folgenden Tabellen aufgelistet sind. Klassen mit
einem Äquivalent im DOM Standard werden DOMxxx genannt.
Tabelle 3. Liste der Klassen
| Klassenname | Basisklassen |
|---|
| DomAttribute | DomNode |
| DomCData | DomNode |
| DomComment | DomCData : DomNode |
| DomDocument | DomNode |
| DomDocumentType | DomNode |
| DomElement | DomNode |
| DomEntity | DomNode |
| DomEntityReference | DomNode |
| DomProcessingInstruction | DomNode |
| DomText | DomCData : DomNode |
| Parser | Derzeit noch immer DomParser genannt |
| XPathContext | |
Tabelle 4. DomDocument Klasse (DomDocument : DomNode)
Tabelle 5. DomElement Klasse (DomElement : DomNode)
Tabelle 6. DomNode Klasse
Tabelle 7. DomAttribute Klasse (DomAttribute : DomNode)
Tabelle 8. DomProcessingInstruction Klasse (DomProcessingInstruction : DomNode)
Tabelle 9. Parser Klasse
| Methodenname | Funktionsname | Anmerkung |
|---|
| add_chunk | Parser_add_chunk() | |
| end | Parser_end() | |
Tabelle 10. XPathContext Klasse
| Methodenname | Funktionsname | Anmerkung |
|---|
| eval | XPathContext_eval() | |
| eval_expression | XPathContext_eval_expression() | |
| register_ns | XPathContext_register_ns() | |
Tabelle 11. DomDocumentType Klasse (DomDocumentType : DomNode)
Die Klasse DomDtd ist von DomNode, und DomComment von DomCData abgeleitet
Viele Beispiele in dieser Referenz erfordern einen XML String. Anstatt
diesen String laufend zu wiederholen, wird er in eine Datei geschrieben,
die von jedem Beispiel eingebunden wird. Diese einzubindende Datei wird
in dem folgenden Beispielteil gezeigt. Alternativ dazu können Sie ein XML
Dokument erstellen, und dieses mit DomDocument_open_file()
einlesen.
Beispiel 1. Einzubindende Datei example.inc mit XML String
<?php $xmlstr = "<?xml version='1.0' standalone='yes'?> <!DOCTYPE chapter SYSTEM '/share/sgml/Norman_Walsh/db3xml10/db3xml10.dtd' [ <!ENTITY sp \"spanish\"> ]> <!-- lsfj --> <chapter language='en'><title language='en'>Title</title> <para language='ge'> &sp; <!-- comment --> <informaltable ID='findme' language='&sp;'> <tgroup cols='3'> <tbody> <row><entry>a1</entry><entry morerows='1'>b1</entry><entry>c1</entry></row> <row><entry>a2</entry><entry>c2</entry></row> <row><entry>a3</entry><entry>b3</entry><entry>c3</entry></row> </tbody> </tgroup> </informaltable> </para> </chapter>"; ?>
|
|