Bonjour
J'ai un XML que je veut valider avec un XSD. C'est un XML simple de ce genre:
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 <?xml version="1.0" encoding="ISO-8859-1"?> <COMMS application="Cadral+"> <COMM> <a>aaa</a> <x>aaa</x> </COMM> <COMM> <b>aaa</b> <d>aaa</d> </COMM> </COMMS>
Je voudrais valider que je reçoit un toujours un XML avec cette structure, jusqu'au niveau de COMM, car le contenu sous le noeud COMM pourra varier et même être vide.
J'ai crée le XSD suivant pour valider cet XML:
Code XML : 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 <?xml version="1.0" encoding="ISO-8859-1" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="COMMS"> <xs:complexType> <xs:sequence> <xs:element name="COMM" maxOccurs="unbounded"> <xs:complexType mixed="true"> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="application" type="xs:string" use="required"/> </xs:complexType> </xs:element> </xs:schema>
Cependant en exécutant la validation sous Java, j'obtient l'erreur suivante:
org.xml.sax.SAXParseException: cvc-complex-type.2.4.d: Invalid content was found starting with element 'a'. No child element is expected at this point.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(Unknown Source)
Mon code Java pour effectuer la validation marche car j'ai testé avec d'autres XMLs/XSDs mais le voilà quand même:
Quelqu'un peut-il m'aider?
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 // define the type of schema - we use W3C: String schemaLang = "http://www.w3.org/2001/XMLSchema"; // get validation driver: SchemaFactory factory = SchemaFactory.newInstance(schemaLang); // create schema by reading it from an XSD file: //Schema schema = //factory.newSchema(new StreamSource("D:\\CVSProjects\\Eclipse\\PComTraitementAutomatique2\\schema.xsd")); Schema schema = factory.newSchema(new StreamSource("D:\\test\\t.xsd")); Validator validator = schema.newValidator(); // at last perform validation: validator.validate(new StreamSource("d:/test/t.xml")); System.out.println("The XML is valid"); }catch (SAXException ex) { // we are here if the document is not valid: // ... process validation error... ex.printStackTrace(); } catch (Exception ex) { ex.printStackTrace(); }
merci
Partager