L'extension DOM XML a été reprise en main en PHP 4.3.0 pour être
mieux compatible avec les standards DOM. L'extension contient encore
de vieilles fonctions, mais elles ne sont plus utilisées. En particulier,
les fonctions qui ne sont pas orientées objets ne doivent pas être
utilisées.
Cette extension vous permet de générer des documents XML avec
les API DOM. Elle fournit aussi une fonction domxml_xmltree()
qui transforme un fichier XML en tableau PHP. Actuellement, ce
tableau est accessible uniquement en lecture. Cela ne siginifie pas
que vous ne pouvez pas le modifier, mais cela n'aurait aucun sens
car DomDocument_dump_mem() ne pourra pas prendre ces
modifications en considération. Par conséquent, si vous voulez
lire un fichier XML et écrire sa version modifiée, utilisez les
fonctions DomDocument_create_text_node(),
set_attribute(), etc.
et finalement DomDocument_dump_mem().
Note :
Cette extension a été déplacée dans le module
PECL et ne sera plus intégrée dans PHP Ã partir de PHP 5.0.0.
Note :
Cette extension n'est plus considérée comme expérimental. Néanmoins, elle ne
sera jamais distribuée avec PHP 5 mais uniquement avec PHP 4.
Si vous avez besoin du support DOM XML avec PHP 5, vous pouvez utiliser l'extension
DOM. domxml
n'est pas compatible avec l'extension DOM.
Cette extension utilise la bibliothèque
GNOME XML. Téléchargez là ,
puis installez là . Vous aurez besoin de la version libxml-2.4.14
ou plus récent. Pour utiliser les fonctionnalités DOM XSLT
vous pouvez utiliser la bibliothèque
libxslt et les progrès
des EXSLT (http://www.exslt.org/).
Téléchargez et installez ces bibliothèques si vous envisagez d'exploiter
ces fonctionnalités. Vous aurez besoin d'au moins libxslt-1.0.18.
Cette extension PECL
n'est pas intégrée à PHP.
Des informations sur l'installation de ces extensions PECL
peuvent être trouvées dans le chapitre du manuel intitulé Installation
des extensions PECL. D'autres informations comme les notes sur les nouvelles
versions, les téléchargements, les sources des fichiers, les informations concernant les mainteneurs
ainsi qu'un CHANGELOG, peuvent être trouvées ici :
http://pecl.php.net/package/domxml.
En PHP 4, les sources de cette extension PECL
peuvent être trouvées dans le dossier ext/ avec les sources de PHP
ou sur le lien PECL ci-dessous.
Cette extension est uniquement disponible si PHP a été configuré lors de
la compilation avec l'option --with-dom=[DIR].
Ajoutez --with-dom-xslt[=DIR] pour inclure
le support DOM XSLT. DIR est le dossier d'installatoin de libxslt. Ajoutez
--with-dom-exslt[=DIR] pour inclure le
support DOM EXSLT. DIR est le dossier d'installation de libxsl.
Les utilisateurs de Windows doivent activer la bibliothèque
php_domxml.dll dans le php.ini
pour pouvoir utiliser ces fonctions.
En PHP 4, cette bibliothèque DLL
se trouve dans le dossier extensions/ avec les binaires PHP
pour Windows téléchargées.
Vous pouvez télécharger ces bibliothèques
DLL pour ces extensions PECL
depuis la page de téléchargement de PHP
sous sur la page http://snaps.php.net/.
En outre, il y a une DLL additionnelle qui doit être disponible à votre PATH
système pour faire fonctionner cette extension. En PHP 4, elle se trouve dans le dossier
dlls/. Son nom :
Pour PHP <= 4.2.0, c'est libxml2.dll.
Pour PHP >= 4.3.0, c'est iconv.dll.
Et depuis PHP 5.0.0, iconv est compilé dans les binaires PHP pour Windows par défaut,
donc, aucune bibliothèque supplémentaire n'est nécessaire.
Il y a un groupe de fonctions qui ne sont pas compatibles avec les
standards DOM et qui ne devraient plus être utilisées. Ces fonctions sont
listées dans la table ci-dessous. La fonction
DomNode_append_child() a vu son comportement changer.
Désormais, elle ajoute un fils et non pas un frère. Si cela
casse votre application, utilisez plutôt la fonction
DomNode_append_sibling(), qui ne fait pas partie
des standards.
Tableau 1. Fonctions abandonnées et leur remplacement
Ces constantes sont définies par cette
extension, et ne sont disponibles que si cette extension a été compilée avec
PHP, ou bien chargée au moment de l'exécution.
Tableau 2. Constantes XML
| Constant | Value | Description |
|---|
|
XML_ELEMENT_NODE
(entier)
| 1 | Node est un élément |
|
XML_ATTRIBUTE_NODE
(entier)
| 2 | Node est un attribut |
|
XML_TEXT_NODE
(entier)
| 3 | Node est un texte |
|
XML_CDATA_SECTION_NODE
(entier)
| 4 | |
|
XML_ENTITY_REF_NODE
(entier)
| 5 | |
|
XML_ENTITY_NODE
(entier)
| 6 | Node est une entité comme  |
|
XML_PI_NODE
(entier)
| 7 | Node est une instruction de script |
|
XML_COMMENT_NODE
(entier)
| 8 | Node est un commentaire |
|
XML_DOCUMENT_NODE
(entier)
| 9 | Node est un document |
|
XML_DOCUMENT_TYPE_NODE
(entier)
| 10 | |
|
XML_DOCUMENT_FRAG_NODE
(entier)
| 11 | |
|
XML_NOTATION_NODE
(entier)
| 12 | |
|
XML_GLOBAL_NAMESPACE
(entier)
| 1 | |
|
XML_LOCAL_NAMESPACE
(entier)
| 2 | |
|
XML_HTML_DOCUMENT_NODE
(entier)
| | |
|
XML_DTD_NODE
(entier)
| | |
|
XML_ELEMENT_DECL_NODE
(entier)
| | |
|
XML_ATTRIBUTE_DECL_NODE
(entier)
| | |
|
XML_ENTITY_DECL_NODE
(entier)
| | |
|
XML_NAMESPACE_DECL_NODE
(entier)
| | |
|
XML_ATTRIBUTE_CDATA
(entier)
| | |
|
XML_ATTRIBUTE_ID
(entier)
| | |
|
XML_ATTRIBUTE_IDREF
(entier)
| | |
|
XML_ATTRIBUTE_IDREFS
(entier)
| | |
|
XML_ATTRIBUTE_ENTITY
(entier)
| | |
|
XML_ATTRIBUTE_NMTOKEN
(entier)
| | |
|
XML_ATTRIBUTE_NMTOKENS
(entier)
| | |
|
XML_ATTRIBUTE_ENUMERATION
(entier)
| | |
|
XML_ATTRIBUTE_NOTATION
(entier)
| | |
|
XPATH_UNDEFINED
(entier)
| | |
|
XPATH_NODESET
(entier)
| | |
|
XPATH_BOOLEAN
(entier)
| | |
|
XPATH_NUMBER
(entier)
| | |
|
XPATH_STRING
(entier)
| | |
|
XPATH_POINT
(entier)
| | |
|
XPATH_RANGE
(entier)
| | |
|
XPATH_LOCATIONSET
(entier)
| | |
|
XPATH_USERS
(entier)
| | |
|
XPATH_NUMBER
(entier)
| | |
L'API de ce module suit le standard DOM niveau 2 aussi fidèlement
que possible. Par conséquent, l'API est totalement orientée objet.
C'est une bonne idée d'avoir les standards DOM disponibles sous la
main, lorsque vous utilisez ce module. Bien que cette API soit orientée
objet, il existe de nombreuses fonctions qui peuvent être appelées
d'une manière non objet, en passant l'objet à utiliser comme premier
argument de la fonction. Cest fonctions sont essentiellement conservées
pour assurer la compatibilité avec les extensions plus anciennes, et ne
doivent pas être utilisées.
Cette API diffère de l'API officielle DOM en deux points. Le premier est
que tous les attributs des classes sont implémentés comme des fonctions
du même nom. Le second est que les noms des fonctions suivent
les standards PHP. Cela signifie que la fonction DOM lastChild()
s'écrit en PHP last_child().
Ce module définit un grand nombre de classe, qui sont listés en
incluant leur méthodes dans les tables suivantes. Les classes ayant
un équivalent DOM sont nommées DOMxxx.
Tableau 3. Liste de classes
| Nom de la classe | Classe parente |
|---|
| DomAttribute | DomNode |
| DomCData | DomNode |
| DomComment | DomCData : DomNode |
| DomDocument | DomNode |
| DomDocumentType | DomNode |
| DomElement | DomNode |
| DomEntity | DomNode |
| DomEntityReference | DomNode |
| DomProcessingInstruction | DomNode |
| DomText | DomCData : DomNode |
| Parser | Actuellement, toujours appelée DomParser |
| XPathContext | |
Tableau 4. DomDocument class (DomDocument : DomNode)
Tableau 5. Classe DomElement (DomElement : DomNode)
Tableau 6. Classe DomNode
Tableau 7. Classe DomAttribute (DomAttribute : DomNode)
Tableau 8. Classe DomProcessingInstruction (DomProcessingInstruction : DomNode)
Tableau 9. Classe Parser
| Nom de la méthode | Nom de la fonction | Remarques |
|---|
| add_chunk | Parser_add_chunk() | |
| end | Parser_end() | |
Tableau 10. Classe XPathContext
| Nom de la méthode | Nom de la fonction | Remarques |
|---|
| eval | XPathContext_eval() | |
| eval_expression | XPathContext_eval_expression() | |
| register_ns | XPathContext_register_ns() | |
Tableau 11. Classe DomDocumentType (DomDocumentType : DomNode)
Les classes DomDtd sont dérivées de DomNode. DomComment est dérivée de DomCData.
De nombreux exemples de cette partie requièrent une chaîne XML.
Au lieu de répéter la chaîne dans tous les exemples, elle sera
mise dans un fichier, qui sera inclus dans tous les exemples.
Ce fichier inclus sera utilisé dans les exemples suivants dans
cette section. Alternativement, vous pouvez créer un document XML et le
lire avec la fonction DomDocument_open_file().
Exemple 1. Fichier d'inclusion example.inc pour la chaîne XML d'exemple
<?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>"; ?>
|
|