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 :

[XSLT][Javascript] Transformation mineure d'un arbre xml


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut [XSLT][Javascript] Transformation mineure d'un arbre xml
    Bonjour à tous.

    J'ai un arbre XML de ce type
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <directory name="plop" current="yes">
       <directory name="plup">
          <file name="flop" />
          <file name="flup" />
       </directory>
       <directory name="empty" />
    </directory>

    Qui est transformée en page xhtml grâce à une feuille de style XSLT, qui transforme notamment mes <directory> en liens. J'aimerais que ces liens soient en fait des appels javascript qui "déplacent" le "current='yes'" d'un directory à un autre. Autrement dit, si je clique sur le lien généré à partir de mon directory "plup", ma page xhtml devra ressembler exactement à ce qu'elle serait si l'arbre XML était
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <directory name="plop">
       <directory name="plup" current="yes">
          <file name="flop" />
          <file name="flup" />
       </directory>
       <directory name="empty" />
    </directory>

    Une idée de réalisation pour m'aiguiller ?
    Merci beaucoup.

  2. #2
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Points : 2 372
    Points
    2 372
    Par défaut
    Bonjour,

    tu peux utiliser une feuille de style XSLT avec un paramètre name.

  3. #3
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Ce n'est pas vraiment au niveau du XSLT que j'aimerais agir mais directement sur le XML.

    En gros, j'ai :
    XML -> XSLT -> html + javascript -> XML' -> xslt -> html' + javascript
    où XML et XML' diffèrent légèrement (déplacement d'un attribut) et html et html' sont les images par mon XSLT de XML et XML'.

    N'y a-t-il pas moyen via javascript de récupérer le DOM du fichier XML directement (puisque tout est déjà chargé, j'aimerais qu'il n'y ait pas de nouvelle commnication avec le serveur).

    Merci.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Oui, c'est possible de controler via le javascript une transfomation xsl et de mettre à jours le navigateur :
    http://xml.developpez.com/sources/?p..._javascript_FF

    J'aime bien jquery quand je fais du javascript, il y a un pluggin qui permet de t'abstraire du navigateur :
    http://www.jongma.org/webtools/jquery/xslt/

  5. #5
    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
    Faire une transformation XSLT 1.0 en Javascript est effectivement assez facile (comme d'habitude, il y a Internet Explorer et les autres...).

    Je ne peux pas m'empêcher de penser que votre problématique est aussi envisageable avec XForms qui, par extension, peut d'ailleurs utiliser XSLT aussi !

    -Alain

  6. #6
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Je crois bien que j'ai du mal à me faire comprendre ... Ma problématique n'est pas d'obtenir du html à partir d'un xml et de javascript, mais de 1) modifier le xml qui est à la base de mon html+javascript pour ensuite 2) le refaire passer par mon xslt.

    Le 2) est OK, c'est le 1) qui est problématique.

  7. #7
    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
    Oui, et c'est là que XForms est intéressant : le document XML est dans une instance, il sert à afficher différentes choses. Lorsqu'il est modifié par des contrôles, l'affichage est rafraichi en conséquence.

    -Alain

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Et l'étape 1) peut se faire en javascript cad manipuler le xml puis appliquer le xsl pour raffraichir tout ou partie de la page courante.

  9. #9
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Le problème c'est que ta question est ambigue dans ses données.
    Est ce que tu peux modifié un XML en javascript:
    oui et non
    non, tu ne pourras pas modifier le fichier physique (ou alors il va falloir passer par des objets propriétaires ou du code serveur)
    oui, tu peux modifer le flux mais sous condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XML -> XSLT -> html + javascript -> XML' -> xslt -> html' + javascript
    Tel que je lis je vois un XML lié à un xslt qui se transforme en HTML+javascript.
    Les conditions pour pouvoir modifier flux XML + affichage ne sont pas vraiment réunis.

    Si ton xml est produit par un formulaire , regarde du coté de XForms comme te l'a conseillé Alain ,cela peut t'intéresser

    Sinon, ou si tu ne peux ou veux utiliser cette technologie , il va falloir faire des modifications.
    1) créer une page HTML+ javascript
    2) dans cette page , via les objets appropriés tu charges ton flux xml et xslt
    3) tu lances la transformations
    4) tu utilise inerhtml ou appendchild pour modifier ta page HTML avec le résultat de la transformation
    5) pour modifier ton XML tu va utiliser les fontions dom approprié sur l'objet XML crée en 2
    6) si tu veux afficher les modifs tu repasses en étapes 3

  10. #10
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Merci beaucoup Erwy, tu réponds parfaitement à ma question. Mon but était d'éviter des flux de données inutiles entre le client et le serveur si le client activait javascript. Je ferai donc sans, mais c'est dommage n'est-ce pas ?

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Tu feras donc sans... car tu cherchais à modifier le fichier physique présent sur le serveur? Car tu avais besoin de sauvegarder les choix de l'utilisateur pour plus tard?

  12. #12
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Non car je voulais modifier l'arbre (et non le fichier XML) à l'origine du document xhtml+javascript ... mais encore une fois c'est trop dommage puisque le navigateur garde en mémoire ledit arbre XML (sous FF du moins, ctrl+u ne provoque pas de connexion au serveur).

  13. #13
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Ce que t'as expliqué Erwy, permet de modifier le DOM en live, sans nouvelle requette http du navigateur :
    Citation Envoyé par Erwy Voir le message
    1) créer une page HTML+ javascript
    2) dans cette page , via les objets appropriés tu charges ton flux xml et xslt
    3) tu lances la transformations
    4) tu utilise inerhtml ou appendchild pour modifier ta page HTML avec le résultat de la transformation
    5) pour modifier ton XML tu va utiliser les fontions dom approprié sur l'objet XML crée en 2
    6) si tu veux afficher les modifs tu repasses en étapes 3
    mais un rechargement du navigateur te fera perdre les modifications de l'utilisateur (à moins de les conserver via des cookies, mais ça devient vraiment complexe)

  14. #14
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Citation Envoyé par prgasp77 Voir le message
    Merci beaucoup Erwy, tu réponds parfaitement à ma question. Mon but était d'éviter des flux de données inutiles entre le client et le serveur si le client activait javascript. Je ferai donc sans, mais c'est dommage n'est-ce pas ?
    Citation Envoyé par Morbo Voir le message
    Ce que t'as expliqué Erwy, permet de modifier le DOM en live, sans nouvelle requette http du navigateur :
    mais un rechargement du navigateur te fera perdre les modifications de l'utilisateur (à moins de les conserver via des cookies, mais ça devient vraiment complexe)
    Morbo, je sais que tu es de bonne intention, et je te remercie pour ton aide. Mais par pitié ! lis plus attentivement mes messages. C'est la troisième fois que tu ignores une partie de mes phrases, c'est assez frustrant

  15. #15
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Oh, ben écoute, j'admet très bien être faillible, parfois lire un peu vite.
    Mais en l'occurrence, je pense pas avoir grand chose à me reprocher.

    Ce que t'as décris Erwy se base justement sur une solution client javascript, je ne vois dont aucune contradiction et je ne comprends pas pourquoi tu la rejetes.

    Mais bon, puisqu'on arrive pas à communiquer, je vais pas m'obstiner non plus, on s'en remettra l'un et l'autre .

  16. #16
    Membre émérite
    Avatar de prgasp77
    Homme Profil pro
    Ingénieur en systèmes embarqués
    Inscrit en
    Juin 2004
    Messages
    1 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur en systèmes embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 306
    Points : 2 466
    Points
    2 466
    Par défaut
    Erwy m'a expliqué que je ne pouvais pas faire ce que je souhaitais à moins de faire une modification (qu'il m'a proposée). J'en attendais pas plus.

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

Discussions similaires

  1. [XSLT][JavaScript] Transformation à partir d'un flux xml
    Par tatemilio2 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 21/07/2009, 11h16
  2. [XSLT][JAVASCRIPT] transformation suite à un évenement
    Par yassou dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 12/09/2007, 12h12
  3. [XML - CSS - XSLT] Non-transformation ET non-mise en forme !?
    Par ghohm dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 18/05/2006, 17h44
  4. [XSLT][.NET] Transformer du XML dans un string
    Par Floyd dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 31/10/2005, 15h41
  5. [XSLT] Arbre XML -> Arbre HTML
    Par FT dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 29/09/2004, 09h49

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