Initiation à la programmation Web dynamique avec le langage PHP et XML


Télécharger Initiation à la programmation Web dynamique avec le langage PHP et XML

★★★★★★★★★★3.5 étoiles sur 5 basé sur 1 votes.
Votez ce document:

Télécharger aussi :


Initiation à la programmation Web dynamique avec le langage PHP et XML

...

Les axes de recherche

Les expressions XPATH peuvent faire référence à des axes de recherche. Ces axes de recherche précisent dans quel sens il faut parcourir l'arbre afin de sélectionner des noeuds.

Les différents axes de recherche

child::

Clause sollicitant les enfants du noeud contexte - c'est l'axe par défaut.

descendant::

Clause sollicitant les descendants du noeud contexte (les enfants, les enfants des enfants, etc.).

cdescendant-or-self::

Clause sollicitant les descendants du noeud contexte et le noeud contexte lui-même.

parent::

Clause sollicitant le parent du noeud contexte.

ancestor::

Clause sollicitant les ancêtres du noeud contexte (le parent, le parent du parent, etc.).

ancestor-or-self::

Clause sollicitant les ancêtres du noeud contexte et le noeud contexte lui-même.

following-sibling::

Clause sollicitant les frères du noeud contexte (qui ont le même parent) et qui suivent celui-ci dans le contexte.

preceding-sibling::

Clause sollicitant les frères du noeud contexte (qui ont le même parent) et qui précèdent celui-ci dans le contexte.

following::

Clause sollicitant tous les noeuds qui suivent le noeud contexte dans l'ordre du document, à l'exclusion des descendants du noeud contexte (et des noeuds attributs et namespaces).

preceding::

Clause sollicitant tous les noeuds qui précèdent le noeud contexte dans l'ordre du document, à l'exclusion des ancêtres du noeud contexte (et des noeuds attributs et namespaces).

attribute::

Clause sollicitant tous les noeuds attributs enfants du noeud contexte.

namespace::

Clause sollicitant tous les noeuds namespaces enfants du noeud contexte.

self::

Clause sollicitant le noeud contexte lui-même.

Exemples d'axes de recherche

L'expression '/descendant::*' va sélectionner tous les éléments à partir de la racine du document.

L'expression 'ancestor::chapitre' va sélectionner tous les ancêtres de l'élément contexte ayant pour nom chapitre.

L'expression 'child::adresse/child::rue' va sélectionner les enfants rue des enfants adresse de l'élément contexte. Elle peut être résumée par 'adresse/rue'.

L'expression 'parent::node()/child::titre' va sélectionner les enfants titre de l'élément parent de l'élément contexte. Elle peut être résumée par '../titre'.

L'expression 'child::personne[attribute::titre="M"]' va sélectionner les enfants personne (si l'attribut titre est égal à M) de l'élément contexte. Elle peut être résumée par 'personne[@titre="M"]'.

Nous verrons par la suite comment, dans une procédure PHP, il est possible de faire appel aux expressions XPATH pour exploiter les données encodées au format XML.

API SAX

SAX ("Simple API for XML" ou en français "API simple pour XML") est une interface de programmation qui permet l'analyse du format XML. Elle a été mise au point par David Megginson et est progressivement devenue un standard de fait.

La particularité de SAX, c'est qu'elle traite un document XML comme un flux. Ainsi, cette API fournit à l'application qui l'utilise les éléments constitutifs du document au fur et à mesure de la lecture. On dit qu'il s'agit d'une approche de type événementiel.

Une application qui exploite l'API SAX va, en conséquence, mettre en oeuvre des gestionnaires d'événements. A mesure que l'analyse du document XML se poursuit, des événements sont relevés et signifiés au programme qui peut ensuite les traiter. Par exemple, un événement peut être généré pour chaque nouvelle ouverture de balise rencontrée, ou pour chaque fermeture de balise.

Approche événementielle SAX

Exemple de document XML:

<?xml version="1.0"?>

<auteurs>

<nom>James Ellroy</nom>

<nom>Jack London</nom>

<nom>Jules Vernes</nom>

</auteurs>

Analyse SAX :

start document

|

|-- start element 'auteurs'

|             |            

|             |-->start element 'nom'

|             |             |

|             |             |-->characters 'James Ellroy'

|             |            

|             |-->end element 'nom'

|             |            

|             |-->start element 'nom'

|             |             |

|             |             |-->characters 'Jack London'

|             |            

|             |-->end element 'nom'

|             |            

|             |-->start element 'nom'

|             |             |

|             |             |-->characters 'Jules Vernes'

|             |            

|             |-->end element 'nom'

|

|-- end element 'auteurs'

|

end document

L'analyse SAX repose sur la prise en compte d'événements : début du document, fin du document, début d'un élément, fin d'un élément ... C'est au programmeur à tirer profit de l'apparition ou non de ces événements afin de retirer du document l'information qui l'intéresse.

De nombreux langages de programmation intègrent aujourd'hui l'interface SAX : Java, C, C++, Perl, PHP, Python ...

SAX et les outils qui lui sont associés sont souvent mis en avant pour l'efficacité et la rapidité de l'analyse XML qu'ils fournissent. On reconnaît toutefois également que cette api est plus lourde à manipuler pour le programmeur. C'est à ce stade de la réflexion qu'il faut envisager l'autre API de manipulation XML : DOM.

API DOM

DOM ("Document Object Model" ou en français "modèle objet de documents") est une spécification du W3C. Elle définit une interface de programmation qui permet à des applications informatiques d'accéder à une représentation "orientée objet" des documents XML et HTML. Cette interface est indépendante de toute plate-forme et de tout langage.

Avec DOM, l'accès aux éléments constitutifs d'un document est fortement facilité. Les programmeurs peuvent, en effet, manipuler et parcourir de façon arborescente un document.

DOM considère un document comme étant constitué de noeuds et les traite en tant qu'objets. Ceux-ci sont de différents types : le document, les éléments, les attributs, les commentaires, la déclaration, les contenus textuels. L'interface DOM, à travers la définition de propriétés et de méthodes, donne accès à tous ces éléments et à leur contenu. Il est ainsi fort aisé de modifier, supprimer, créer, réécrire des documents XML.

Modéle de document DOM

Exemple de document XML:

<?xml version="1.0"?>

<auteurs>

<nom>James Ellroy</nom>

<nom>Jack London</nom>

<nom>Jules Vernes</nom>

<nom>Umberto Eco</nom>

<nom>Dan Simmons</nom>

</auteurs>

Représentation DOM :

document

|

|--élément 'auteurs'

|

|-->élément 'nom'

|             |

|             |-->élément texte 'James Ellroy'

|

|-->élément 'nom'

|             |

|             |-->élément texte 'Jack London'

|

|-->élément 'nom'

|

|-->élément texte 'Jules Vernes'

|

|-->élément 'nom'

|

|-->élément texte 'Umberto Eco'

|

|-->élément 'nom'

|

|-->élément texte 'Dan Simmons'

DOM transpose ici le document dans une structure arborescente composée d'un noeud document qui a pour enfant le noeud élément 'auteurs' qui a lui-même pour enfants les noeuds éléments 'nom'. Ceux-ci, à leur tour, contiennent des noeuds, mais cette fois de type 'texte'. Un langage de programmation, pour peu qu'il supporte l'interface DOM, va pouvoir analyser et traiter ces noeuds en les manipulant comme des objets. Il sera alors possible d'interroger leurs propriétés et de leur appliquer des méthodes.

De nombreux langages de programmation ont implémanté l'interface DOM et s'ouvrent de cette façon au développement orienté XML : Java, C, C++, Perl, PHP, Python, JavaScript, ECMAScript. Cette implémentation se matérialise par un objet ou une librairie.

Quels outils utiliser et quand ?

Les questions s'imposent évidemment. Faut-il transformer un document à l'aide d'XSLT? Pourquoi ne pas le faire directement en DOM? SAX est-elle l'API la plus efficace pour parcourir un document XML? Quel outil utiliser pour mettre à jour un document XML? Voici quelques éléments de réponse qui vous aideront à formuler une solution adaptée à votre contexte :

XSLT

L'utilisation d'XSLT se justifie amplement lorsque :

-              la transformation du document XML est conséquente

-              l'objectif est la publication sous un autre format

-              le besoin de programmation directe ne se fait pas sentir

