Listing 4 DOMValidator.java

import oracle.xml.parser.schema.XMLSchema;
import oracle.xml.parser.schema.XSDBuilder;
import oracle.xml.parser.schema.XSDException;
import oracle.xml.parser.v2.DOMParser;
import oracle.xml.parser.v2.XMLParseException;
import oracle.xml.parser.v2.XMLParser;

import oracle.xml.schemavalidator.XSDValidator;

import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;

import java.net.URL;


public class DOMValidator {
    public void validateSchema(String SchemaUrl, String XmlDocumentUrl) {
        try {
            DOMParser domParser = new DOMParser();
            domParser.setValidationMode(XMLParser.SCHEMA_VALIDATION);

            XSDBuilder builder = new XSDBuilder();
            URL url = new URL(SchemaUrl);
            XMLSchema schemadoc = (XMLSchema) builder.build(url);

            domParser.setXMLSchema(schemadoc);

            Validator handler = new Validator();
            domParser.setErrorHandler(handler);
            domParser.parse(XmlDocumentUrl);

            if (handler.validationError == true) {
                System.out.println("XML Document has Error:" +
                    handler.validationError + " " +
                    handler.saxParseException.getMessage());
            } else {
                System.out.println("XML Document is valid");
            }
        } catch (java.io.IOException ioe) {
            System.out.println("IOException " + ioe.getMessage());
        } catch (SAXException e) {
            System.out.println("SAXException " + e.getMessage());
        } catch (XSDException e) {
            System.out.println("XSDException " + e.getMessage());
        }
    }

    public static void main(String[] argv) {
        String SchemaUrl = argv[0];
        String XmlDocumentUrl = argv[1];
        DOMValidator validator = new DOMValidator();
        validator.validateSchema(SchemaUrl, XmlDocumentUrl);
    }

    private class Validator extends DefaultHandler {
        public boolean validationError = false;
        public SAXParseException saxParseException = null;

        public void error(SAXParseException exception)
            throws SAXException {
            validationError = true;
            saxParseException = exception;
        }

        public void fatalError(SAXParseException exception)
            throws SAXException {
            validationError = true;
            saxParseException = exception;
        }

        public void warning(SAXParseException exception)
            throws SAXException {
        }
    }
}