blob: b4653939191fdad3353a42bb169547022981313d [file] [log] [blame]
package org.eclipse.wst.xml.uriresolver.validation.tests.internal;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.xerces.parsers.DOMParser;
import org.apache.xerces.parsers.SAXParser;
import org.apache.xerces.util.XMLCatalogResolver;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
import org.xml.sax.helpers.DefaultHandler;
public class Validator {
public boolean validationError = false;
public void validateWithSchema_JAXP(String xmlFile, String[] catalogs) {
try {
System.setProperty("javax.xml.parsers.DocumentBuilderFactory",
"org.apache.xerces.jaxp.DocumentBuilderFactoryImpl");
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");
// Create catalog resolver and set a catalog list.
XMLCatalogResolver resolver = new XMLCatalogResolver();
resolver.setPreferPublic(true);
resolver.setCatalogList(catalogs);
factory.setAttribute(
"http://apache.org/xml/properties/internal/entity-resolver",
resolver);
DocumentBuilder builder = factory.newDocumentBuilder();
ErrorHandler handler = new ErrorHandler(this);
builder.setErrorHandler(handler);
builder.setEntityResolver(resolver);
builder.parse(xmlFile);
if (validationError == true)
System.out.println("XML Document has Error: "
+ 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 (ParserConfigurationException e) {
System.out.println("ParserConfigurationException "
+ e.getMessage());
}
}
public void validateWithSchema_XercesSAXParser(String XmlDocumentUrl, String [] catalogs) {
SAXParser parser = new SAXParser();
try {
parser.setFeature("http://xml.org/sax/features/validation", true);
parser.setFeature(
"http://apache.org/xml/features/validation/schema", true);
// Create catalog resolver and set a catalog list.
XMLCatalogResolver resolver = new XMLCatalogResolver();
resolver.setUseLiteralSystemId(true);
resolver.setPreferPublic(true);
resolver.setCatalogList(catalogs);
// Set the resolver on the parser.
parser.setProperty("http://apache.org/xml/properties/internal/entity-resolver",
resolver);
ErrorHandler handler = new ErrorHandler(this);
parser.setErrorHandler(handler);
parser.parse(XmlDocumentUrl);
if (validationError == true){
System.out.println("XML Document has Error: "
+ handler.saxParseException.getMessage());
throw handler.saxParseException;
}
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());
}
}
public void validateWithSchema_XercesDOMParser(String XmlDocumentUrl, String [] catalogs) {
DOMParser parser = new DOMParser();
try {
parser.setFeature("http://xml.org/sax/features/validation", true);
parser.setFeature(
"http://apache.org/xml/features/validation/schema", true);
// Create catalog resolver and set a catalog list.
XMLCatalogResolver resolver = new XMLCatalogResolver();
resolver.setUseLiteralSystemId(true);
resolver.setPreferPublic(true);
resolver.setCatalogList(catalogs);
// Set the resolver on the parser.
parser.setProperty("http://apache.org/xml/properties/internal/entity-resolver",
resolver);
ErrorHandler handler = new ErrorHandler(this);
parser.setErrorHandler(handler);
parser.parse(XmlDocumentUrl);
if (validationError == true){
System.out.println("XML Document has Error: "
+ handler.saxParseException.getMessage());
throw handler.saxParseException;
}
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());
}
}
private class ErrorHandler extends DefaultHandler {
Validator validator;
public SAXParseException saxParseException = null;
public ErrorHandler(Validator validator) {
super();
this.validator = validator;
}
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 {
}
}
}