Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
861 connectés 

  FORUM HardWare.fr
  Programmation
  XML/XSL

  [XSD] targetNameSpace - erreur à la verification

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[XSD] targetNameSpace - erreur à la verification

n°1771319
zhamos_kh
Posté le 08-08-2008 à 16:50:45  profilanswer
 

Bonjour
 
J'ai un problème avec un xsd. J'ai un code java vérifiant si un xml est conforme à une xsd
 

Code :
  1. try {
  2.        DocumentBuilderFactory fabriqueAnalyseur =
  3.                               DocumentBuilderFactory.newInstance();
  4.        DocumentBuilder analyseur = fabriqueAnalyseur.newDocumentBuilder();
  5.        Document document = analyseur.parse(new File("C:/Documents and Settings/jsomsanith/Bureau/machin.xml" ));
  6.        SchemaFactory fabrique = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
  7.        fabrique.setErrorHandler(new ErrorHandler(){
  8.         public void fatalError( SAXParseException e ) throws SAXException {
  9.             System.out.println("ERREUR FATALE" );
  10.             e.printStackTrace();
  11.         }
  12.         public void error( SAXParseException e ) throws SAXException {
  13.             System.out.println("ERREUR" );
  14.             e.printStackTrace();
  15.         }
  16.         public void warning( SAXParseException e ) throws SAXException {
  17.             System.out.println("AVERTISSEMENT" );
  18.             e.printStackTrace();
  19.         }
  20.        });
  21.        InputSource sourceEntree = new InputSource("C:/Documents and Settings/jsomsanith/Bureau/machin.xsd" );
  22.        SAXSource sourceXSD = new SAXSource(sourceEntree);
  23.        Schema schema = fabrique.newSchema(sourceXSD);
  24.        Validator validateur = schema.newValidator();
  25.        validateur.validate(new DOMSource(document));
  26.      }
  27.      catch (SAXException e) {
  28.        e.printStackTrace();
  29.      }
  30.      catch (ParserConfigurationException e) {
  31.        e.printStackTrace();
  32.      }
  33.      catch (IOException e) {
  34.        e.printStackTrace();
  35.      }


 
Au lancement, j'ai cette erreur:
 

Code :
  1. ERREUR :  'cvc-elt.1: Cannot find the declaration of element 'Truc'.'
  2. org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'Truc'.
  3. at com.sun.org.apache.xerces.internal.jaxp.validation.Util.toSAXParseException(Util.java:109)
  4. at com.sun.org.apache.xerces.internal.jaxp.validation.ErrorHandlerAdaptor.error(ErrorHandlerAdaptor.java:104)
  5. at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:382)
  6. at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:316)
  7. at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:1944)
  8. at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:705)
  9. at com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorHandlerImpl.startElement(ValidatorHandlerImpl.java:335)
  10. at com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.closeStartTag(ToXMLSAXHandler.java:205)
  11. at com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.characters(ToXMLSAXHandler.java:524)
  12. at com.sun.org.apache.xml.internal.serializer.ToXMLSAXHandler.characters(ToXMLSAXHandler.java:467)
  13. at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:229)
  14. at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:215)
  15. at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:121)
  16. at com.sun.org.apache.xalan.internal.xsltc.trax.DOM2TO.parse(DOM2TO.java:85)
  17. at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transformIdentity(TransformerImpl.java:615)
  18. at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:661)
  19. at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:300)
  20. at com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorImpl.process(ValidatorImpl.java:220)
  21. at com.sun.org.apache.xerces.internal.jaxp.validation.ValidatorImpl.validate(ValidatorImpl.java:141)
  22. at javax.xml.validation.Validator.validate(Validator.java:82)
  23. at Test.main(Test.java:216)


 
Lorsque je retire targetNamespace, ça marche.... Or je suis obligé de respecter la xsd avec le targetNameSpace.
 

Code :
  1. <xs:schema xmlns:mpr="..." xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:dico="..." xmlns:ns1="..." targetNamespace="..." elementFormDefault="unqualified" attributeFormDefault="unqualified" version="0.1">


(Les "..." sont des textes que j'ai remplacé par des ... pour le forum)
 
Quelqu'un aurait une explication et/ou une solution?
 
Merci d'avance


Message édité par zhamos_kh le 08-08-2008 à 16:52:58
mood
Publicité
Posté le 08-08-2008 à 16:50:45  profilanswer
 

n°1771838
zhamos_kh
Posté le 11-08-2008 à 10:43:02  profilanswer
 

up

n°1771965
MagicBuzz
Posté le 11-08-2008 à 14:54:03  profilanswer
 

si au moins on savais à quoi ressemble ton XML et ce que c'est que ce "Truc" qui fait tout planter...
 
clairement, ton XML utilise ne balise "Truc" ou un attribut "Truc" ou je ne sais quel autre truc, et il n'est pas correctement défini dans ta XSD. Problème de préfixe peut-être ?


Message édité par MagicBuzz le 11-08-2008 à 14:54:54
n°1772113
zhamos_kh
Posté le 11-08-2008 à 18:01:04  profilanswer
 

Salut
 
Mon xml est simple:

Code :
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <Truc>
  3. <Type>T</Type>
  4. </Truc>


 
(J'ai changé le nom du tag qui n'est pas 'Truc' ni dans la xsd, ni dans l'xml mais je suis sur qu'ils correspondent, j'ai fais du copier/coller du nom)
 
D'après le message, il n'arrive pas à trouver la definition du 1er tag alors qu'il est bien défini:

Code :
  1. <xs:element name="Truc">
  2.  <xs:complexType>
  3.   <xs:complexContent>
  4.    <xs:extension base="machin1">
  5.     <xs:sequence minOccurs="0">
  6.      <xs:element name="machin2" type="machin3" minOccurs="0"/>
  7.     </xs:sequence>
  8.    </xs:extension>
  9.   </xs:complexContent>
  10.  </xs:complexType>
  11. </xs:element>


 
Bref, il est certain que la xsd est bonne (testé par des personnes tiers)
Qu'est-ce que tu appelles "Problème de préfixe"?


Message édité par zhamos_kh le 11-08-2008 à 18:02:40
n°1772150
MagicBuzz
Posté le 11-08-2008 à 19:18:15  profilanswer
 

<machin:Truc>
 
c'est ça que j'appelle un préfixe. Tu lui a collé un préfix à la déclaration à ton XSD ? parceque si t'en indique pas, de mémoire il y en a un qui est créé automatiquement, je sais plus du tout quoi par contre (voir la RFC du XSD) et là à aucun endroit dans ton code je vois que tu lui dit de ne pas préfixer les éléments du schéma de ton XSD.
 
si tu colles ton XSD dans la définition du fichier XML plutôt que de passer par une verrue en Java, ça donne quoi ?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  [XSD] targetNameSpace - erreur à la verification

 

Sujets relatifs
Cygwin makefile erreur[Resolu]OpenSSL erreur bizarre...
Erreur Mysql et jointureErreur List<String[]> et validation du code dans une JSP ?
Erreur avec strcmpQuestion XSD/XML
VStudio 2008 [Erreur lors de la génération dynamique de 'rc.exe']Erreur de compilation avec Jcreator
erreur javascript "objet attendu" 
Plus de sujets relatifs à : [XSD] targetNameSpace - erreur à la verification


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR