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

Valider XML Discussion :

[XSD] validation xml en java avec import


Sujet :

Valider XML

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Points : 56
    Points
    56
    Par défaut [XSD] validation xml en java avec import
    Voila j'ai un petit souci j'ai des xml avec lequelles j'ai créer un xml schéma et donc je voudrais le valider dans un programme java. Mais j'ai cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    org.xml.sax.SAXParseException: src-resolve: Cannot resolve the name 'sign:SignatureType' to a(n) 'type definition' component.
    Je pense que mon xsd n'est pas tout à fait correct une partie du fichier xml à validé est défini par le W3C donc je fais un import de ce schéma mais j'avoue que je vois pas l'erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    	xmlns:sign="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="unqualified">
    	<xs:import namespace="http://www.w3.org/2000/09/xmldsig#"
    		schemaLocation="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd" />
    ...
    	<xs:element name="Signature" type="sign:SignatureType" />
    ...
            <xs:element ref="Signature"/>
    ...
    quelqu'un aurait une idée je galère depuis 3 jours après ça
    Merci d'avance

  2. #2
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Points : 56
    Points
    56
    Par défaut
    Sinon quelqu'un connaît un moyen de tester mon xsd sans code java?

  3. #3
    Membre confirmé
    Inscrit en
    Juillet 2006
    Messages
    534
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 534
    Points : 562
    Points
    562
    Par défaut
    Bonjour,

    Comment tu crées ton XSD? À la main? Il faut essayer de utiliser un éditeur comme Oxygen, Visual Studio tu auras moins d'erreurs sur ton XSD.

    Dans le message d'erreur,
    org.xml.sax.SAXParseException: src-resolve: Cannot resolve the name 'sign:SignatureType' to a(n) 'type definition' component.
    ton namespace sign n'est pas défini dans ton code ci-après:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    	xmlns:sign="http://www.w3.org/2000/09/xmldsig#" elementFormDefault="unqualified">
    	<xs:import namespace="http://www.w3.org/2000/09/xmldsig#"
    		schemaLocation="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd" />
    ...
    	<xs:element name="Signature" type="sign:SignatureType" />
    ...
            <xs:element ref="Signature"/>
    ...
    

  4. #4
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Points : 56
    Points
    56
    Par défaut
    Je vais essayé oxygen.

    je vais faire mon grand connaisseur du xml schema mais quand tu dis que je n'est pas définit mon namespace je croyais que c'était cette ligne qui le déclarait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlns:sign="http://www.w3.org/2000/09/xmldsig#"
    sinon alors comment il faut que je fasse?

  5. #5
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Points : 56
    Points
    56
    Par défaut
    Effectivement oxygen me met une erreur comme quoi le namesapce sign n'est pas définit mais je ne vois toujours pas comment le définir, pourrais tu me donner la solution?
    et pour l'import j'ai un warning apparemment il n'arrive pas à lire l'url que j'ai mis alors quel est accessible avec mozilla.

    Je comprend rien
    Alors personnes peut m'aider!

  6. #6
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Points : 56
    Points
    56
    Par défaut
    Bien donc oxygen ne trouve plus d'erreurs j'ai juste télécharger le xsd du w3c pour l'avoir en local et viré la déclaration de l'élément de Signature qui existait déjà. Mais java me trouve toujours des erreurs la même
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cvc-complex-type.2.4.d: Invalid content was found starting with element 'Signature'. No child element is expected at this point.
    src-resolve: Cannot resolve the name 'ds:Signature' to a(n) 'element declaration' component.
    voici mon code :
    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
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    dbf.setIgnoringComments(true);
    dbf.setNamespaceAware(true);
    dbf.setValidating(true); 
    dbf.setExpandEntityReferences(true);
    dbf.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaLanguage", "http://www.w3.org/2001/XMLSchema");
    dbf.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaSource", new File("fichier.xsd")); 
     
    DocumentBuilder db = dbf.newDocumentBuilder();
    db.setErrorHandler(new ErrorHandler() {
    	public void fatalError(SAXParseException e) {
    		System.out.println("Erreur de validation XSD - Erreur fatal");
    		e.printStackTrace();
    	}
    	public void error(SAXParseException e) {
    		System.out.println("Erreur de validation XSD - Erreur");
    		e.printStackTrace();
    	}
    	public void warning(SAXParseException e) {
    		System.out.println("Erreur de validation XSD - Warning");
    		e.printStackTrace();
    	}
    });
    Document doc = db.parse(new File("fichier.xml"));

  7. #7
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 86
    Points : 56
    Points
    56
    Par défaut
    solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dbf.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaSource", new File("fichier.xsd"));
    changer en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dbf.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaSource", "file:fichier.xsd");

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

Discussions similaires

  1. [StAX] charger un fichier xml en java avec StAX
    Par fruwen7 dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 02/07/2012, 20h07
  2. XML vers java avec XSLT ?
    Par anime dans le forum XML/XSL et SOAP
    Réponses: 18
    Dernier message: 28/04/2011, 20h24
  3. [XSD] [JAXB] Génération d'un schema xml en java avec netbeans
    Par salmoucha10 dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 22/03/2011, 11h23
  4. Validation XML en Java - Problème de Namespace
    Par lezert dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 10/02/2011, 08h07
  5. sérialisation XML en java Avec des Matrice ArrayList
    Par bilred dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 16/04/2009, 15h55

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