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 traiter recursivement un fichier xml


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut XSLT traiter recursivement un fichier xml
    Bonjour,

    je ne suis pas un habitué de XSLT et j'aimerais éviter une solution usine à gaz à mon problème. C'est pour cela que je fais appel à vos conseils et talents respectifs.

    Description du porblème
    ----------------------------

    J'aimerais travailler récursivement sur le même fichier xml et modifier la valeur de certains attributs à chaque passe jusqu'à ce que plus aucunes des règles que j'ai établie ne puissent s'appliquer.

    Pour illustrer mes propos voici un fichier xml qui représente un état dans le monde des blocs, pour ceux qui connaissent.

    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
     
    <monde>
    	<block name ="a">
    		<upperblock value="b" />
    		<lowerblock value="table" />
    	</block>
     
    	<block name ="b">
    		<upperblock value="none" />
    		<lowerblock value="a" />
    	</block>
     
     
    	<block name ="c">
    		<upperblock value="none" />
    		<lowerblock value="table" />
    	</block>
     
    </monde>

    J'aimerais que toutes mes balises block se trouvent dans la situation finale.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <block name ="c">
    		<upperblock value="none" />
    		<lowerblock value="table" />
    </block>
    Mais voilà je ne sais pas très bien comment mis prendre. J'ai vu qu'il existait la possibilité de créer un arbre temporaire mais si j'ai bien compris c'est une variable statique, on ne peut pas changer la valeur de ses éléments. Je ne vois pas très bien comment m'y prendre.


    Un grand merci d'avance d'avoir pris la peine de lire et un encore plus grand merci à ceux qui répondront.

  2. #2
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    ce n est pas clair le résultat que tu attends

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Si tu veux j'aimerais avoir en sortie

    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
     
    <monde>
       <block name ="a">
          <upperblock value="none" />
          <lowerblock value="table" />
       </block>
     
       <block name ="b">
          <upperblock value="none" />
          <lowerblock value="table" />
       </block>
     
     
       <block name ="c">
          <upperblock value="none" />
          <lowerblock value="table" />
       </block>
     
    </monde>
    J'espère que c'est plus clair comme cela.

    Je continue à chercher et je pense que je dois faire plusieurs passe sur mon fichier xml une premiere qui le copie integralement et les suivantes qui transforment la copie.

  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
    Bonjour,

    Citation Envoyé par davelo
    J'espère que c'est plus clair comme cela.
    Pas vraiment... Essaie de formaliser le traitement attendu, de donner les règles précises qui conditionnent les valeurs de upperblock et lowerblock.
    Citation Envoyé par davelo
    Je continue à chercher et je pense que je dois faire plusieurs passe sur mon fichier xml une premiere qui le copie integralement et les suivantes qui transforment la copie.
    Je ne pense pas qu'il soit nécéssaire de passer par plusieurs passes, d'autant plus qu'il s'agit d'un traitement récursif.

  5. #5
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    si le but est d avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <upperblock value="none" />
    <lowerblock value="table" />
    pour tous tes blocks...alors c est vraiment très simple,
    ce que je ne voies pas c est qu à la base tu avais parlé de règles..

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    En fait si vous voulez je dois créer un système expert qui a partir un etat
    initial (mon fichier initial) me dit les règles que je dois appliquer pour evoluer vers un etat initial (un autre fichier xml). Je dois donc d'une part faire evoluer mon arbre initial et d'autre part controler que je suis bien mon objectif(etat final).

    Je dois donc ecrire des règles qui regardent les blocs qui sont libres (càd dont upperblock/@value=none) car ce sont les seules que je peux deplacer et ensuite les deplacer.

    Ici dans cet exemple que je vous ai donner, j'aimerais simplement qu'ils me mettent tous mes blocs sur la table cad les mettre a upperblock = none et lowerblock = table) peu importe le fichier initial que je lui donne.

    Si vous voulez j'aimerais traduire les formules suivantes de la logique des predicats:

    BLOCK(x) x est un block
    TABLE(x) x est une table
    ON(x,y) le bloc x est sur le bloc y
    CLEAR(x) le sommet de x est libre

    Notre situation de depart est BLOCK(a), BLOCK(b), BLOCK(c), TABLE(table), ON(a, table), ON(b,a), ON(c,table), CLEAR(b), CLEAR(c)

    et j'aimerais aller vers BLOCK(a), BLOCK(b), BLOCK(c), ON(a,table), (b,table) et ON(c,table).

    Mes deux règles sont soit deplacer un bloc x de y vers z( précondition sommet de x et de la destination soient libres).
    Soit de deplacer un bloc x vers la table(precondition sommet x libre).
    Ce sont les deux règles possibles pour le moment.

    Ici j'ai fais un exemple simple où je les positionne tous sur les tables mais ca pourrait etre de tous les empiler et j'aurais pu mettre plus de blocs.
    C'est pour cela que je me disais que j'allais devoir parser plusieurs fois mon arbre le transformer puis le reparser jusqu'à ce que j'atteigne mon etat final desiré.

    J'espère avoir été le plus clair possible même si j'ai peur que non mais c'est parce que je travaille tellement sur ce projet que je ne me rend surement pas compte que j'oublie de dire certains détails qui font toute la différence. Voilà merci d'avance pour votre aide.

  7. #7
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    comment implementes tu ces regles? en particulier "ON" et "CLEAR"
    les blocks j ai vu ...
    en tout cas il est clair que si se sont des evenements qui se succedent, il faudra le faire en plusieurs fois

  8. #8
    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 j'ai bien saisi, tu veux créer un générateur de système expert en XSLT ? Je ne suis pas sûr que ce soit le langage idéal pour cela...

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/08/2007, 13h25
  2. [XSLT] requete dans un fichier xml
    Par tourearc dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/06/2007, 11h21
  3. [XSLT] Restructuration d'un fichier XML
    Par biggione dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 13/06/2007, 10h21
  4. [XSLT] transfo d'un fichier XML en plusieurs fichiers XML
    Par doudou_rennes dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 28/11/2006, 12h01
  5. [XSLT] Comment lier un fichier XML et XSLT
    Par bitou dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 16/08/2006, 15h35

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