2012-01-13 6 views
2

Je suis en train de valider mes fichiers XML à partir du fichier XSD donné avec le code suivant,XSD Erreur de validation en JAVA

 Source xmlFile = new StreamSource(fXmlFile); 
     SchemaFactory schemaFactory = SchemaFactory 
     .newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); 
     Schema schema = schemaFactory.newSchema(new File("presentation.xsd")); 
     Validator validator = schema.newValidator(); 
     try { 
      validator.validate(xmlFile); 
      System.out.println(xmlFile.getSystemId() + " is valid"); 
     } catch (SAXException e) { 
      System.out.println(xmlFile.getSystemId() + " is NOT valid"); 
      System.out.println("Reason: " + e.getLocalizedMessage()); 
     } 

Et je téléchargé mon fichier XSD ici pour vous montrer: http://orhancanceylan.com/stack/presentation.xsd

Mais quand je cours mon code, j'obtiens cette erreur:

org.xml.sax.SAXParseException: s4s-att-not-allowed: Attribute 'maxOccurs' cannot appear in element 'element'. 

Quel est le problème, comment devrais-je le résoudre?

Répondre

6

Vous avez une erreur dans votre schéma, l'élément de présentation global ne peut pas avoir de contraintes (maxOccurs = "1" minOccurs = "1"), vous devez les supprimer (cela n'a aucun sens d'avoir min/max pour éléments globaux, ces contraintes ont du sens dans le contexte d'autres éléments). Plus d'informations à ce sujet dans XSD Primer: http://www.w3.org/TR/2004/REC-xmlschema-0-20041028/#Globals

+0

+1 - la raison de cette restriction est parce qu'un élément global est un élément racine potentiel dans le document d'instance –