cvc-complex-type.3.2.2: Attribut xsi:schemaLocation-Attribut ist nicht erlaubt zu erscheinen, in der <Personen> in Java-DOM

Ich bin versucht zu validieren, meine XML mit XSD in Java durch die Verwendung von DOM-validator.
Obwohl, manuell, weiß ich, dass das Dokument ist ja gültig, DOM-validator ruft zurück und sagt zu mir:

cvc-complex-type.3.2.2: Attribute <xsi:schemaLocation> is not allowed to appear in the element <people>  

Habe ich sicher gestellt, dass:
setNamespaceAware() eingestellt ist true
Die schemaLanguage - Eigenschaft festgelegt wurde, bevor schemaSource
schemaLanguage eingestellt ist http://ww.w3.org/2001/XMLSchema
Sowohl die XSD und XML im gleichen Ordner wie die .java und .class Datei

SSCCE

import org.xml.sax.*;
import org.xml.sax.helpers.*;
import javax.xml.parsers.*;

public class DOMValidator {
    String xmlInstance = null;
    String xmlSchema = null;


    public static void main(String[] args){
        DOMValidator validator = new DOMValidator();
        validator.validateXML("student.xsd",
                              "helloWorld.xml");
    }

    public void validateXML(String xsd,String xml){
        xmlSchema = xsd;
        xmlInstance = xml;
        beginValidation();
    }

    public void beginValidation(){
        try{
            DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            factory.setNamespaceAware(true);
            factory.setValidating(true);

            factory.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaLanguage",
                                 "http://www.w3.org/2001/XMLSchema");
            factory.setAttribute("http://java.sun.com/xml/jaxp/properties/schemaSource",
                                 xmlSchema);

            ErrorHandler errorHandler = new ErrorHandler();

            DocumentBuilder builder = factory.newDocumentBuilder();
            builder.setErrorHandler(errorHandler);
            builder.parse(xmlInstance);

            if(errorHandler.errorOccured == true){
                System.out.println("Document is Invalid.");
                System.out.println(errorHandler.ex.getMessage());
            }else{
                System.out.println("Doument is valid");
            }

        }catch(ParserConfigurationException e){
            e.printStackTrace();
        }catch(SAXException e){
            e.printStackTrace();
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    private class ErrorHandler extends DefaultHandler{
        public SAXParseException ex = null;
        public boolean errorOccured = false;

        @Override public void error(SAXParseException ex){
            this.ex = ex;
            errorOccured = true;
        }

        @Override public void fatalError(SAXParseException ex){
            this.ex = ex;
            errorOccured = true;
        }

        @Override public void warning(SAXParseException ex){
            this.ex = ex;
            errorOccured = true;
        }
    }
}  

XSD

<xs:schema xmlns:xs="http://www.w3c.org/2001/XMLSchema"
        xmlns="http://www.cmu.edu/ns/blank"
        targetNamespace="http://www.cmu.edu/ns/blank"
        elementFormDefault="qualified">  

XML

<people
    xmlns="http://www.cmu.edu/ns/blank"
    xmlns:xsi="http://www.w3c.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.cmu.edu/ns/blank student.xsd">  

Wie kann ich dies beheben?

hatte ähnlichen Fehler, auch bedingt durch ein problem in der http://www.w3.org/2001/XMLSchema-instanceurl

InformationsquelleAutor Little Child | 2013-05-11

Schreibe einen Kommentar