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

Format d'échange (XML, JSON...) Java Discussion :

Transformation XML vers XSD


Sujet :

Format d'échange (XML, JSON...) Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 8
    Par défaut Transformation XML vers XSD
    Bonsoir
    voilà je voudrais faire une transformation d'un fichier XML en XSD. Je sais que ça apparaît abhérent mais au fait il se trouve que dans mon fichier XML il ya toute la description du schema XML correspondant. Pour être plus exhaustive voilà mon fichier xml par exemple:

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <schema>
        <element>
           <name>EXEMPLE</name>
          <complexType>
       <sequence>
        <element>
            <name>TEST1</name>
            <type>xsd:string</type>
            <minOccurs>1</minOccurs>
            <maxOccurs>1</maxOccurs>
        </element>
        <element>
            <name>TEST2</name>
            <type>xsd:string</type>
            <minOccurs>1</minOccurs>
            <maxOccurs>1</maxOccurs>
        </element>
        <element>
            <name>TEST3</name>
            <type>xsd:string</type>
            <minOccurs>0</minOccurs>
            <maxOccurs>unbounded</maxOccurs>
        </element>
        <element>
            <name>TEST4</name>
            <type>xsd:string</type>
            <minOccurs>1</minOccurs>
            <maxOccurs>unbounded</maxOccurs>
        </element>
    </sequence>
    </complexType>
    </element>
    </schema>
    et je devrais finir par avoir un fichier XSD ressemblant à ça :

    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
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="EXEMPLE">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="TEST1" type="xsd:string">
     
    </xsd:element>
    <xsd:element name="TEST2" type="xsd:string">
     
    </xsd:element>
    <xsd:element maxOccurs="unbounded" name="TEST3" type="xsd:string">
     
    </xsd:element>
    <xsd:element maxOccurs="unbounded" name="TEST4" type="xsd:string">
     
    </xsd:element>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    </xsd:schema>
    J'arrive à lire mon fichier xml et à l'analyser grâce à SAX, mais là où j'ai une difficulté c'est comment construire le XSD correspondant.
    Je vous donne ici mon fichier java. Vous constaterez que j'arrive bien à lire mon fichier xml puisque j'arrive à l'afficher mais pour l'instant j'ai réussi à reconstituer juste l'en-tête du xsd que j'arrive à afficher aussi:

    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    package tests; 
    import java.io.*;
     
    import javax.xml.parsers.SAXParser;
    import javax.xml.parsers.SAXParserFactory;
     
    import org.jdom.*;
    import org.jdom.output.*;
    import org.xml.sax.*;
    import org.xml.sax.helpers.DefaultHandler;
     
     
     
    public class XlmXsd
    {
    public static void main(String[] args)throws IOException {
    	//analyse sax
    	//Si l'utilisateur a oublié de passer
        //le nom du fichier XML en parametre => erreur
        if (args.length != 1) {
            System.err.println("Usage: AnalyseSAX fichierSourceXML");
            System.exit (1);
        }
        //on lance l'analyseur avec le fichier XML en parametre
        DefaultHandler handler = new AnalyseSAX();
        SAXParserFactory factory = SAXParserFactory.newInstance();
        try {
            SAXParser saxParser = factory.newSAXParser();
            saxParser.parse( new File(args[0]), handler );
        } catch (Throwable t) {
            //Si on a une erreur pendant l'analyse
            //t.printStackTrace ();
         //   System.exit (1);
        }
       // System.exit (0);   
     
    //	Crée un espace de nom avec préfixe
    	Namespace espaceNomctg = Namespace.getNamespace("xsd", 
    "http://www.w3.org/2001/XMLSchema");
    	XlmXsd tuto = new XlmXsd();
    	Element racine = new Element("schema",espaceNomctg);
    	Document document = new Document(racine);
     
    	// si on veut afficher le fichier XML sur écran
    	try {
    		XMLOutputter sortie = new XMLOutputter(" ", true);
    		sortie.output(document, System.out);
    		}
    		catch (java.io.IOException e){
    		e.printStackTrace();
    		}
    	}
     
    public void error(SAXParseException e) throws SAXParseException{
        throw e;
    }
     
     
    public void ajoutElement(Element titre, String element, String texte) {
    	Element elementAjoute = new Element(element);
    	elementAjoute.setText(texte);
    	titre.addContent(elementAjoute);
    	}
     
    }
    Merci d'avance

    Sabrina

  2. #2
    Membre éprouvé Avatar de manube
    Homme Profil pro
    Responsable sécurité
    Inscrit en
    Mai 2004
    Messages
    180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : Responsable sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 180
    Par défaut
    Salut, voilà 2 liens qui créent des XML schema a partir d'un XML mais pour l'automatisation via Java je ne peux pas t'aider. Donc au cas ou (pour du one shot):
    http://www.hitsw.com/xml_utilites/
    http://apps.gotdotnet.com/xmltools/x...e/Default.aspx
    Bon courage
    Manu

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 8
    Par défaut
    merci manu d'avoir répondu aussi vite. J'ai regardé mais malheureusement ça ne donne pas le résultat que j'attends

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

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

    as-tu envisagé l'utilisation de XSLT ? C'est exactement dans ses cordes.
    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

Discussions similaires

  1. Transformation XML vers Prolog
    Par hanounbk dans le forum Prolog
    Réponses: 13
    Dernier message: 02/05/2013, 18h24
  2. [XSLT] transformation xml vers fichier .text !
    Par kader78190 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 03/11/2006, 12h45
  3. [XSLT] processeur pour une transformation XML vers XML
    Par fanette dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 15/06/2006, 12h46
  4. [XSLT] transformation xml vers xml
    Par nemya dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 22/02/2006, 11h02
  5. Transformation XML vers XML
    Par runabout dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 08/02/2006, 16h48

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