SAX

L'utilisation de SAX se justifie amplement lorsque :

-              le document xml à traiter est fort volumineux

-              la rapidité du traitement est prioritaire

-              l'objectif du parsing XML est la sélection d'informations bien ciblées

-              le traitement peut être réalisé en une seule passe

DOM

L'utilisation de DOM se justifie amplement lorsque :



-              des modifications doivent être effectuées dans le document XML

-              la structure XML doit être exploitée finement

-              l'objectif est de créer un document XML

Prérequis et installation des modules de base

Environnement Web/PHP

Afin d'exploiter le langage PHP, il faut disposer d'un compte sur un serveur web équipé du module PHP (le plus récent de préférence). Nous supposerons que c'est le cas - sinon, vous serez peut-être amené à installer cet environnement de développement (pour cela nous vous renvoyons au chapitre suivant).

La configuration que nous avons utilisée pour cet atelier est la suivante

-              Plateforme Windows XP

-              Serveur Apache 1.3.x

-              Module PHP 4.x et 5.x

Il est bien évidemment possible de travailler de la même façon avec une configuration différente (plateforme

Unix/Linux, ou serveur Web IIS par exemple). Nous ne pouvons cependant, dans le cadre de cet atelier, couvrir toutes les solutions envisageables.

Installation de PHP 4

Installation de PHP 4 sur un OS de type Windows

Première étape :

