IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

XML XSL Affichage


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 89
    Points : 86
    Points
    86
    Par défaut XML XSL Affichage
    Bonjour,

    Etant debutant en XML XSL, je vous partage mon problème :

    - j'ai en input 2 fichiers : un xml, et un xsl associé (jusqu'ici, tout va bien ).

    - objectif : avoir en output un fichier .html avec, à l'intérieur d'un paragraphe, la sortie de la conversion de mon xml.

    J'ai testé d'ajouter ceci à mon xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml-stylesheet type="text/xsl" href="site-index.xsl" ?>
    Ca marche bien pour ouvrir ce que je veux, mais cela m'oblige à ouvrir mon .xml avec le navigateur.

    Pour re-préciser ma question, j'aimerais donc rentrer ce résultat obtenu dans une balise <p> d'une page HTML.

    Mes fichiers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml version="1.0" encoding="UTF-8"?>
    <root>
      <cow says="moOOo" />
      <cat says="mEEEoow" />
    </root>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
      <xsl:template match="/">
        <div>
          <xsl:apply-templates select="*" />
        </div>
      </xsl:template>
     
      <xsl:template match="/root/*">
        <p>
          A <xsl:value-of select="name()" /> says
          <xsl:value-of select="@says" />.
        </p>
      </xsl:template>
     
    </xsl:stylesheet>
    Merci pour votre aide

    Cordialement,

    G.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hum. Malheureusement il y a pas trop de solution géniale. Le mécanisme de transformation XSLT des navigateurs est au départ prévu pour que la transformation génère la totalité de la page.
    Je te jette une poignée de possibilités, dis-moi ce que tu en penses.

    - Faire que la transformation génère la totalité de la page. Tu mets un template genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <xsl:template match="/">
      <html>
        <header>
          <title>Ton titre</title>
        </header>
        <body>
          <!-- Là tu mets tout ce qu'il y a dans ta page -->
          <p>
            <xsl:apply-templates/>
          </p>
          <!-- et là tout ce qui vient après le <p> -->
        </body>
      </html>
    </xsl:template>
    Bien sûr ce n'est pas du tout flexible si on a besoin de la transformation dans plus d'un genre de page. Ou si on en veut plusieurs par page.

    - Faire la transformation côté serveur. En PHP ou quoi que soit ton langage côté serveur. Le langage en question pourra sans problème faire la transformation et générer la page, d'une part de manière habituelle, d'autre part à l'aide du XML pour la partie qui dépend du XML. Soit dit en passant, avec cette méthode, la transformation XSLT n'est plus très utile, dans la mesure où le langage côté serveur pourrait exploiter le XML lui-même au lieu de passer par l'étape XSLT.
    ... Mais ça oblige à avoir un langage côté serveur et à s'intégrer avec, bien sûr.

    - Utiliser un <iframe> pour le <p>. <iframe> n'est pas très bon pour les moteurs de recherches qui ne sauront pas quoi faire du contenu de l'<iframe>, mais ça marche.

    - Utiliser les techniques AJAX pour récupérer le XML et XSLTProcessor pour le transformer. Puis encore de la technique AJAX pour insérer le résultat dans la page.
    Problème : IE et les vieux navigateurs n'ont pas de XSLTProcessor. D'un autre côté, il doit être possible de faire la transformation entièrement en JavaScript plutôt que de la faire en XSLT.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 89
    Points : 86
    Points
    86
    Par défaut
    Hello, et merci pour ta réponse.

    J'avais en effet déjà trouvé les solutions 1 et 4 que tu proposes.

    La transfo coté serveur ave PHP, l'idée me plait, mais pour mon cas je ne dois pas toucher au coté serveur.

    La 3eme solution avec iframe, je viens de la tester, ça marche très bien sur un petit exemple en tout cas.

    Voila mon petit bout de code, et ça fonctionne !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>Mise en forme avec XSLT et iframe</title>
    </head>
     
    <body>
    	<p>
    		hello there paraph 1
    	</p>
    	<p>
    		<iframe src="test.xml" id="f1"></iframe>
    	</p>
     
    </body>
    </html>
    Je vais essayer de voir si je peux jouer avec l'objet iframe, je reviendrai vers ici
    Merci thelvin pour toutes les pistes proposées !

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    89
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 89
    Points : 86
    Points
    86
    Par défaut
    Je reviens vers ici

    J'ai une petite question : le passage par iframe, en donnant directement le xml en src.
    Est-ce que la transformation xsl est réalisé coté serveur (et donc je reçois uniquement le fichier transformé, je n'ai ni accès au xml brut, ni au xsl brut coté client), ou est-ce coté client, impliquant le chargement et du xml et du xsl entier , la transfo se faisant coté client ?

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    L'idée était que ce soit côté client.
    Si tu veux faire la transformation côté serveur, l'iframe est inutile, tu peux transformer et insérer le résultat directement à sa place dans la page.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Flux XML et affichage via XSL sans extension XSL ?
    Par manuef515 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 04/12/2008, 23h28
  2. Affichage d'un fichier XML/XSL dans IE
    Par StormimOn dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 13/03/2008, 17h17
  3. [XML][XSL] Forcer l'affichage sur le navigateur avant la fin
    Par FreddyP dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 08/05/2006, 13h36
  4. [débutant] XML/XSL et non affichage
    Par mavina dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 20/04/2006, 08h55
  5. xml-xsl-fo : probleme d'affichage d'un tableau
    Par clindoeil dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 12/12/2003, 12h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo