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 "xml-tech@xmlfr.org" (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 xml-tech-request@xmlfr.org
>(mailto:xml-tech-request@xmlfr.org?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
stephane@exselt.com - http://www.exselt.com
04 76 17 09 40 / 06 88 57 27 08
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (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 xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Received on Tue Sep 12 11:22:11 2006