0
Ich brauche validieren XML von XSD. Wenn ich xsd ohne Namespace verwende, ist Validate gut. Aber wenn XSD targetNamespace habe, erhalte ich einen Fehler.Java Validierung von xsd mit xmlns
Textfehler: cvc-elt.1: Die Deklaration des Elements 'RequestGKN' konnte nicht gefunden werden.
XML
<?xml version="1.0" encoding="utf-8" ?>
<RequestGKN
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="urn://x-artefacts-rosreestr-gov-ru/requests/gkn/3.0.9">
<title>123</title>
</RequestGKN>
XSD
<?xml version="1.0" encoding="utf-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="urn://x-artefacts-rosreestr-gov-ru/requests/gkn/3.0.9"
elementFormDefault="qualified">
<xs:element name="RequestGKN">
<xs:annotation>
<xs:documentation>root element</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Title" type="xs:string">
<xs:annotation>
<xs:documentation>info</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Java-Code
Schema schema = null;
Document document = null;
xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n" +
"<RequestGKN xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns=\"urn://x-artefacts-rosreestr-gov-ru/requests/gkn/3.0.9\">" +
"<title>123</title>" +
"</RequestGKN>";
try {
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
builderFactory.setNamespaceAware(true);
DocumentBuilder parser = builderFactory.newDocumentBuilder();
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = docFactory.newDocumentBuilder();
document = builder.parse(new InputSource(new StringReader(xml)));
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
path = locationXSD.substring(0, locationXSD.lastIndexOf('/')+1);
//factory.setResourceResolver(new ResourceResolver());
Source schemaFile = new StreamSource(TemplateHandler.class.getClassLoader().getResourceAsStream(locationXSD));
schema = factory.newSchema(schemaFile);
} catch (Exception e) {
e.printStackTrace();
}
Validator validator = schema.newValidator();
validator.validate(new DOMSource(document));