Bonjour,

Voila, j'essaye de faire un site qui utilise du XML avec un fichier XSL pour la mise en page. Ce fichier XSL fait appel a des noeuds contenus dans un autre fichier XML, en utilisant la fonction document() (cf exemple ci-dessous).

L'affichage se fait sans problème sous FF et IE7, mais pas sous Safari. Pourtant, en cherchant sur le net (peut-être que je cherche mal...), je n'ai pas trouve d'infos a ce propos. Se peut-il que Safari ne gere pas cette fonction "document()", ou alors mes appels ne sont pas conformes a une specification particulière qui n'est prise en compte que dans Safari ? Merci de votre aide sur ce point.

<td class="NomNoir" width="680">
  <xsl:variable name="homeLink">
    <xsl:value-of select="document('../xml/layout.xml')/layout/url" />
  </xsl:variable>
  <a href="{$homeLink}">
    <xsl:value-of select="document('../xml/layout.xml')/layout/firstName" />
    <xsl:value-of select="document('../xml/layout.xml')/layout/lastName" />
  </a>
</td>


EDIT : je viens de lire ca sur un autre fil de discussion :
mignon a écrit :
Seul revers de la médaille: Opera ne reconnaît pas la fonction document().

Ca ne me rassure pas trop : comment faire alors ? Y a-t-il un moyen bien reconnu par tous les navigateurs pour gérer les XSL qui font appel a des documents XML extérieurs ?
Modifié par jde3 (15 Aug 2007 - 16:11)
salut ,

pour éviter tout problèmes de compatibilité coté client lors de transformation Xslt, il faut réaliser ses transformations coté serveur , (le plus courant est Php mais c'est possible en Java, ..ect)

D'ailleurs il est souvent conseillé de ne pas réaliser ces transformations coté clents , ceux-ci ne servant qu'à l'affichage du format choisi .

Cet article
par exemple pour débuter ...
si tu choisi le langage Php , fait attention au modification entre php 4 et 5
kzone a écrit :
salut ,

pour éviter tout problèmes de compatibilité coté client lors de transformation Xslt, il faut réaliser ses transformations coté serveur , (le plus courant est Php mais c'est possible en Java, ..ect)

D'ailleurs il est souvent conseillé de ne pas réaliser ces transformations coté clents , ceux-ci ne servant qu'à l'affichage du format choisi .

Ah ok, j'aurais pensé que le couple XML/XSL aurait eu tendance à se suffire à lui-même et à le revendiquer, mais si c'est ce qui est recommandé de faire ça côté serveur...

kzone a écrit :
Cet article
par exemple pour débuter ...
si tu choisi le langage Php , fait attention au modification entre php 4 et 5

Merci pour le lien, je reviendrai probablement vous embêter quand j'aurai essayé cette méthode...
jde3 a écrit :
Merci pour le lien, je reviendrai probablement vous embêter quand j'aurai essayé cette méthode...

Mon Responsable De Services Informatiques a écrit :
I don't think that that PHP is built with an xslt parser, though.

Donc pas moyen pour PHP...

Comme langages de scripts accessibles, j'ai ça :
# PHP 4.2.3
# Python 2.1
# Perl 5.6.1

Je peux faire quelque chose ou il faut que j'abandonne l'idée d'avoir un site en XML/XSL visible par tout le monde ?

Sinon, y'a pas des gens qui ont développé des fonctions PHP pour afficher du XML transformé par XSLT sans avoir le package installé ?

D'autres idées ?
Modifié par jde3 (21 Aug 2007 - 13:13)
salut,

il y a DomIt, comme parseur écrit en Php mais je n'ai jamais testé alors ( mais il semble très fiable)

...
Salut JD3


Avec PHP 5, il y a de nouvelles fonctionalités qui prennent mieux en charge le XMl. Je ne peux pas t'en dire plus car ...

Personnellement, j'ai décidé de ne pas mettre en oeuvre de technologies côté serveur avec le XML pour deux raisons :

primo, pcq un des arguments en faveur de XML est précisément qu'il permet de ne pas solliciter des ressources "serveur" (genre serveur de bases de données)

secundo, pcq les navigateurs évoluent très vite et ce qui est impensable aujourd'hui sera une banalité demain. Le navigateur Opéra jurait ses grands dieux en 2002 (?), qu'il ne fallait pas effectuer la transformation XSLT coté client. Or je constate que depuis la version 8.X ou 9, Opéra effectue la transformation XSLT ... comme tous ses concurrents.

C'est pourquoi j'ai décidé d'utiliser la fonction document() même si Opéra ne la reconnaît pas ... pour le moment.

Wait & See,


Mignon
@kzone : merci du lien, j'essaye ça quand j'ai du temps, et je repasserai vous donner mon avis...

@mignon : d'un côté, je suis d'accord avec toi, et j'avais aussi tendance à croire que la transformation aurait plus de raisons de se faire côté client, mais bon, le but de ma page est de présenter mon travail (publications, etc.) à des gens qui connaissent pas trop ce que je fais, donc s'ils arrivent sur mon site avec Safari ou Opera et que ça ne s'affiche pas, ils vont me zapper directement, ce qui serait ballot pour moi...
Modifié par jde3 (22 Aug 2007 - 10:12)
une petite précision concernant Domit , c'est que Joomla
l'utilise dans son CMS ...
Il doit donc être assez 'performant' .. Smiley ravi
Modifié par kzone (22 Aug 2007 - 20:20)
J'ai bien réussi à utiliser DomIt comme parseur de XML, par contre, à moins que je n'aie pas les yeux en face des trous, il n'y a pas de fonction pour faire la transformation XSLT... Alors, comme je suis un peu feignant et surtout que mes connaissances de XSLT ne sont pas assez grandes pour que je puisse coder cette transformation en PHP, je me suis résolu (pour le moment...) à ne parser que mes fichiers XML et à remplacer les XSL associés par du code HTML inséré dans mon fichier PHP...

Si quelqu'un entend un jour parler d'une fonction de transformation XSLT basée sur DomIt, je suis preneur...
Modifié par jde3 (24 Aug 2007 - 14:52)