Oct 7, 2009

XSD validation με τη βοήθεια του Xerces

Επειδή χρειάστηκε πρόσφατα να χρησιμοποιήσω τη βιβλιοθήκη του Xerces (http://xerces.apache.org/xerces-j/ ) για XSD validation ενός XML κειμένου και διαπίστωσα πως υπάρχουν διάφορες, διάσπαρτες προσπάθειες γι' αυτό στο δίκτυο, οπότε ας καταθέσω και το δικό μου παράδειγμα (example):

* Validate a XML document against a XSD using Xerces.
* @param filename is the URI of the document to validate. For instance:
* file:///tmp/td.xml
* @param schemaLocation is the URI of the XSD. For instance file:///tmp/td.xsd
* @throws Exception in case of validation error.
public static void validateDocument(String filename,
String schemaLocation) throws Exception {
* Define an embedded handler for validation errors.
class Validator extends DefaultHandler {
private boolean validationError = false;
private 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 {

XMLReader parser = XMLReaderFactory.createXMLReader();
parser.setFeature("http://xml.org/sax/features/validation", true);
// Use external-schemaLocation for an XSD defining a namespace or external-noNamespaceSchemaLocation
// for those not defining it.
Validator handler = new Validator();
System.out.println("VALIDATION ERROR occured: " + handler.validationError);
if (handler.validationError) {
throw handler.saxParseException;

No comments: