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 :

Conversion de deux formats de fichier différents.


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre habitué Avatar de ziad.shady
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 212
    Points : 139
    Points
    139
    Par défaut Conversion de deux formats de fichier différents.
    Bonjour à tous,

    Je voudrais savoir s'il y a un moyen permettant de convertir (parser) un fichier en format XML en un format XFA (Format utilisé par adobe livecycle).

    Je vous remercie d'avance.

    N.B. Si ce forum n'est pas adapté à ce genre de sujet, veuillez me le signaler s'il vous plaît.

  2. #2
    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
    Vu que c'est un format lui même XML, oui c'est possible.

  3. #3
    Membre habitué Avatar de ziad.shady
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 212
    Points : 139
    Points
    139
    Par défaut
    Bonjour,

    Merci Morbo pour ta réponse, néanmoins j'ai besoin de quelques bonnes directives pour mieux faire cela. Notamment je voudrai savoir si cela doit être fait en utilisant un parser (dom4j c'est le seul que je connais) ou bien cela peut être fait en utilisant XSLT. De plus, à votre connaissance est ce que adobe a prévu de fournir une librairie permettant de faire cela?

    Merci encore une fois.

  4. #4
    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
    Utilsé Dom va être compliqué je pense, encore que tout dépende des différences de syntaxes entre les deux fichiers.
    XSLT est plutot fait pour ce type de cas mais cela exige de bien connaitre les deux formats de fichiers XML

  5. #5
    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
    J'ai pas trouvé d'info sur google concernant XFA à part que c'est un format XML. Mais c'est sûr que XSL-T est le plus adapté à ce genre de tâches.

  6. #6
    Membre habitué Avatar de ziad.shady
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 212
    Points : 139
    Points
    139
    Par défaut
    Merci Morbo et Erwy pour vos réponses.

    Le moyen le plus simple était pour moi, c'est d'utiliser le dom4j, car justement Erwy le problème c'est que je ne connais pas le format de sortie xfa.

    Voici un bout de code susceptible d'aider les internautes ayant la même problématique.
    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
    public void parcourir(Node node) {
            // traiter le noeud ici
            monTraitement(node);
     
            // si pas de fils.
            if (!node.hasChildNodes()) {
                return;
            }
     
            NodeList nodeList = node.getChildNodes();
            for (int i = 0; i < nodeList.getLength(); i++) {
                Node child = nodeList.item(i);
                // parcours de chaque fils
                parcours(child);
            }
        }
    Bonne jounrnée à tous.

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 563
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 563
    Points : 21 627
    Points
    21 627
    Par défaut
    Citation Envoyé par ziad.shady Voir le message
    Voici un bout de code susceptible d'aider les internautes ayant la même problématique.
    Hum. Je pense que la plupart des internautes sauront résoudre la problématique "parcourir un fichier XML avec JDOM pour appliquer une méthode traiter() à chaque nœud" rien qu'en lisant les tutoriels.

  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
    ziad.shady, si tu ne connais pas la structure exacte d'un XFA, c'est tout simplement impossible.
    Que ce soit par jdom ou xsl-t, ce sont des "langages" de transformation généralistes XML qui ignorent tout de la structure que peut avoir un XFA.

  9. #9
    Membre habitué Avatar de ziad.shady
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Mai 2008
    Messages : 212
    Points : 139
    Points
    139
    Par défaut
    Bonjour,
    Désolé pour cette absence, j'étais un peu débordé de travail.
    Citation Envoyé par thelvin Voir le message
    Hum. Je pense que la plupart des internautes sauront résoudre la problématique "parcourir un fichier XML avec JDOM pour appliquer une méthode traiter() à chaque nœud" rien qu'en lisant les tutoriels.
    Dans les tutoriaux, je pense que non, ils en trouveront pas, par contre s'ils consultent la javadoc, je pense que oui. Si tu connais un tutoriel qui est bien foutu, je te prie de me l'indiquer. Merci d'avance.

    @Morbo : la structure de l'xfa je la connais mais pas en entier, parce que je ne sais pas ce que mon composant WYSIWYG va me générer à chaque fois comme balises.

    Voici un peu en détail ce qui était fait :
    1) La méthode du parcours de l'arbre est indiquée tout en haut.
    2) La méthode monTraitement détermine les noeuds que je vais transformer, car j'ai besoin de transformer que quelques noeuds non compréhensibles par xfa. Je prends un seul exemple celui de la balise <strong> que je dois la remplacer par la balise <b>. Donc la description de la méthode monTraitement qui est utilisée dans la méthode du parcours tout en haut est celle-ci :
    private void monTraitement (Node node) {
    if ("strong".equalsIgnoreCase(node.getNodeName()) {
    traiterStrongNode(node);
    } else () {
    // Les autres cas à traiter...
    }
    3) La méthode traiterStrongNode contient la transformation, voici sa description :
    private void traiterStrongNode (Node node) {
    // Récupération du document.
    Document rootDoc = node.getOwnerDocument();

    // création d'un nouveau noeud <b>
    Element newNode = rootDoc.createElement("b");

    // récupération des attributs du noeud courant pour les réattribuer au nouveau noeud.
    if (node.hasAttributes()) {
    NamedNodeMap nodeMap = node.getAttributes();
    for (int i = 0; i < nodeMap.getLength(); i++) {
    Attr attr = (Attr) nodeMap.item(i);
    newNode.setAttributeNode(attr);
    }
    }

    // Récupération du noeud parent, pour lui associer le nouveau noeud.
    Node parentNode = node.getParentNode();
    // Remplacer le noeud existant <strong> avec <b>
    parentNode.replaceChild(newNode, node);
    }
    N.B : C'est l'api de dom4j qui a était utilisée. Pour ceux qui veulent utiliser l'api jdom, ils doivent s'arranger pour réaffecter les child du noeud node au nouveau noeud newNode et puis de supprimer le noeud node car la méthode replaceChild n'existe pas.

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

Discussions similaires

  1. Traiter plusiers formats de fichiers différents
    Par bossun dans le forum Développement Windows
    Réponses: 1
    Dernier message: 19/07/2010, 22h11
  2. Transfert de Fichier en deux systemes d'exploitation différents
    Par ninsekh dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 29/04/2008, 16h33
  3. Ecrire dans deux fichiers différent
    Par Diablo_22 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 09/08/2007, 16h11
  4. [IOException] Ecriture dans deux fichiers différents
    Par arkheron dans le forum Langage
    Réponses: 3
    Dernier message: 04/06/2007, 12h00
  5. [date] Comparer deux formats différents
    Par terziann dans le forum Requêtes
    Réponses: 17
    Dernier message: 21/07/2003, 15h21

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