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 :

[XSL] Parsage de flux XML


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 17
    Points : 10
    Points
    10
    Par défaut [XSL] Parsage de flux XML
    Bonjour,

    utilisant actuellement du XSL pour générer les pages de mon application je me trouve confronté à un problème de parse. En effet les XSL me sert à la mise en forme et les données sont, évidemment, passées sous forme de flux XML contenu dans //data.

    Actuellement je n'avais jamais eu besoin de récupérer une partie de flux, si ce n'est celui contenu dans data.
    Aujourd'hui c'est "malheureusement" le cas et je sèche complètement sur le sujet malgré de nombreuses recherche sur le w3c et un célèbre moteur de recherche.

    Je m'explique plus en détail. Admettons le flux suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <livres>
      <livre>
        <id>1</id>
        <titre>Premier livre</titre>
      </livre>
      <livre>
        <id>2</id>
        <titre>Second livre</titre>
      </livre>
    </livres>
    J'ai par exemple besoin d'afficher tel quel le flux de mon premier livre et non son contenu, soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <livre><id>1</id><titre>Premier livre</titre></livre>
    et non : 1Premier livre.

    J'ai tenté multitude d'astuces et fonctions mais je ne trouve pas de solution.

    Une bonne âme aurait-elle la solution s'il vous plait ?

    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Utilise un copy dans ta transformation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:copy-of select="expression_vers_le_livre"/>
    Cela copie tout le noeud ET ses enfants.

    ERE
    Quand une tête pense seule, elle devient folle.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Merci pour ta réponse,
    cependant le copy-of donne le même résultat que le value-of dans ce cas-ci, je l'avais déjà testé.

    J'avais fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     (...) 
    alert('Value : <xsl:value-of select="livres/livre[id = $monId]" />');
    alert('Copy:  <xsl:copy-of select="livres/livre[id = $monId]" />');
    Et pour monId = 1 le résultat a été :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Value : 1Premier livre
    Copy  : 1Premier livre
    Également testé en plaçant le résultat dans un input ou un textarea.

  4. #4
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    Si c'est sérialiser un fragment que vous voulez faire, il vous faut un attirail de templates pour cela.

    Mon projet XSLTForms intègre cette fonctionnalité : allez voir sur le dépôt SVN de http://sourceforge.net/projects/xsltforms dans les templates xml2string
    Formulaires XForms sur tous navigateurs sans extension à installer (architecture XRX) : http://www.agencexml.com/xsltforms/

  5. #5
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Citation Envoyé par AlexisB Voir le message
    Merci pour ta réponse,
    cependant le copy-of donne le même résultat que le value-of dans ce cas-ci, je l'avais déjà testé.

    J'avais fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     (...) 
    alert('Value : <xsl:value-of select="livres/livre[id = $monId]" />');
    alert('Copy:  <xsl:copy-of select="livres/livre[id = $monId]" />');
    Et pour monId = 1 le résultat a été :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Value : 1Premier livre
    Copy  : 1Premier livre
    Également testé en plaçant le résultat dans un input ou un textarea.
    Désolé, mais cela fonctionne parfaitement (testé à l'instant):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl=" http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
    <form><textarea rows="30" cols="30"><xsl:copy-of select="*"/></textarea></form>
    </xsl:template>
    </xsl:stylesheet>
    ERE
    Quand une tête pense seule, elle devient folle.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Réponse pour Alain :

    Merci votre méthode fonctionne parfaitement.
    Cela me retire une grosse épine du pied. Merci encore.

    Réponse pour emmanuel :
    Avez vous essayé quelque chose du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl=" http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
    <form>
    <xsl:for-each select="livres/livre">
      <textarea rows="30" cols="30"><xsl:copy-of select="*"/></textarea>
    </xsl:for-each>
    </form>
    </xsl:template>
    </xsl:stylesheet>
    En effet si je test sur / ou //data cela fonctionne parfaitement (testé avec un value-of et select-of) mais dès que je passe dans un sous noeud j'ai la valeur sans les balises.

  7. #7
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Heureux que tu aies trouvé ton bonheur.

    Par contre je te confirme que cela fonctionne parfaitement chez moi, quelque soit le niveau fourni. Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:for-each select="/ListeDiaporama/Diaporama">
      <textarea rows="30" cols="30"><xsl:copy-of select="."/></textarea>
    </xsl:for-each>
    Peut-être est ce un souci d'outil lié au moteur de la transformation. Personnellement j'ai fait un test rapide avec IE.

    ERE
    Quand une tête pense seule, elle devient folle.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 17
    Points : 10
    Points
    10
    Par défaut
    Effectivement peut être un souci du moteur.
    J'ai fait le test avec un IE6 et un FF3.0 portable.

    Je garde tout de même en mémoire ta réponse pour des applications futures.

    Merci encore pour votre aide.

  9. #9
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Citation Envoyé par AlexisB Voir le message
    Effectivement peut être un souci du moteur.
    J'ai fait le test avec un IE6 et un FF3.0 portable.

    Je garde tout de même en mémoire ta réponse pour des applications futures.

    Merci encore pour votre aide.
    IE7 de mon côté.

    ERE
    Quand une tête pense seule, elle devient folle.

  10. #10
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    Je pense toujours qu'ici le besoin est bien de sérialiser et que les caractères < et > doivent être remplacés par les entités correspondantes !

    Si IE interprète les éléments à l'intérieur de la balise textarea comme du simple texte ce n'est pas du tout un comportement normal vis à vis de code XML (peut-être HTML..!? à la mode soupe de balises). Le respect des namespaces est, là encore, en cause...

    Ne pas faire confiance à IE a priori s'impose souvent. Mieux vaut une solution qui marche avec Firefox d'abord puis que l'on adapte pour que IE y arrive aussi...
    Formulaires XForms sur tous navigateurs sans extension à installer (architecture XRX) : http://www.agencexml.com/xsltforms/

  11. #11
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    C'est logique.



    ERE
    Quand une tête pense seule, elle devient folle.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/05/2011, 19h20
  2. [SimpleXML] Parsage de flux XML
    Par wac06 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 11/04/2008, 12h35
  3. [XSL] Transformation d'un flux XML
    Par tatemilio2 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 30/10/2007, 18h21
  4. [Débutante][XSL-FO]Flux XML vers HTML puis vers PDF
    Par norkius dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 03/05/2006, 14h29
  5. [XSL] Afficher un flux XML
    Par minimoi1234 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 18/02/2005, 09h35

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