Télécharger et installer un logiciel serveur web (si ce n'est déjà fait).

Vous avez le choix :

-              Apache

-              Internet Information Server

-              Personal Web Server

-              iPlanet

-              Omni HTTPd

-              Webten

-              Webstar

-              ...

Si l'on envisage la chose sous l'angle de la portabilité et de la stabilité, l'association du logiciel serveur web 'Apache' et du module de programmation 'PHP' est certainement la solution à privilégier.

La mise en place du serveur Apache sur un système Windows est une opération relativement simple. La distribution Windows contient en effet un exécutable qui permet une installation rapide et transparente.

Deuxième étape :

Télécharger -dans un répertoire de votre choix- la version 4 de la distribution de PHP (pour Windows 95/98/NT/2000/XP) à partir de l'adresse suivante .net/ ou depuis un des nombreux sites miroirs.

Troisième étape :

Installer sur le serveur le module PHP.

Cette opération consiste -dans un premier temps- à décompresser la distribution PHP qui vient d'être téléchargée (dans le répertoire c:\php par exemple).

Ensuite, deux fichiers (se trouvant dans le répertoire d'intsallation 'c:\php') doivent être copiés sur le sytème. Le fichier 'php4ts.dll' et 'php.ini' sont en effet indispensables au bon fonctionnement de PHP; il faut donc s'assurer qu'ils soient accessibles sur le système.

-              Le fichier 'php4ts.dll' doit être placé dans le répertoire 'system': - c:\windows\system pour Windows 9x/Me - c:\winnt\system32 pour Windows NT/2000 - c:\windows\system32 pour Windows XP

-              Le fichier 'php.ini-dist' doit être copié, renommé en 'php.ini' et placé dans le répertoire 'windows': - c:\windows pour Windows 9x/Me/XP - c:\winnt ou c:\winnt40 pour Windows NT/2000

Quatrième étape :

Effectuer les modifications indispensables dans le fichier de configuration de PHP (php.ini). Dans la plupart des cas, cette opération consiste à éditer le fichier php.ini afin de préciser le chemin d'accès du répertoire où sont installées les extensions de php.

Configuration du fichier 'php.ini'

Dans la rubrique 'Paths and Directories' il faut préciser pour la propriété 'extension_dir' le chemin d'accès du répertoire qui contient les fichiers d'extensions.

1             - extension_dir = c:\php\extensions\

Il est évidemment nécessaire d'adapter le chemin d'accès en fonction du répertoire d'installation de la distribution PHP.

Cinquième étape :

Configurer le serveur web de façon à ce que le module php soit pris en compte lors des requêtes http.

En ce qui concerne le serveur Web Apache, dans la plupart des cas, il suffit d'éditer le fichier 'httpd.conf' (qui se trouve dans le répertoire 'conf' de l'installation d'Apache) et d'y ajouter les lignes de configuration tel que présenté dans l'exemple ci-dessous.

Configuration du fichier 'httpd.conf'

Les rubriques 'LoadModule', 'AddModule' et 'AddType' doivent être respectivement complétées des lignes suivantes:

1             - LoadModule php4_module c:/php/sapi/php4apache.dll

2             - AddModule mod_php4.c

3             - AddType application/x-httpd-php .php .phtml

La première ligne de configuration indique à Apache où se trouve le module PHP à charger en mémoire lors du démarrage du serveur. La deuxième ligne ne doit être insérée que si la directive 'ClearModuleList' est définie dans le fichier de configuration (au niveau de la rubrique 'AddModule' - ce qui n'est par exemple pas la cas pour Apache 2). La troisième ligne définit l'extension des fichiers PHP.

Documentation technique:

Les guides d'installation correspondant à chaque plate-forme et serveur web sont disponibles sur le site web de PHP à l'adresse suivante :

Installation de PHP 5

Afin d'exploiter le langage PHP, il faut disposer d'un compte sur un serveur web équipé du module PHP. Si ce n'est pas le cas, vous serez peut-être amené à installer cet environnement de développement. Pour cela vous devrez installer et configurer un serveur web ainsi que le module PHP. A ce niveau les options et choix possibles étant tellement nombreux, nous ne pouvons ici que formuler les grandes lignes de la procédure (pour les détails techniques et les dernières mises à jour, nous vous invitons à consulter l'information diffusée sur le site de PHP: .net/manual/installation.

Installation de PHP sur un OS de type Windows

Première étape :

Télécharger et installer un logiciel serveur web (si ce n'est déjà fait).

Vous avez le choix :

-              Apache

-              Internet Information Server

-              Personal Web Server

-              iPlanet

-              Omni HTTPd

-              Webten

-              Webstar

-              ...

Si l'on envisage la chose sous l'angle de la portabilité et de la stabilité, l'association du logiciel serveur web 'Apache' et du module de programmation 'PHP' est certainement la solution à privilégier.

La mise en place du serveur Apache sur un système Windows est une opération relativement simple. La distribution Windows contient en effet un exécutable qui permet une installation rapide et transparente.

Deuxième étape :

Télécharger -dans un répertoire de votre choix- la dernière version de la distribution de PHP (pour Windows 95/98/NT/2000/XP) à partir de l'adresse suivante http://www.php.net/ ou depuis un des nombreux sites miroirs.

Troisième étape :

Installer sur le serveur le module PHP.

Cette opération consiste -dans un premier temps- à décompresser la distribution PHP qui vient d'être téléchargée (dans le répertoire c:\php par exemple).

Ensuite, deux fichiers (se trouvant dans le répertoire d'intsallation 'c:\php') doivent être copiés sur le sytème. Le fichier 'php5ts.dll' et 'php.ini' sont en effet indispensables au bon fonctionnement de PHP; il faut donc s'assurer qu'ils soient accessibles sur le système.

-              Le fichier 'php5ts.dll' doit être placé dans le répertoire 'system': - c:\windows\system pour Windows 9x/Me

- c:\winnt\system32 pour Windows NT/2000 - c:\windows\system32 pour Windows XP

-              Le fichier 'php.ini-dist' doit être copié, renommé en 'php.ini' et placé dans le répertoire 'windows': - c:\windows pour Windows 9x/Me/XP - c:\winnt ou c:\winnt40 pour Windows NT/2000

Quatrième étape :

Effectuer les modifications indispensables dans le fichier de configuration de PHP (php.ini).

Dans la plupart des cas, cette opération consiste à éditer le fichier php.ini afin de préciser le chemin d'accès du répertoire où sont installées les extensions de php.

Configuration du fichier 'php.ini'

Dans la rubrique 'Paths and Directories' il faut préciser pour la propriété 'extension_dir' le chemin d'accès du répertoire qui contient les fichiers d'extensions.

1             - extension_dir = c:\php\ext\

Il est évidemment nécessaire d'adapter le chemin d'accès en fonction du répertoire d'installation de la distribution PHP.

Cinquième étape :

Configurer le serveur web de façon à ce que le module php soit pris en compte lors des requêtes http.

En ce qui concerne le serveur Web Apache, dans la plupart des cas, il suffit d'éditer le fichier 'httpd.conf' (qui se trouve dans le répertoire 'conf' de l'installation d'Apache) et d'y ajouter les lignes de configuration tel que présenté dans l'exemple ci-dessous.

Configuration du fichier 'httpd.conf'

Les rubriques 'LoadModule', 'AddModule' et 'AddType' doivent être respectivement complétées des lignes suivantes:

1             - LoadModule php5_module c:/php/php5apache.dll

2             - AddModule mod_php5.c

3             - AddType application/x-httpd-php .php .phtml

La première ligne de configuration indique à Apache où se trouve le module PHP à charger en

mémoire lors du démarrage du serveur. La deuxième ligne ne doit être insérée que si la

directive 'ClearModuleList' est définie dans le fichier de configuration (au niveau de la rubrique

'AddModule' - ce qui n'est par exemple pas la cas pour Apache 2). La troisième ligne définit

l'extension des fichiers PHP.

Sixième étape :

Vérifier  si  l'opération  s'est  bien  déroulée.  Pour  cela  vous  pouvez  tester  le  script  suivant  (fichier  "

installation_test.php ") :

Fichier " installation_test.php "

1             - <?php

2             - phpinfo()

3             - ?>

Cette fonction affiche les informations sur la configuration courante du module PHP. Pour exécuter le script présenté ci-dessus, il suffit de l'appeler via un navigateur Web en précisant dans l'url l'adresse du serveur Web sur lequel est stocké le script (ex: http://localhost/ ou http://127.0.0.1/) ainsi que le chemin d'accès au script (ex: http://localhost/mes-scripts/installation_test.php ou http://127.0.0.1/test/installation_test).

L'utilisation de la fonction phpinfo() a pour résultat l'affichage d'informations concernant la configuration courante de PHP: options de compilation, extensions, version, environnement, utilisateur... C'est un bon moyen de vérifier si le module PHP tourne correctement.

Documentation technique:

Les guides d'installation correspondant à chaque plate-forme et serveur web sont disponibles sur le site web de PHP à l'adresse suivante :



Parseur externe

Il s'agit ici d'utiliser, à partir de PHP, des ressources externes. La procédure d'installation va donc se limiter aux instructions d'installation de l'outil que l'on aura choisi d'utiliser.

Pour ce cours, nous ferons, dans un premier temps, appel au parseur XSLT (outil de transformation d'un document XML) de James Clark 'XT'. Il est diffusé gratuitement, il est souple, rapide et très fonctionnel. XT peut être utilisé en tant que Servlet Java, être intégré dans une application Java, ou encore être sollicité comme application indépendante.

En ce qui nous concerne, l'installation d'XT nécessite simplement le téléchargement d'un fichier exécutable pour Windows ('xt.exe' - http://www.jclark.com/xml/). Il suffit de placer celui-ci sur le système et de bien noter l'endroit où il est enregistré. Pour y accéder via PHP, seul le chemin d'accès est en effet nécessaire.

Une fois le principe de l'utilsation d'un programme externe assimilé, nous passerons en revue l'appel à d'autres outils de transformation XSLT, notamment 'msxsl' de Microsoft ainsi que le parseur 'saxon' de Michael Kay.

 Sablotron

Sablotron est une boîte à outils XML implémentant les normes XSLT 1.0, DOM Level2 et XPath. C'est un logiciel libre développé et distribué par "Ginger Alliance" ( /). La version actuelle est disponible pour différentes plate-formes: Linux, Windows NT/2000/XP, Solaris, HP-UX, Irix, FreeBSD, OpenBSD, OpenServer, Open Unix, MacOS X.

Au niveau de la plate-forme PHP 4, Sablotron a longtemps constitué l'implémentation officielle d'un parseur XSLT sous forme d'extension.

Installation sous Windows

Pour pouvoir exploiter Sablotron sous PHP 4.x vous devez vous assurer que les fichiers suivants sont présents sur votre système:

-              expat.dll

-              sablot.dll

-              iconv.dll

-              php_xslt.dll

La procédure d'installation est relativement simple. Voici la marche à suivre.

-              Les fichiers 'expat.dll', 'sablot.dll' et 'iconv.dll' se trouvent dans le sous-répertoire 'dlls' du répertoire d'installation de php. Vous devez les copier dans votre répertoire 'system' : - c:\windows\system pour Windows 9x/Me - c:\winnt\system32 pour Windows NT/2000 - c:\windows\system32 pour Windows XP

-              Le fichier 'php_xslt.dll' se trouve dans le sous-répertoire 'extensions' du répertoire d'installation de php (c'est son emplacement par défaut). Vérifiez qu'il s'y trouve bien.

Il faut ensuite effectuer une modification indispensable dans le fichier de configuration de PHP (php.ini). Cette opération consiste à éditer le fichier php.ini afin d'activer l'extension php_xslt.dll

Configuration du fichier 'php.ini'

Dans la rubrique 'Dynamic Extensions' il faut supprimer le signe ';' qui se trouve au début de la ligne ';extension=php_xslt.dll' (ce signe met en effet cette commande en commentaire).

1             - extension=php_xslt.dll

Cette instruction ne sera correctement prise en compte que si les fichiers "dll" précités se trouvent bien dans votre système.

DOM XML

L'extension DOM XML a été développée -à l'époque de PHP 4- afin de mettre en oeuvre l'api DOM telle que définie par le standard du W3C. Elle permet de créer et d'accéder des documents XML selon les recommandations DOM. Combinée aux librairies libxslt et libexslt, elle permet également de transformer un document XML à travers des procédures XSLT. Dans la version 5 de PHP, elle a été remplacée par l'extension DOM.

Installation sous Windows

Pour pouvoir exploiter les outils DOM XML sous PHP 4 vous devez vous assurer que les fichiers suivants sont présents sur votre système :

-              libxml2.dll

-              libexslt.dll

-              libxslt.dll

Il est possible de se procurer ces librairies à l'adresse suivante : 'http://www.zlatkovic.com/projects/libxml/binaries.html'. Après téléchargement, les trois fichiers mentionnés doivent être copiés dans votre répertoire 'system' :

-              c:\windows\system pour Windows 9x/Me

-              c:\winnt\system32 pour Windows NT/2000

-              c:\windows\system32 pour Windows XP

Il faut ensuite effectuer une modification indispensable dans le fichier de configuration de PHP (php.ini). Cette opération consiste à éditer le fichier php.ini afin d'activer l'extension php_domxml.dll

Configuration du fichier 'php.ini'

Dans la rubrique 'Dynamic Extensions' il faut supprimer le signe ';' qui se trouve au début de la ligne ';extension=php_domxml.dll' (ce signe met en effet cette commande en commentaire).

1             - extension=php_domxml.dll

Cette instruction ne sera correctement prise en compte que si les fichiers "dll" précités se trouvent bien dans votre système.

Parseur externe

Comme il s'agit ici d'utiliser, à partir de PHP, des ressources externes, la procédure d'installation va se limiter aux instructions d'installation de l'outil que l'on aura choisi d'exploiter. Il n'y a donc pas de différence par rapport à ce qui doit être fait sous PHP4 ni aucune liaison avec la version du module PHP.

Extension XSL

L'extension XSLT (exploitée à travers le module Sablotron) présente dans PHP 4.x a été retirée de la version 5. Pour bénéficier du support XSLT avec PHP 5, il faut à présent utiliser l'extension XSL.

L'extension XSL implémente le standard XSL, et fait des transformations XSLT à l'aide de la bibliothèque

libxslt org/XSLT/). PHP 5 inclut l'extension XSL par défaut et peut être activée très simplement

-sous Windows- en enlevant le signe de commentaire ';' devant la directive 'extension=php_xsl.dll' dans le fichier 'php.ini'. Ensuite, il est bien évidemment nécessaire de redémarrer le serveur Web.

extension=php_xsl.dll

Activation d'XSL sous Unix/Linux

--------------------------------------

L'activation de cette extension sous Unix/Linux implique la compilation préalable de libxslt et de libxml (//xmlsoft /XSLT/). Une fois ces produits installés, il faut recompiler le module PHP avec l'option '--with-xsl'.

Activation d'XSL sous Unix/Linux

1             - # Compilation de libxml :

2             - ./configure --prefix=<DIR>

3             - make

4             - make install

1             - # Compilation de libxslt :

2             - ./configure ... --with-libxml-prefix=<DIR-libxml>

3             - make

4             - make install

1             - # Compilation de PHP :

2             - ./configure ... --with-xsl=<DIR-libxslt>

3             - make

4             - make install

Extension DOM

L'extension DOM XML (exploitée à travers les bibliothèques libxml et libxslt) présente dans PHP 4.x a été retirée de la version 5. Pour bénéficier du support DOM XML avec PHP 5, il faut à présent utiliser l'extension DOM.

L'extension DOM permet de manipuler des documents XML avec l'API DOM. PHP 5 inclut et active l'extension DOM par défaut.

Extension SimpleXML

L'extension SimpleXML fait partie des nouveautés offertes par PHP 5. Elle se distingue des outils envisagés jusqu'ici par sa facilité d'utilisation et permet de manipuler sans prérequis particulier des documents xml simples. L'exploitation de cette extension ne nécessite que très peu de code et de connaissances.

Mise en pratique

Transformation XSLT

Comment obtenir une transformation XSLT ?

Le recours à la technologie XSLT présente l'avantage d'éloigner encore un peu plus la phase de publication et d'habillage des données de la programmation proprement dite. PHP se limitant dans ce cadre à préparer l'information source et à lui appliquer des feuilles de style de façon contextuelle.

Cette répartition des tâches débouche sur un gain de temps et sur un cloisonnement qui peuvent difficilement être négligés.

PHP et XSLT

PHP va être chargé de l'orchestration des transformations XSLT.

Pour activer une transformation XSLT, c'est-à-dire l'application d'une feuille de style XSL à un document XML, il faut soit faire appel à un programme externe, soit initialiser et exploiter un processeur XSLT via les extensions PHP.

Le recours à un programme externe (par exemple 'xt', 'msxsl' ou 'saxon') est certainement la méthode la plus simple mais aussi la plus lente. L'utilisation des extensions directement prises en charge par PHP suppose plus d'efforts de codage de la part du programmeur, mais les gains en termes d'efficacité et de rapidité sont appréciables. Les chapitres qui suivent illustrent ces différentes méthodes.

Transformation XSLT

Parseur externe (PHP4 / PHP5)

La portée d'un script PHP ne se limite pas obligatoirement aux outils prévus par le langage. Il y a en effet moyen de prolonger les fonctionnalités de base en utilisant des commandes d'exécution de programmes externes.

C'est ce que nous cherchons ici pour obtenir une transformation XSLT. Nous nous en remettons, dans le cadre de cet atelier, au parseur 'xt' de James Clark. Pour l'activer, la procédure est fort simple puisqu'il suffit de lancer son exécution à patir d'un script. L'instruction d'exécution que nous utilisons est 'passthru'. Celle-ci exécute un programme externe et affiche le résultat.

Syntaxe :             passthru(command)

Transformation de base

La transformation la plus simple consiste à appliquer une feuille de style XSL à un fichier XML. En d'autres mots, il s'agit d'utiliser le programme 'xt' en lui passant comme paramètres le chemin d'accès d'un fichier XML ainsi que celui d'un fichier XSL et d'en récupérer le résultat.

Transformation à partir du parseur 'xt'

1             - <?php

2             - passthru("xt.exe test.xml style1.xsl");

3             - ?>

Le script ci-dessus exécute le programme xt. Celui-ci associe un fichier xml à une feuille de style xsl. On suppose dans cet exemple que l'exécutable 'xt.exe', le fichier XML et le fichier XSL se trouvent dans le même répertoire que le script PHP.

Le résultat de la transformation est automatiquement redirigé vers la sortie standard.

Transformation à partir du parseur 'msxsl'

1             - <?php

2             - passthru("c:\msxml4\msxsl.exe test.xml style1.xsl");

3             - ?>

La procédure d'appel du programme externe est identique à la précédente. On suppose dans ce script que l'exécutable 'msxsl.exe' se trouve dans le répertoire 'C:\msxml4'.

Pour pouvoir utiliser ce parseur de cette façon, il faut au préalable avoir installé le module XML de Micorosft (MSXML) ainsi que l'utilitaire 'msxsl.exe'.



976