Re: Interprétation PHP dans XSL

Stéphane Bonhomme <[email protected]>
Newsgroups gmane.text.xml.french.tech
Message-ID <[email protected]>
Mathieu Fernandez wrote:

>Stéphane Bonhomme a écrit :
>  
>
>>Attention, il semble que vous fassiez une confusion :
>>
>>D'après ce que vous indiquez, vous effectuez la transformation xslt sur 
>>le navigateur. Il faut bien comprendre que dans les cas sités 
>>précédemment (dans les liens sur les archives de la liste), les 
>>transformations interviennent bien en amont et produisent les fichiers à 
>>déposer sur le serveur.
>>
>>Lorsque vous produisez du code php par xslt, celui-ci doit ensuite être 
>>interprété par un processeur php, lequel n'existe que coté serveur. La 
>>feuille de style dont nous parlons doit donc être utilisée comme 
>>préparation des données à publier sur le serveur web et *en aucun cas* 
>>executée par le navigateur !
>>
>>données XML ------transformations xsl ---> fichiers PHP -----serveur 
>>http (web)------>html ->navigateur
>>
>>un fois ce point eclairci, vous comprendrez mieux pourquoi votre php ne 
>>peut pas fonctionner
>>  
>>    
>>
>>>Je comprends absolument plus rien là :
>>>1° solution : Si je mets method="xml", j'ai tout qui se concatène dans 
>>>ma page (le navigateur ne prend plus en compte les balises) et aucun 
>>>include ne fonctionne (par exemple dans un de mes include j'ai ma CSS et 
>>>elle n'est pas prise en compte), par contre, dans mon fichier source:
>>>      
>>>
>>C'est pourtant la bonne solution, perserverez dans cette voie
>>
>>  
>>    
>>
>>>2° solution : Si je mets method="html", c'est exactement comme au début, 
>>>ma mise en page est "bonne" (les balises HTML sont interprétées) par 
>>>contre aucun include n'apparait, ni sur la page ni dans les sources.
>>>    
>>>      
>>>
>>Normal, lorsque l'output method est html, le processeur xslt du 
>>nivagateur ignore purement et simplement les xsl:processing-instruction
>>
>>  
>>    
>>
>>>Je deviens fou là.
>>>      
>>>
>>l ne faut pas, faites un schema des fulx de données, et des types de 
>>données circulant cela vous aidera à y voir clair (où est le xml, le 
>>xslt, le php, ou sont interprétés le xslt, le php, le css).
>>
>>  
>>    
>>
>>>PS : J'ai fait comme vous me dîtes mais le problème c'est que mes 
>>>fichiers sont au format HTML, je ne peux donc pas les tranformer au 
>>>format XML.
>>>      
>>>
>>Pour cela il y a tidy, ou encore xmllint, ou meme l'implementation dom 
>>de php5 qui sont capables de parser du html pour soit produire du xml 
>>bien formé, soit un arbre dom.
>>    
>>
>Pour les include je m'en suis sorti autrement, merci tout de même.
>Et merci pour votre patience aussi :o)
>  
>
on serait pas là à répondre sans patience :)

>Mais je dois toujours trouver le moyen d'utiliser le PHP pour ma 
>fonction qui me compte les fichiers d'un dossier (et puis pour la 
>culture en général, c'est bon à savoir:o))
>Je comprends mieux maintenant le problème : le PHP n'a pas le temps 
>d'être interprété par le serveur, il faut donc que ma feuille de style 
>XSL crée le fichier PHP pour que que celui-ci soit ensuite interprété 
>par le serveur pour qu'il me génère du XHTML, c'est bien ça.
>
>Or en utilisant method="xml", il me génère diectement du XHTML, ça ne 
>pose pas de problème ?
>  
>
A priori non, en tout cas certainement moins qu'en html !

>Deuxième problème, quand vous me dîtes : "La feuille de style dont nous 
>parlons doit donc être utilisée comme préparation des données à publier 
>sur le serveur web et *en aucun cas* executée par le navigateur !" 
>comment ça se réalise ça?
>  
>
Il y a plusieurs façons de "jouer" le xslt :

- par une transformation "batch", en ligne de commande (xsltproc), ou 
dans une interface spécialisée du type XmlSpy ou oXygen
  => produit un fichier (ou une sortie standard dans le cas ligne de 
commande)

- par une transformation dynamique sur le serveur : le xslt est appliqué 
au moment ou le serveur traite la requête (en codant l'appel du 
processeur xslt en php, ou à l'aide d'un module serveur spécialisé, tel 
que mod_xslt d'apache).
  => produit un flot de données qui sont renvoyées au navigateur via la 
réponse http

- par une une transformation sur le navigateur : les données xml et la 
feuille xslt sont envoyées (via http) au navigateur qui réalise la 
transformation avant d'afficher le résultat (c'est l'objet du 
<?xml-stylesheet.... présent dans votre fichier xml, qui permet de dire 
au navuigateur ou charger la feuille de style à appliquer)


>Dans ma tête je vois la chose ainsi : il faut que je crée un fichier PHP 
>grâce à cette feuille XSL et que j'éxecute ensuite ce fichier PHP sur le 
>serveur pour qu'il soit interprété mais comment faire?.
>  
>
il faut donc utiliser la méthode 1 ci dessus (en fait il est également 
possible d'utiliser la 2 en disant à php d'interpréter le code produit 
par la transformation, c'est la méthode proposée par 
http://xmlfr.org/listes/xml-tech/2004/10/0013.html (voir la fonction 
eval() à la fin du traitement).

>Par exemple je crée une fonction qui me compte le nombre de fichier dans 
>un dossier et en prend un au hasard, je fais donc :
><xsl:processing-instruction name="php">
>    <xsl:text>
>        function count_files($dir)
>        { ...}
>        ...
>        echo $retour;
>    </xsl:text>
></xsl:processing-instruction>
>
>j'ai donc le code qui apparait dans mon source mais qui n'est pas 
>éxécuté, il faudrait donc que je puisse rappeler cette page afin 
>d'éxécuter le PHP qu'elle contient mais j'ai beau réfléchir je ne vois 
>pas du tout comment faire...
>
>  
>
non pas rappeller la page, mais faire la tranformation *avant* de 
déposer les fichiers sur le serveur, ainsi vous ne servez pas le 
xml+xslt, mais le php résultant de la transformation (j'espere que ceci 
convient à votre processus)

>PS : je débute dans le domaine donc ne m'en voulait pas si je pose des 
>questions un peu bateau pour vous, elles sont d'un grand aide pour moi.
>  
>
pas de porbleme ;)

>
>--
>Devenez redacteur <XML>fr et contribuez au developpement du
>xml francophone (http://xmlfr.org/infos/redacteurs/) !
>
>Liste de diffusion "[email protected]" (http://xmlfr.org).
>
>Cette liste est a votre disposition pour discuter en francais de 
>tout sujet technique lie a XML.
>
>Pour resilier votre abonnement, envoyez un message contenant 
>la commande "unsubscribe" a [email protected]
>(mailto:[email protected]?Subject=unsubscribe)
>
>---------------------------------------------------------------------------------------
>Orange vous informe que cet  e-mail a ete controle par l'anti-virus mail. 
>Aucun virus connu a ce jour par nos services n'a ete detecte.
>
>
>  
>


-- 
   Stéphane Bonhomme           --           Exselt Services

Formations, Conseil et Réalisations en Ingénierie Documentaire,
            Technologies Web et Logiciels Libres
     [email protected]   -   http://www.exselt.com
        04 76 17 09 40        /      06 88 57 27 08
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.