PHP5. Manipulation de XML avec DOM. A. Belaïd

Documents pareils
Document Object Model (DOM)

DOM - Document Object Model

Master d Informatique Corrigé du partiel novembre 2010

L'API DOM : Document Object Model

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

BASE DE DONNÉES XML NATIVE

< _155_0>

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

SYSTÈMES D INFORMATIONS

Programmation Web. Madalina Croitoru IUT Montpellier

CREATION WEB DYNAMIQUE

Comment développer et intégrer un module à PhpMyLab?

Faculté Polytechnique de Mons. Le processus d Extraction, Transformation et Load (ETL) dans des entrepôts de données XML

FTP : File TRansfer Protocol => permets d envoyer des gros fichiers sur un serveur (ou de télécharger depuis le serveur)

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition

RAPPORT AUDIT SEO. Élaboré à l'attention de : Monsieur Greber Élaboré par : Cédric Peinado

BASE DE DONNÉES XML NATIVE

BD et XML : Exercices

Production de documents avec XSLT. Production de documents p.1/??

Mysql avec EasyPhp. 1 er mars 2006

Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé)

Formation HTML / CSS. ar dionoea

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

Module : programmation site Web dynamique Naviguer entre les pages via site map

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

PHP 5. La base de données MySql. A. Belaïd 1

Outils logiciels pour l'ingénierie documentaire

DMP1 DSFT des Interfaces DMP des LPS Annexe : complément de spécification sur l impression des documents à remettre au patient

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

ContactForm et ContactFormLight - Gestionnaires de formulaire pour Prestashop Edité par ARETMIC S.A.

Formation en Logiciels Libres. Fiche d inscription

Devenez un véritable développeur web en 3 mois!

PHP 5.4 Développez un site web dynamique et interactif

Dans l'article précédent, vous avez appris

La base de données XML exist. A. Belaïd

STAGE IREM 0- Premiers pas en Python

L exclusion mutuelle distribuée

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN

TP JAVASCRIPT OMI4 TP5 SRC

Adobe Technical Communication Suite 5

< Atelier 1 /> Démarrer une application web

Formation : WEbMaster

Flex. Lire les données de manière contrôlée. Programmation Flex 4 Aurélien VANNIEUWENHUYZE

Démarrer avec Ajax et le php: exemple d'application

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Stockage du fichier dans une table mysql:

Spécifications techniques et fonctionnelles du multi-années pour les noms de domaine en.fr

PROSOP : un système de gestion de bases de données prosopographiques

CREATION d UN SITE WEB (INTRODUCTION)

Programme scientifique Majeure ARCHITECTURE DES SYSTEMES D INFORMATION. Mentions Ingénierie des Systèmes d Information Business Intelligence

Dans nos locaux au 98 Route de Sauve NÎMES. Un ordinateur PC par stagiaire, scanner, imprimante/copieur laser couleur

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

Les arbres binaires de recherche

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Programmation Internet Cours 4

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

FORMATION / CREATION DE SITE WEB / 4 JOURNEES Sessions Octobre 2006

Formulaire pour envoyer un mail

WordPress Référencement naturel (SEO) Optimiser. son référencement. Daniel Roch. Préface d Olivier Andrieu

SII Stage d informatique pour l ingénieur

Programmation Web. Introduction

Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS. IDS2014, Nailloux 26-28/05/2014

4. SERVICES WEB REST 46

UE 8 Systèmes d information de gestion Le programme

HTML, CSS, JS et CGI. Elanore Elessar Dimar

Cahier des charges Site Web Page 1 sur 9

Master Technologies numériques appliquées à l'histoire Deuxième année

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Qu'est-ce que XML? XML : Extensible Markup Language. Exemple de document SGML SGML

les techniques d'extraction, les formulaires et intégration dans un site WEB

TP1. Outils Java Eléments de correction

HMTL. Exemple de fichier HTML. Structure d un document HTML. Exemple de fichier HTML. Balises HTML. IFT1147 Programmation Serveur Web avec PHP

