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]utiliser une feuille xsl pour traiter différents xml


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 88
    Points : 85
    Points
    85
    Par défaut [XSLT]utiliser une feuille xsl pour traiter différents xml
    Après avoir testé différents outils de comparaison de fichiers XML, voir le sujet suivant : http://www.developpez.net/forums/sho...d.php?t=125746

    j'ai décidé d'utiliser l'outil libre JXyDiff : http://potiron.loria.fr/projects/jxydiff

    j'obtiens donc un fichier delta.xml qui récapitule toutes les suppressions, insertions ou mises à jour entre 2 versions d'un fichier XML.

    Je souhaite maintenant utiliser ce fichier delta.xml pour rejouer ces mêmes modifications sur d'autres fichier xml (instanciés du fichier xml original)...

    Je ne sais pas quel langage utiliser pour réaliser cela. N'ayant pas assez de recul sur tout ce qui se développe autour de XML, je m'adresse à vous pour savoir s'il est possible de gérer ça en utilisant le XSL ou autre technologie lié à XML. Et si pour vous il vaut mieux travailler avec les technos du XML, ou utiliser d'autres langages comme java, ou des langages de script comme javascript...

    Bref je rame un peu...

    La structure du fichier delta est la suivante :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <delta>
        <Deleted update="yes" pos="0:1:15:1:1:0">0</Deleted>
        <Deleted pos="0:1:13:57">
            <KeyValuePair Key="Viewpoint" String=""/>
        </Deleted>
        <Deleted pos="0:1:13:55">
            <KeyValuePair Key="Timeout Activated" Boolean="false"/>
        </Deleted>
        <Deleted update="yes" pos="0:1:11:0">12</Deleted>
        <Inserted update="yes" pos="0:1:11:0">11</Inserted>
        <Inserted update="yes" pos="0:1:15:1:1:0">1</Inserted>
        <AttributeInserted name="Boolean" value="true" pos="0:1:13:45"/>
        <AttributeInserted name="Integer" value="2" pos="0:1:13:49"/>
        <AttributeInserted name="String" value="" pos="0:1:13:51"/>
        <AttributeInserted name="Boolean" value="true" pos="0:1:13:53"/>
        <AttributeDeleted name="Boolean" pos="0:1:13:49"/>
        <AttributeDeleted name="Integer" pos="0:1:13:51"/>
        <AttributeDeleted name="String" pos="0:1:13:53"/>
        <AttributeUpdated nv="80" name="Height" ov="60" pos="0:1"/>
        <AttributeUpdated nv="true" name="active" ov="false" pos="0:1"/>
        <AttributeUpdated nv="150" name="Width" ov="130" pos="0:1"/>
        <AttributeUpdated nv="365" name="x" ov="380" pos="0:1:1"/>
        <AttributeUpdated nv="300" name="x" ov="315" pos="0:1:3"/>
        <AttributeUpdated nv="430" name="x" ov="445" pos="0:1:5"/>
        <AttributeUpdated nv="430" name="x" ov="445" pos="0:1:7"/>
        <AttributeUpdated nv="300" name="x" ov="315" pos="0:1:9"/>
    </delta>
    Du coté du xsl, je bloque un peu sur la manière d'utiliser l'attribut "pos" qui signale la position du noeud dans l'arbre de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <root>
     <elements>
      <element0/>
      <element1/>
      <element2/>
        ...
      <elementn/>
     </elements>
    </root>
    l'élément "elementi" aura alors la positition comme ceci : pos="0:0:0:i" (la position initiale étant 0: )

    Merci pour vos éclaircissements!

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    utiliser XSLT va être problématique, puisque appliquer le delta sur la source XML élément par élément va nécessiter de conserver les arbres intermédiaires, et ce n'est pas possible à moins d'utiliser une extension à XSLT comme la fonction node-set...

    Il me paraît plus simple d'utiliser Java et d'appliquer le delta sur l'arbre DOM du fichier source.

  3. #3
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 88
    Points : 85
    Points
    85
    Par défaut
    je m'en doutais mais je préfèrai avoir l'avis de quelqu'un de plus expérimenté sur ces technos avant d'éliminer cette solution.

    Merci pour ces précisions!

    j'ai plus qu'à me plonger dans le java et notamment à découvrir comment gérer DOM en java...

  4. #4
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Si tu ne connais pas Java plus que cela, et que tu as le choix du langage, essaie Python, qui est un langage très sympa et suffisamment doté en librairies XML pour ce que tu veux faire.

  5. #5
    Membre régulier
    Inscrit en
    Février 2005
    Messages
    88
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 88
    Points : 85
    Points
    85
    Par défaut
    Citation Envoyé par GrandFather
    Si tu ne connais pas Java plus que cela, et que tu as le choix du langage, essaie Python, qui est un langage très sympa et suffisamment doté en librairies XML pour ce que tu veux faire.
    j'ai quelques notions de java (une vingtaine d'heures de cour + quelques TPs...), je ne connais pas Python mais c'est peut-etre l'occasion de m'y mettre, merci du tuyau

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/07/2011, 13h57
  2. Réponses: 2
    Dernier message: 05/03/2008, 19h30
  3. [XSLT] Utiliser une fonction PHP à partir de la feuille de style XSL
    Par sayou84 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 25/04/2007, 13h35
  4. [XSLT] problème intégration d'applet dans une feuille XSL
    Par jymmy dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 25/03/2007, 15h01
  5. [XSLT] Afficher du contenu HTML dans une feuille XSL
    Par krapno dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 24/10/2006, 14h07

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