8.4 Mise en forme de documents avec XSLT 353 <b>Michael Madsen</b>: Budd / Sidewinder<br/> <b>Daryl Hannah</b>: Elle Driver<br/> <h3>R´esum´e</h3> Au cours d’une c´er´emonie de mariage en plein d´esert, </body> </html> La transformation est terminée, et ce document HTML est prêt à être affiché dans n’importe quel navigateur. En résumé, XSLT est un langage qui permet de produire un document XML par assemblage de fragments contenus dans des règles, et en incluant dans ces fragments des parties extraites d’un document source. Voyons maintenant comment appliquer une telle transformation avec PHP. 8.4.2 Application d’un programme XSLT avec PHP On peut envisager deux possibilités pour effectuer la transformation XSLT : côté serveur ou côté client. Pour le côté serveur, PHP fournit une interface fonctionnelle avec le processeur XSLT Comme pour SAX, cette interface permet de créer un pro- cesseur, et d’appliquer un programme XSLT à un document source. Le programme, le document source et le document résultat peuvent être soit des chaînes de caractères, soit des fichiers. Ce processeur n’est pas toujours installé, et la transformation côté client est plus facile à metre en œuvre. Elle consiste à transmettre le document XML et le programme XSLT au navigateur et à laisser ce dernier effectuer la transformation. Ce n’est possible qu’avec un navigateur doté d’un processeur XSLT, comme les versions raisonnablement récentes de Firefox, Safari ou Internet Explorer. Il suffit alors d’ajouter une instruction de traitement <?xml-stylesheet href=’programme ’ type=’text/xsl’?> dans le prologue du document XML pour indiquer au processeur XSLT le programme à appliquer. // On envoie l ’en−tête HTTP, et le prologue du document XML Header ("Content−type : text /xml"); echo "<?xml version=\"1.0\" encoding=\"iso−8859−1\"?>\n\n" ; // Mise en forme selon le choix de l ’utilisateur if ($_POST [ ’ format ’ ] == "XML" ) { // On sort le XML brut echo "<Films >\n$document </ Films >\n" ; } else { // On applique une transformation XSLT. Il suffit d’ajouter // une instruction pour que le navigateur en tienne compte // et applique la transformation Film. xsl 354 Chapitre 8. XML echo "<?xml−stylesheet href= ’./xsl/Film. xsl ’ type=’text/ xsl ’?>\n" . "<Films >\n$document </Films >\n" ; ; } On voit que l’instruction de traitement est placée entre le prologue et le corps du document quand on a demandé un export en HTML. Dans ce cas, le document XML et le programme XSLT sont transmis au navigateur qui effectue la transformation et affiche directement le résultat comme le montre la figure 8.2. On utilise PHP uniquement pour la production du document XML, et la mise en forme (ici HTML) est obtenue avec XSLT. Il serait très facile de créer de nouveaux programmes XSLT applicables au même document pour produire, par exemple une version pour des téléphones mobiles, une version VoiceXML (sortie vocale), une version RSS, etc. Notez que les personnes qui réalisent ces programmes XSLT n’ont aucun besoin de connaître ni la structure de la base (ou même son existence), ni PHP, ni l’architecture du site. Figure 8.2 — Résultat de la transformation XSLT L’intérêt de recourir à cette solution est essentiellement de pouvoir choisir dyna- miquement entre plusieurs programmes XSLT au moment de la publication des données. Cela peut permettre de personnaliser la présentation en fonction du navi- gateur, du média (ordinateur, téléphone, PDA, ), ou des souhaits d’un utilisateur particulier. Imaginons par exemple un site qui gère un catalogue de produits (disons, des livres), et plusieurs fournisseurs, disposant chacun de leur propre site web, et souhaitant y publier avec leurs propres normes graphiques une partie de ce catalogue. La programmation MySQL/PHP permet facilement d’extraire les données de la base, au format XML, et il reste à créer autant de programmes XSLT qu’il y a de présentations possibles. TROISIÈME PARTIE Compléments Introduction au Zend Framework 9 Ce chapitre est une introduction au Zend Framework (abrégé en ZF), un ensemble de composants logiciels développé en Open Source (sous licence Free BSD) à l’initiative de la société Zend qui distribue l’interpréteur PHP et commercialise de nombreux outils pour la réalisation d’applications web professionnelles. Le ZF est un ensemble extrêmement riche de classes orientées-objet dont l’ambi- tion est de fournir un support au développement d’applications PHP complexes, dans tous les domaines. Nous allons nous intéresser essentiellement ici à la réalisation d’applications basées sur MySQL, en revisitant notamment le pattern MVC décrit dans le chapitre 6, tel qu’il est implanté dans le ZF. Le ZF est un projet relativement récent (2005) qui se développe à grande échelle. Comme tous les outils de ce type (par exemple le framework STRUTS pour Java), sa prise en main peut s’avérer délicate car on est submergé de concepts qui peuvent paraître barbares au néophyte. Si vous avez bien assimilé le MVC « léger » présenté précédemment et les principes de la programmation objet, l’introduction qui suit doit vous éviter la phase la plus pénible de l’apprentissage. L’effort en vaut la peine car, pour des projets importants, l’utilisation d’un framework facilite bien les choses. Le choix de présenter le ZF ne doit d’ailleurs pas s’interpréter comme un jugement de valeur. Il existe d’autres frameworks très recommandables (pour n’en citer qu’un, Symphony semble très apprécié), mais vous devez à l’issue de la lecture être capable de vous débrouiller pour explorer d’autres pistes. REMARQUE – J’ai pris pour point de départ de cette introduction quelques documents trouvés sur le Web. Je remercie les auteurs, parmi lesquels Julien Pauli, qui a déposé quelques précieux tutoriaux sur le site Developpez.com. Le chapitre s’appuie sur la présentation d’une application, appelée ZSCOPE, qui utilise ponctuellement la base MySQL sur les films, développée dans les chapitres . interface permet de créer un pro- cesseur, et d’appliquer un programme XSLT à un document source. Le programme, le document source et le document résultat peuvent être soit des chaînes de caractères, soit. est un langage qui permet de produire un document XML par assemblage de fragments contenus dans des règles, et en incluant dans ces fragments des parties extraites d’un document source. Voyons. présenté précédemment et les principes de la programmation objet, l’introduction qui suit doit vous éviter la phase la plus pénible de l’apprentissage. L’effort en vaut la peine car, pour des projets importants,