Est-il possible de valider le fichier XML suivant avec le schéma suivant? Je voudrais valider le fichier XML sans spécifier le schéma dans le fichier xml.Comment valider xml en utilisant un schéma XML?
Je ne sais pas si c'est possible ou non, mais j'apprécierais de l'aide pour trouver comment le faire.
Je continue d'obtenir l'erreur suivante lorsque je tente de valider le fichier XML.
org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'contacts'.
<?xml version="1.0" ?>
<contacts>
<contact>
<names>Joe Buddah</names>
<address>123 Black Jack Cove</address>
<phone>555-555-1212</phone>
</contact>
<contact>
<name>Ray Buddah</name>
<address>123 Black Jack Cove</address>
<phone>555-555-1212</phone>
</contact>
</contacts>
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://madeupdomain.com/xml/contacts" xmlns:tns="http://madeupdomain.com/contacts" elementFormDefault="qualified">
<complexType name="contactType">
<sequence>
<element name="name" type="string" maxOccurs="1" minOccurs="1"></element>
<element name="address" type="string"></element>
<element name="phone" type="string"></element>
</sequence>
</complexType>
<complexType name="contactsType">
<sequence>
<element name="contact" type="tns:contactType" minOccurs="0" maxOccurs="unbounded"></element>
</sequence>
</complexType>
<element name="contacts" type="tns:contactsType"></element>
</schema>
Code Java J'utilise pour faire la validation.
static final String JAXP_SCHEMA_SOURCE = "http://java.sun.com/xml/jaxp/properties/schemaSource";
public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException
{
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
documentBuilderFactory.setNamespaceAware(true);
documentBuilderFactory.setAttribute(JAXP_SCHEMA_SOURCE, new File("src/main/resources/contacts.xsd"));
// parse an XML document into a DOM tree
DocumentBuilder parser = documentBuilderFactory.newDocumentBuilder();
Document document = parser.parse(new File("src/main/resources/contacts.xml"));
// create a SchemaFactory capable of understanding WXS schemas
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
// load a WXS schema, represented by a Schema instance
Source schemaFile = new StreamSource(new File("src/main/resources/patient.xsd"));
Schema schema = factory.newSchema(schemaFile);
// create a Validator instance, which can be used to validate an instance document
Validator validator = schema.newValidator();
// validate the DOM tree
try
{
validator.validate(new DOMSource(document));
}
catch (SAXException e)
{
e.printStackTrace();
}
Cela l'a corrigé. Merci!! – ScArcher2