Je suis en train d'assembler du code de validation. Je suis en train de valider contre un schéma comme:Support javax.xml.parsers.DocumentBuilder pour les types complexes
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:choice="http://example.com/SimpleChoice" targetNamespace="http://example.com/SimpleChoice" ecore:nsPrefix="choice" ecore:package="com.example.simple.choice">
<xsd:complexType name="Plane">
<xsd:sequence>
<xsd:element name="freightDetails" type="xsd:string" minOccurs="0"/>
<xsd:element name="passengers" type="xsd:int" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
Avec le code XML suivant:
<?xml version="1.0" encoding="UTF-8"?>
<choice:Plane xmlns:choice="http://example.com/SimpleChoice">
<freightDetails>Boxes</freightDetails>
</choice:Plane>
Il semble se plaindre qu'il n'y a pas d'élément, mais je suis en train de trouver un moyen de valider contre le type. Je reçois l'erreur suivante:
[Error] :1:100: cvc-elt.1: Cannot find the declaration of element 'choice:Plane'.
Quand il tente de charger le document avec le code suivant:
SchemaFactory factory =
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(schemaFile);
DocumentBuilderFactory parserFactory = DocumentBuilderFactory.newInstance();
parserFactory.setSchema(schema);
parserFactory.setNamespaceAware(true);
DocumentBuilder parser = parserFactory.newDocumentBuilder();
Document document = parser.parse(inputSource);
Validator validator = schema.newValidator();
validator.validate(new DOMSource(document));
Il échoue quand il arrive au:
Document document = parser.parse(inputSource);
Quelqu'un at-il des idées sur la façon dont je serais en mesure de faire fonctionner cela? (Ou un validateur qui prend en charge ce genre de comportement?)
Merci
Rob
Merci pour la suggestion, j'ai essayé des cas où il y avait un élément auparavant et ils fonctionnent en effet. Cependant, j'ai un cas où je veux valider contre le type et j'espérais qu'il y avait une façon dont cela était supporté. – Rob
@RobL: Non, ce n'est pas comme ça que fonctionne XML Schema. Vous validez les éléments, pas les types. – skaffman