Problème de validation XML par rapport à un Schéma XSD
Je souhaite valider des fichiers XML par rapport au schéma suivant
Code:
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
|
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="firm:invoice"
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
version="1.0">
<xsd:element name="invoice">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="client">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"></xsd:element>
<xsd:element name="firstname" type="xsd:string"></xsd:element>
<xsd:element name="address">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="street"
type="xsd:string">
</xsd:element>
<xsd:element name="postalCode"
type="xsd:string">
</xsd:element>
<xsd:element name="City"
type="xsd:string">
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="articles" maxOccurs="1" minOccurs="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="article" maxOccurs="unbounded" minOccurs="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="id"
type="xsd:string">
</xsd:element>
<xsd:element name="description"
type="xsd:string">
</xsd:element>
<xsd:element name="quantity"
type="xsd:string">
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema> |
J'ai le fichier XML suivant:
Code:
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
|
<?xml version="1.0" encoding="UTF-8"?>
<invoice xmlns="firm:invoice">
<client>
<name>Dupont</name>
<firstname>Franck</firstname>
<address>
<street>32, rue de la paix</street>
<postalCode>75001</postalCode>
<City>Paris</City>
</address>
</client>
<articles>
<article>
<id>1</id>
<description>article 1</description>
<quantity>1</quantity>
</article>
<article>
<id>23</id>
<description>article 2</description>
<quantity>3</quantity>
</article>
<article>
<id>78</id>
<description>article 3</description>
<quantity>2</quantity>
</article>
<article>
<id>14</id>
<description>article 4</description>
<quantity>1</quantity>
</article>
</articles>
</invoice> |
Je valide le fichier à l'aide du code suivant:
Code:
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
|
import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Source;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import org.w3c.dom.Document;
public class SchemaValidationTests
{
/**
* @param args
*/
public static void main(String[] args)
{
try {
Document document_l = null;
DocumentBuilder parser_l;
DocumentBuilderFactory docFactory_l = DocumentBuilderFactory.newInstance();
docFactory_l.setNamespaceAware(true);
parser_l = docFactory_l.newDocumentBuilder();
document_l = parser_l.parse(SchemaValidationTests.class.getResourceAsStream("invoice.xml"));
SchemaFactory factory_l = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Source[] sources_l = new Source[] {
new StreamSource(SchemaValidationTests.class.getResourceAsStream("invoice.xsd"))
};
Schema schema_l = factory_l.newSchema(sources_l);
Validator validator_l = schema_l.newValidator();
validator_l.validate(new DOMSource(document_l));
}
catch (Exception e) {
e.printStackTrace();
}
}
} |
J'obtiens alors l'erreur suivante:
ERREUR : 'cvc-complex-type.2.4.a: Invalid content was found starting with element 'client'. One of '{"":client}' is expected.'
Ou est mon erreur ? Merci pour votre aide.