Fusionner deux fichiers XML avec choix des attributs

Fusionner deux fichiers XML avec choix des attributs - XML/XSL - Programmation

Marsh Posté le 11-09-2012 à 17:10:31    

Bonjour à tous,
 
J'espère que quelqu'un pourra m'aider, j'ai un problème un peu particulier...
 
Je souhaite fusionner deux fichiers XML, formés conformément à un même schéma donné, afin d'en créer un troisième, qui lui aussi respecte le même schéma, mais en pouvant déterminer quelles données seront prises dans quels fichiers. Je m'explique :
J'ai le schéma suivant :  

Citation :

<catalogue>
     <livres>
          <livre>
               <auteur>
                    <nom></nom>
                    <dateNaissance></dateNaissance>
               <titre></titre>
               <prix></prix>
          </livre>
          ....
     </livres>
</catalogue>


 
Admettons que j'ai une IHM qui me permet de créer des livres, et que je ne veux pas que l'on puisse choisir le prix du livre par exemple (je sais c'est absurde mais dans mon cas, le schéma est beaucoup beaucoup plus complexe et j'ai de nombreux paramètres que je ne souhaite pas saisir dans l'IHM).
Mon IHM crée un fichier fichier1.xml qui respecte le schéma ci-dessus et qui contient les données entrées par l'utilisateur.
J'ai un autre fichier "fichier2.xml" qui lui contient les données par défaut (auteur = inconnu, prix = 15€ ...).
Je souhaite fusionner les fichiers fichier1.xml et fichier2.xml pour créer un fichier fichier3.xml dans lequel on obtiendra les données entrées par l'utilisateur, le prix de 15 € (puisqu'il n'est pas configurable dans l'ihm) et les données par défaut si l'utilisateur ne renseigne pas les caractéristiques (auteur Inconnu par exemple).  
Je sais que vous me direz de coder cela au niveau de l'IHM et d'insérer des valeurs par défaut à ce niveau, mais comme je l'ai dis, mon projet réel est plus complexe et je ne peux pas faire cela.
 
Quelqu'un peut-il m'aider à réaliser ce miracle ?  
Je me suis orienté vers le XSL pour le moment mais je ne suis pas sur qu'il soit possible de faire des choses aussi compliquées avec...
Avez-vous des idées de langage, logiciels pour développer cela ?
PS : mon IHM est codée par moi-même, en Java, si cela peut vous aider !
 
Merci beaucoup beaucoup beaucoup d'avance !!

Reply

Marsh Posté le 11-09-2012 à 17:10:31   

Reply

Marsh Posté le 11-09-2012 à 20:47:57    

Tu as quel volume de données?
I.e. On peut mettre tes deux fichiers en mémoire comme des arbres DOM et bosser sur les arbres, ou c'est trop gros?
 
Sinon, XSLT est pas une mauvaise approche en effet.  
Je te conseille de regarder du côté des techniques du chapitre "Merging Documents with Identical Schemas" du XSLT Cookbook de Sal Mangano publié par O'Reilly
A+,


Message édité par gilou le 11-09-2012 à 20:58:15

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 11-09-2012 à 21:45:51    

bonjour :o

 

C'est une problématique dans laquelle travaille actuellement mon employeur, a savoir, d'une manière générale, le diff/merge de modèle, y compris par matching automatique d'éléments similaires.

 

On ne travaille pas au niveau XML, mais plutot au niveau EMF, mais, ayant ton schema, tu peut remonter tes fichiers XML comme un jeu de modèles EMF.

 

Ensuite, l'utilisation d'un outil de diff/merge, éventuellement en travaillant de manière plus fine sur les stratégies de merge automatique en implémentant un merger pour le travail automatisable, permettra de faire des choses tel que comment choisir les éléments à merger.

 

Voici notre outil de comparaison/merge en tout cas.  
http://www.eclipse.org/emf/compare/


Message édité par kadreg le 11-09-2012 à 21:49:05

---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 12-09-2012 à 11:31:21    

Citation :

a savoir, d'une manière générale, le diff/merge de modèle

Pas de modèle, unique dans son cas, mais d'instance, si j'ai bien compris sa problématique.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 12-09-2012 à 14:16:22    

gilou a écrit :

Citation :

a savoir, d'une manière générale, le diff/merge de modèle

Pas de modèle, unique dans son cas, mais d'instance, si j'ai bien compris sa problématique.
A+,


 
j'suis décalé d'un cran par rapport à toi sur le vocabulaire. Pour moi, un modèle est une instance de métamodèle qui est une expression de structure, donc du XSD. Mais on est d'accord :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 12-09-2012 à 14:21:44    

Certes, mais dans ce cas précis, il parle d'instances d'un modèle XSD, ie du data encodé en XML, qui ne sont pas elles mêmes des modèles :p
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 12-09-2012 à 23:53:35    

Salut,
 
Est-ce qu'une solution comme celle-ci peut te convenir http://stackoverflow.com/questions [...] using-xslt

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed