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

XML/XSL et SOAP Discussion :

[XML] equivalent d'un ssi en xml ?


Sujet :

XML/XSL et SOAP

  1. #1
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut [XML] equivalent d'un ssi en xml ?
    Salut,


    je me demandais juste s'il y avait moyen de définir un noeud d'un fichier xml quelconque comme étant le contenu d'un autre fichier dans le même répertoire...


    ça m'arrangerait beaucoup de ne pas faire trop de copier/coller... et de ne pas me retrouver avec un fichier de 20000 lignes
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

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

    le plus proche équivalent d'un SSI qu'on puisse trouver en XML est XInclude. La difficulté est de trouver un parseur qui l'implémente, à ma connaissance il existe au moins libxml et Xerces.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par GrandFather
    Salut,

    le plus proche équivalent d'un SSI qu'on puisse trouver en XML est XInclude. La difficulté est de trouver un parseur qui l'implémente, à ma connaissance il existe au moins libxml et Xerces.

    et lequel est utilisé dans le kit ?


    EDIT... ben non dommage
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  4. #4
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    salut,


    je viens de faire le test avec xerces...

    Code perl : 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
    #! /usr/bin/perl -w
    #vim:syntax=perl
     
    if ($ARGV[1] eq undef)
    {
    	print "usage: generate_from_xinclude.pl <inputfile> <outputfile>\n\n";
    	die();
    }
     
    ($input_file,$output_file)  = @ARGV;
     
    use XML::Xerces;
     
    my $parser = new XML::Xerces::XercesDOMParser ();
    $parser->parse ($input_file);
    my $doc = $parser->getDocument ();
     
    my $target = XML::Xerces::MemBufFormatTarget->new();
    my $impl = XML::Xerces::DOMImplementationRegistry::getDOMImplementation('LS');
    my $writer = $impl->createDOMWriter();
    $writer->writeNode ($target,$doc);
     
    my $output = $target->getRawBuffer();
     
    open FILE, "> $output_file";
    print FILE $output;

    et ça me renvoie mon fichier tel qu'il était (sans l'inclusion) avec parse="text", et aussi sans...
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  5. #5
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    vraiment personne
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  6. #6
    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
    Je dirais que c'est plutôt mal barré : Xerces-P est un wrapper autour de Xerces-C, et il me semble que XInclude n'est implémenté que dans Xerces-Java...
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  7. #7
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par GrandFather
    Je dirais que c'est plutôt mal barré : Xerces-P est un wrapper autour de Xerces-C, et il me semble que XInclude n'est implémenté que dans Xerces-Java...

    ok... je suis pas contre java, as-tu un exemple ?
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  8. #8
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par gorgonite
    ok... je suis pas contre java, as-tu un exemple ?

    ben je viens de tester... mais ce n'est pas concluant

    Code java : 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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    package parser;
     
    import java.io.*;
    import org.w3c.dom.*;
    import javax.xml.parsers.*;
    import javax.xml.transform.stream.*;
    import com.sun.org.apache.xml.internal.serialize.*;
    import com.sun.org.apache.xerces.internal.parsers.*;
    import com.sun.org.apache.xerces.internal.xinclude.*;
     
    public class Parser {
            public static void main(String[] args) {
                    try
                    {
                            //get the factory
                            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
     
                            //Using factory get an instance of document builder
                            DocumentBuilder db = dbf.newDocumentBuilder();
                            System.out.println(db.isXIncludeAware());
     
                            //parse using builder to get DOM representation of the XML file
                            Document dom = db.parse("document.xml");
     
                            FileInputStream file = new FileInputStream("document.xml");
                            StreamSource stream = new StreamSource();
                            stream.setInputStream(file);
     
                            //print
                            OutputFormat format = new OutputFormat(dom);
                            format.setIndenting(true);
     
                            //to generate output to console use this serializer
                            //XMLSerializer serializer = new XMLSerializer(System.out, format);
     
                            //to generate a file output use fileoutputstream instead of system.out
                            XMLSerializer serializer = new XMLSerializer(
                                            new FileOutputStream(new File("resultat.xml")), format);
     
                            serializer.serialize(dom);
     
                    } catch(Exception ex) {
                        ex.printStackTrace();
                    } 
            }
    }
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  9. #9
    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
    Les directives XInclude, par défaut, ne sont pas traitées. Il faut que tu les actives :
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    dbf.setFeature("http://apache.org/xml/features/xinclude", true);
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  10. #10
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    pas cool...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    javax.xml.parsers.ParserConfigurationException: jaxp_feature_not_supported: Feature "http://apache.org/xml/features/xinclude" is not supported.
            at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl.setFeature(DocumentBuilderFactoryImpl.java:207)
            at Parser.main(Parser.java:15)
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  11. #11
    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
    On va y arriver...

    XInclude n'est implémenté dans Xerces que depuis la version 2.7.0, à priori tu utilises une version plus ancienne.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  12. #12
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    j'ai trouvé cela... mais ça marche pas non plus (mais sans erreur)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	dbf.setXIncludeAware(true);
    comment peut-on avoir la version de xerces ?
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  13. #13
    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
    Citation Envoyé par gorgonite
    comment peut-on avoir la version de xerces ?
    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    java org.apache.xerces.impl.Version
    Dès que tu auras une version correcte de Xerces, il faut que tu utilises setFeature() pour activer XInclude.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  14. #14
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    ben voilà...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $Id: Version.java,v 1.9 2004/02/24 23:03:46 mrglavas Exp $

    c'est celle de la jdk v1.5.0.7

    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  15. #15
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par gorgonite
    c'est celle de la jdk v1.5.0.7


    je viens de tester avec la jdk 1.5.0_10
    et c'est la même version de xerces


    comment dois-je faire ?
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  16. #16
    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
    Et ben il faut que tu mettes à jour ta version de Xerces...

    La procédure d'installation est un peu spéciale dans le sens où Xerces faisant partie du JDK, une installation classique avec mise à jour du Classpath ne fonctionnera pas, ce seront toujours les classes du JDK qui seront chargées prioritairement.

    Il faut le mécanisme de remplacement du JDK (Endorsed Standard Override Mechanism) : tu crées un répertoire <java-home>/lib/endorsed (<java-home> est le répertoire d'installation du JRE), et tu y places xml-apis.jar et xercesImpl.jar.

    Tu testes à nouveau la version de Xerces pour être sûr que tout est OK, et puis ça devrait rouler.
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  17. #17
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    a priori j'ai fait cela avec la xerces v2.9, mais ça ne marche pas... ça me donne toujours la même version v2.6.2


    test effectué avec jdk v1.5.0_10 et jdk v1.6.0
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  18. #18
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par gorgonite
    a priori j'ai fait cela avec la xerces v2.9, mais ça ne marche pas... ça me donne toujours la même version v2.6.2


    test effectué avec jdk v1.5.0_10 et jdk v1.6.0

    vraiment personne...
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  19. #19
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Points : 3 736
    Points
    3 736
    Par défaut
    a mon avis (j'essaye de tester des que j'ai le temps), il faut utiliser la méthode (java 6 only)

    DocumentBuilderFactory.newInstance("org.apache.xerces.jaxp.DocumentBuilderFactoryImpl", , classLoader);
    ca devrait tourner sans problème

    j'essaye de tester ce soir

  20. #20
    Rédacteur
    Avatar de lunatix
    Homme Profil pro
    Architecte technique
    Inscrit en
    Novembre 2002
    Messages
    1 960
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Architecte technique

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 960
    Points : 3 736
    Points
    3 736
    Par défaut
    si tu colles bien les libs de xerces last version (perso une 2.9 toute fraiche sortie du four) dans le classpath

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    /*
     * Parser.java
     *
     * Created on 28 décembre 2006, 23:19
     */
    package parser;
    import java.io.IOException;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;
     
    import org.w3c.dom.Document;
    import org.xml.sax.SAXException;
     
    /**
     *
     * @author lunatix
     */
    public class Parser {
     
        DocumentBuilderFactory dbf = null;
     
        DocumentBuilder db = null;
     
        /** Creates a new instance of Main */
        public Parser() {
            dbf = DocumentBuilderFactory.newInstance("org.apache.xerces.jaxp.DocumentBuilderFactoryImpl", this.getClass().getClassLoader());
            dbf.setXIncludeAware(true);
     
            try {
                db = dbf.newDocumentBuilder();
            } catch (ParserConfigurationException ex) {
                ex.printStackTrace();
            }   
        }
     
        public void parse(String fileName) throws SAXException, IOException {
     
            Document dom = db.parse("document.xml");
     
        }
     
     
     
        /**
         * @param args the command line arguments
         */
        public static void main(String[] args) throws Exception {
     
        Parser parser = new Parser();
        System.out.println(parser.db.isXIncludeAware());
        parser.parse("document.xml");
     
        }
    }
    marche tres bien (sous java 6, la methode getInstance() avec les parametres est nouvelle)... bon, pour la suite, je sais pas trop ce que tu voulais faire, mais tu peux t'inspirer de Xsl2Dom.html

    (note, j'ai pas testé avec un fichier xml qui va bien hein !, juste verifié que c'est bien a true )

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [SSIS] [2K8] XML complex type
    Par Ptit_Dje dans le forum SSIS
    Réponses: 3
    Dernier message: 03/09/2009, 19h33
  2. Réponses: 6
    Dernier message: 06/08/2009, 14h18
  3. [XML] equivalence de code ? et *
    Par billynirvana dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 04/04/2006, 18h05
  4. [XML] Equivalent Height en XML?
    Par Turlututuchapopointu dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 01/03/2006, 12h17
  5. [XSD] equivalent de (x1|x2)* en XML Schema
    Par tetram51 dans le forum Valider
    Réponses: 4
    Dernier message: 16/06/2005, 16h03

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