TP2 : Client d une BDD SqlServer

Logiciels de référencement

Les services usuels de l Internet

PUSH MSISDN MODE MAIL 2 SMS

Programmation des Applications Réparties. Parsers XML DOM et SAX

Module http MMS AllMySMS.com Manuel d intégration

Utiliser un CMS: Wordpress

Gestion Électronique de Documents et XML. Master 2 TSM

2 LES BASES DU HTML 19 Qu est-ce que le HTML? 20 De quand date le HTML? 20 Écrire son propre code HTML 22

Les outils de création de sites web

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Les sites Internet dynamiques. contact : Patrick VINCENT pvincent@erasme.org

CREATION D UNE EVALUATION AVEC JADE par Patrick RUER (

Bernard Lecomte. Débuter avec HTML

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

PHP 4 PARTIE : BASE DE DONNEES

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

Introduction à MATLAB R

Pack Fifty+ Normes Techniques 2013

API FTP SMSENVOI V1.1

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Transcription:

PHP5 Manipulation de XML avec DOM 1

DOM Introduction Nous avons vu une classe simplexml qui permet de manipuler un document XML Cette classe, bien que simple d emploi, est très spécifique à PHP 5 DOM est une API standard bien plus générale que simplexml : Les méthodes et procédures de manipulation DOM sont exactement les mêmes dans tous les langages Vous pouvez passer d un langage à l autre sans avoir à apprendre plusieurs noms de fonctions et plusieurs API http://eusebius.developpez.com/php5dom/ 2

DOM Structure générale DOM représente l arbre XML sous la forme d objets et relations entre eux Aussi bien le document que chaque noeud devient un objet à part entière avec sa définition, ses propriétés et ses méthodes Il devient alors facile de : connaître les propriétés d un objet lire des objets les modifier les enregistrer dans un fichier passer d un objet à l autre par une relation privilégiée 3

Exemple : books.xml <bookstore> <book category="cooking"> <title lang="en">everyday Italian</title> <author>giada De Laurentiis </author> <year>2005</year> <price>30.00</price> </book> <book category="children"> <title lang="en">harry Potter</title> <author>j K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="web"> <title lang="en">xquery Kick Start</title> <author>james McGovern</author> <author>per Bothner</author> <author>kurt Cagle</author> <author>james Linn</author> <author>vaidyanathan Nagarajan</author> <year>2003</year> <price>49.99</price> </book> <book category="web"> <title lang="en">learning XML</title> <author>erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore> 4

L arbre DOM correspondant Les nœuds éléments sont liés par des relations : parent, child, sibling 5

L arbre DOM correspondant D autres relations (i.e. méthodes) : 6

1. Les objets DOM Les principaux objets sont : objet nœud : DomNode documents, éléments, nœuds textuels... objet document : DomDocument hérite de DomNode objet élément : DomElement hérite de DomNode objet attribut : DomAttr hérite de DomNode objet liste de DomNodes : DomNodeList ce n'est pas un tableau PHP! http://eusebius.developpez.com/php5dom/ 7

2. L objet document L objet document représente l arbre XML Création d un document Il suffit d instancier la classe DomDocument $document = new DomDocument(); Chargement des données XML Il suffit d utiliser la méthode load() $document = new DomDocument(); $document->load( monfichier.xml ); http://eusebius.developpez.com/php5dom/ 8

2. L objet document Chargement depuis une chaîne XML : load0.php $xml = "<livre><titre>php 5 avancé </titre></livre>"; $document = new DomDocument(); $document->loadxml($xml); Charger un fichier HTML Il est possible de charger un fichier HTML en DOM et de le manipuler comme si c était du XML $document = new DomDocument(); $document->loadhtmlfile( http://www.php.net ); http://eusebius.developpez.com/php5dom/ 9

2. L objet document Import depuis SimpleXML : load1.php Si vous avez utilisé SimpleXML pour lire rapidement un fichier et que vous souhaitez faire quelques manipulations DOM, il est possible d importer l objet SimpleXML pour construire un objet DOM de manière transparente $s = SimpleXML_load_file( fichier.xml ); $dom = dom_import_simplexml($s); print $dom->ownerdocument->savexml(); ownerdocument : retourne la racine du document savexml() : crée une représentation XML depuis la représentation DOM http://eusebius.developpez.com/php5dom/ 10

2. L objet document Enregistrement d'un document XML $dom->save('nouveaufichier.xml'); Enregistrement dans une variable $chainexml = $dom->savexml(); //savexml() renvoie le contenu sous la forme d une chaîne de caractères Exemple : load-save-xml.php $dom = new DomDocument(); $dom->load('test.xml'); $dom->save('nouveaufichier.xml'); http://eusebius.developpez.com/php5dom/ 11

3. Lire un document Rechercher et récupérer un élément Il y a plusieurs moyens pour trouver des éléments Accéder à l'élément racine $document = new DomDocument; $document->load( fichier.xml ); $racine = $document->documentelement; 12

3. Lire un document Accéder au document depuis un nœud La fonction inverse de l attribut documentelement s appelle ownerdocument Il permet de récupérer l objet document à partir d un nœud quelconque $document = new DomDocument(); $document->load( monfichier.xml ); $racine = $document->documentelement; $document = $racine->ownerdocument; 13

3. Lire un document Description d un nœud Les nœuds sont des objets de la classe DomNode On peut connaître le type d un nœud à partir de son attribut propriété : nodetype Il retourne un entier 14

3. Lire un document Description d un nœud : desc_noeud0.xml Exemple $xml = "<livre>alice</livre>"; $document = new DomDocument(); $document->loadxml($xml); //On se place au niveau du premier nœud $livre = $document->documentelement; echo $livre->nodetype; //Affiche 1 $texte = $livre->firstchild; echo $texte->nodetype; //Affiche 3 15

3. Lire un document Description d un nœud : desc_noeud1.php Nom d un nœud : deux attributs de DomNode : nodename et tagname Exemple $xml = "<livre>alice</livre>"; $document = new DomDocument(); $document->loadxml($xml); $livre = $document->documentelement; echo $livre->nodename; //Affiche livre echo $livre->firstchild->nodename; //Affiche #text 16

3. Lire un document Contenu d un nœud : S obtient avec l attribut : nodevalue Attention, un élément n a pas de valeur, ce sont éventuellement ses fils, de type nœuds de texte, qui en ont Exemple : dom1.php $xml = "<livre type='conte'>alice</livre>"; $document = new DomDocument(); $document->loadxml($xml); $livre = $document->documentelement; echo $livre->nodename; //Affiche livre echo $livre->firstchild->nodevalue; //Affiche Alice $type = $livre->getattributenode('type'); echo $type->nodevalue; //Affiche conte 17

3. Lire un document Navigation dans l arbre Liste des nœuds Dans les recherches futures, on va récupérer les nœuds de l arbre XML dans une liste : objet de type : DomNodeList On peut parcourir cette liste avec foreach() Exemple $nodelist; //objet de type DomNodeList; Foreach($nodeList as $node){ Print_r($node); } On peut également accéder à un item particulier à l aide de la méthode : item() et d un index numérique $nodelist->item(0); //Premier nœud de la liste La quantité de nœuds dans une liste peut être récupérée avec l attribut length de l objet DomNodeList echo "Il y a ", $node->childnodes->length, " nœuds fils " ; 18

3. Lire un document Navigation dans l arbre Nœuds fils La liste des nœuds fils d un nœud peut être connue via l attribut : childnodes du nœud père. L objet renvoyé est un objet de type DomNodeList Exemple : dom-fils.php $xml = "<livre><titre>php 5</titre><auteur>E. D</auteur><auteur>C. PdG</auteur></livre>"; $document = new DomDocument(); $document->loadxml($xml); $livre = $document->documentelement; //Affichage des fils de $livre foreach($livre->childnodes as $node){ if($node->nodetype ==XML_ELEMENT_NODE){ echo 'Balise <b>', $node->tagname, '</b><br>'; echo 'Contenu : <b>'; echo utf8_decode($node->firstchild->nodevalue),'</b><br>'; } } 19

3. Lire un document Navigation dans l arbre Nœuds fils Il est possible d accéder directement au premier ou au dernier nœud fils à l aide des attributs : firstchild et lastchild Exemple : dom-fils2.php $xml = "<versions> <version>3</version> <version>4</version> <version>5</version> </versions>"; $document = new DomDocument(); $document->loadxml($xml); $versions = $document->documentelement; //On récupère le premier fils $trois = $versions->firschild; //On récupère le dernier fils $cinq = $versions->lastchild; 20

Nœuds fils On peut tester la présence de nœuds fils à l aide de la méthode : haschildnodes() Exemple : dom-fils3.php $xml = "<versions> <version>3</version> <version>4</version> <version>5</version> </versions>"; $document = new DomDocument(); $document->loadxml($xml); $versions = $document->documentelement; //Affichage des fils de $versions if($versions->haschildnodes()){ foreach($versions->childnodes as $node){ if($node->nodetype == XML_ELEMENT_NODE){ echo $node->tagname, ' : '; echo utf8_decode($node->firstchild->nodevalue), '<br>'; }}}

3. Lire un document Navigation dans l arbre Nœud parent Le nœud parent d un nœud peut être connu via l attribut parentnode du nœuds fils. Il renvoie un objet de type DomNode $parent $fils = $parent->firstchild; $parent = $fils->parentnode; 22

3. Lire un document Navigation dans l arbre Nœuds frères Deux possibilités : - Soit remonter au père, puis lister les fils - Soit plus simplement : via les attributs previoussibling et nextsibling Print_r($node->childNode->item(0)); Print_r($node->childNode->item(1)); //est équivalent à : $node = $node->childnodes->item(0); Print_r($node); Print_r($node->nextSibling); 23

3. Lire un document Recherche d élément par le nom getelementsbytagname() Recherche dans tout le document getelementsbytagname() Recherche dans les descendants de l'élément considéré Ces fonctions retournent un objet DomNodeList 24

3. Lire un document Exemple de getelementsbytagname() : getelementbyname.php $dom = new DomDocument(); $dom->load("test.xml"); $listepays = $dom->getelementsbytagname('pays'); foreach($listepays as $pays) echo $pays->firstchild->nodevalue. "<br />"; echo "---<br />"; $europe = $dom->getelementsbytagname('europe')->item(0); $listepayseurope = $europe->getelementsbytagname('pays'); foreach($listepayseurope as $pays) echo $pays->firstchild->nodevalue. "<br />"; 25

3. Lire un document getelementsbytagname.php Résultat : France Belgique Espagne Japon Inde Etats-Unis Canada Tunisie Cameroun --- France Belgique Espagne 26

3. Lire un document Lire les attributs Modifier le fichier XML (à la main) pour ajouter des attributs donnant le régime politique des pays cités (on suppose que la DTD aura également été modifiée en conséquence, si l'on veut profiter de la validation) : <?xml version="1.0" encoding="iso-8859-1" standalone="no" <!DOCTYPE continents SYSTEM "test.dtd"> <continents> <europe> <pays regime="republique">france</pays> <pays regime="monarchie constitutionnelle">belgique</pays> <pays regime="monarchie constitutionnelle">espagne</pays> </europe> <asie> <pays regime="empire">japon</pays> <pays>inde</pays> </asie> </continents> 27

3. Lire un document Lire les attributs par getattribute : getattribute.php $dom = new DomDocument(); $dom->load("test.xml"); $listepays = $dom->getelementsbytagname("pays"); foreach($listepays as $pays) { echo $pays->nodevalue; if ($pays->hasattribute("regime")) { echo " - ". $pays->getattribute("regime"); } echo "<br />"; } > Pour éviter les erreurs, vérifier l'existence de l'attribut avec la fonction hasattribute() qui prend aussi le nom de l'attribut en paramètre, et qui renvoie un booléen qui dit si l'attribut est présent ou pas 28

3. Lire un document Lire par getattribute Résultat France - republique Belgique - monarchie constitutionnelle Espagne - monarchie constitutionnelle Japon - empire Inde 29

3. Lire un document Lire les nœuds textuels On l'a déjà vu, on peut récupérer la valeur d'un nœud textuel avec l'attribut nodevalue $dom = new DomDocument(); $dom->load("test.xml"); $pays = $dom->getelementsbytagname("pays"); foreach($pays as $c) { echo $c->nodevalue. " ". $c->firstchild->nodevalue; echo "<br />"; } 30

3. Lire un document Lire les nœuds textuels Résultat : France France Belgique Belgique Espagne Espagne Japon Japon Inde Inde 31

4. Modifier un document Modification Voyons maintenant comment modifier les différents éléments d'un document XML déjà existant Créer un noeud La méthode DomDocument::createElement permet très simplement de créer des éléments XML, en passant en paramètre le nom du nœud Créer un élément $nouveaupays = $dom->createelement("pays"); Créer un nœud textuel : si on veut ajouter un nœud textuel à cet élément (pour donner un nom de pays par ex.) : createtextnode <php $nompays = $dom->createtextnode("royaume-uni"); 32

4. Modifier un document Créer un nœud par copie d un nœud existant $paysidentique = $pays->clonenode();? Cette méthode accepte un argument facultatif, un booléen (FALSE par défaut). S'il est à TRUE, tout les nœuds fils seront copiés également, et donc toute une partie de l'arborescence peut être dupliquée par ce biais. 33

4. Modifier un document Modifier un attribut Il nous faut maintenant ajouter un attribut à notre nouveau nœud, afin de préciser le régime politique : utiliser setattribute Création ou modification d'attribut $nouveaupays->setattribute("regime", "monarchie constitutionnelle"); On peut supprimer un attribut avec DomElement::removeAttribute (avec le nom de l'attribut en paramètre) 34

4. Modifier un document Insérer un nœud dans le document Nous avons vu comment créer les éléments et les nœuds textuels, mais encore faut-il les placer dans le document XML, et au bon endroit L'insertion se fait par la méthode DomNode::appendChild qui ajoute le nœud passé en paramètre à la liste des enfants du nœud sur lequel il est appelé Insertion de nouveaux éléments $nouveaupays->appendchild($nompays); $europe = $dom->getelementsbytagname("europe")->item(0); $europe->appendchild($nouveaupays); ajoute le nœud textuel $nompays au nœud $nouveaupays, et ajoute ensuite celui-ci au nœud "europe" 35

4. Modifier un document Supprimer un nœud Utiliser DomNode::removeChild en l'appelant sur le parent du nœud à supprimer et en passant en paramètre une référence sur le nœud à supprimer Tous les descendants du nœud supprimé seront également exterminés $europe->removechild($nouveaupays); 36

6. Recherche Xpath Initialisation Le moteur DOM permet de gérer des requêtes Xpath Il utilise un objet pour gérer la requête Cet objet est de la classe DomXpath qui attend un document DOM en argument $document = new DomDocument(); $document->loadxml($xml) $xpath = new DomXpath($document); 37

6. Recherche Xpath Lancer une requête Xpath Pour faire une recherche, il faut faire appel à la méthode query() $xml = file_get_contents( fichier.xhtml ); $xml = utf8_encode($xml); $document = new DomDocument(); $document->loadxml($xml); $xpath = new DomXpath($document); //recherche tous les formulaires à envoyer $result = $xpath->query("/html/body//form[@action= post ]"); 38

6. Recherche Xpath Lancer une requête Xpath Par défaut, la recherche est faite à partir de l élément racine On peut toutefois préciser le nœud pour la recherche $requete ="form[action= post ]"; $reference = $document->documentelement->lastchild; $result = $xpath->query($requete, $reference); Le résultat renvoyé est un objet liste de nœuds DOM classiques $document = new DomDocument(); $document->loadxml($xml); $xpath = new DomXpath($document); //recherche tous les formulaires à envoyer avec la méthode POST $result = $xpath->query("/html/body//form[@action= post ]"); echo "Il y a ", $result->length, " formulaire(s) en POST"; 39

6. Recherche Xpath Lancer une requête Xpath Soit le fichier XML suivant : php5avance.xml <?xml version="1.0" encoding="utf-8" <livre> <titre>php 5 avancé 5ème édition</titre> <auteur>eric Daspet</auteur> <auteur>cyril Pierre de Geyer</auteur> <preface>damien Séguy</preface> <relecteur>hugo Hamon</relecteur> </livre> 40

On cherche à récupérer tous les nœuds auteur et à afficher leur contenu texte dans une liste non ordonnée HTML : dom-xpath1.php $xml = file_get_contents('php5avance.xml'); $xml = utf8_encode($xml); $document = new DomDocument(); $document->preservewhitespace = false; $document->loadxml($xml); $xpath = new DomXpath($document); //recherche tous les noeuds <auteur> $result = $xpath->query("/livre/auteur"); echo "Il y a ", $result->length, "auteur(s) pour ce livre :"; echo "<ul>\n"; foreach($result as $auteur) { echo "<li>$auteur->nodevalue</li>\n"; } echo "</ul>\n;"

7. Validation Validation par rapport à une DTD Il est possible de vérifier la conformité d un document avec un fichier grâce à la méthode booléenne validate() Exemple : dom-validate.php $dom = new DOMDocument; $dom->load( continents.xml'); if ($dom->validate()) { echo "Ce document est valide!\n"; } http://eusebius.developpez.com/php5dom/ 42

Validation : Exemple : continents.xml <?xml version="1.0" encoding="iso- 8859-1" standalone="no" <!DOCTYPE continents SYSTEM "test.dtd"> <continents> <europe> <pays>france</pays> <pays>belgique</pays> <pays>espagne</pays> </europe> <asie> <pays>japon</pays> <pays>inde</pays> </asie> <amerique> <pays>etats-unis</pays> <pays>canada</pays> </amerique> <afrique> <pays>tunisie</pays> <pays>cameroun</pays> </afrique> </continents> 43

Validation : Exemple continents.dtd <!ELEMENT continents (europe?, asie?, amerique?, afrique?)> <!ELEMENT europe (pays*)> <!ELEMENT pays (#PCDATA)> <!ELEMENT asie (pays*)> <!ELEMENT amerique (pays*)> <!ELEMENT afrique (pays*)> 44

8. Transformation XML par XSLT Initialisation Le moteur XSLT s utilise via un objet propre, un peu comme Xpath Il faut donc commencer par instancier un objet de la classe XSLTProcessor $moteurxslt = new xsltprocessor(); Chargement de la feuille de style Ceci se fait via la méthode importstylesheet() qui accepte un document DOM en argument $moteurxslt = new xsltprocessor(); $style = new domdocument(); $style->load( style.xsl ); $moteurxslt->importstylesheet($style); 45

8. Transformation XML par XSLT Transformation Elle se fait via la méthode transformtoxml() Elle accepte un document DOM en argument et renvoie le XML produit $moteurxslt = new XSLTProcessor(); $style = new domdocument(); $style->load( style.xsl ); $moteurxslt->importstylesheet($style); $source = new DomDocument(); $source->load( source.xml ); echo $moteurxslt->transformtoxml($source); Attention : aller dans php.ini et enlever le ; devant extension=php_xsl.dll 46

TD8 Énoncé Refaire l interface complète (sans le prompt) des contacts en utilisant le maximum de fonctionnalités vues On initialise à vide le document XML On le complète par ajout de contact On supprime un contact On liste les contacts On liste les contacts d une certaine catégorie 47