I tried out the MSV cookbook example and it seems that the Verifier constructor has changed to use the SAX ErrorHandler instead of VerificationERrorHandler. Attached is a working one. Hope this helps!
-- Miguel A Paraz <http://mparaz.com> Mobile: +63-916-423-7922 Imperium Technology, Inc. <[EMAIL PROTECTED]> Office: +63-2-812-3155
import com.sun.msv.grammar.Grammar; import com.sun.msv.reader.util.GrammarLoader; import com.sun.msv.reader.util.IgnoreController; import com.sun.msv.verifier.DocumentDeclaration; import com.sun.msv.verifier.ValidityViolation; import com.sun.msv.verifier.Verifier; import javax.xml.parsers.SAXParserFactory; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.io.SAXReader; import org.dom4j.io.SAXWriter; import org.xml.sax.ContentHandler; import org.xml.sax.ErrorHandler; import org.xml.sax.Locator; import org.xml.sax.SAXParseException; import java.net.URL; import java.io.File; class MyErrorHandler implements ErrorHandler { public void error(SAXParseException e) { System.out.println("ERROR:" + e); } public void fatalError(SAXParseException e) { System.out.println("Fatal:" + e); } public void warning(SAXParseException e) { System.out.println("Warning:" + e); } } public class Schema { public static void main(String argv[]) { try { String filename = argv[0]; String schema = argv[1]; URL fileURL = new File(filename).toURL(); URL schemaURL = new File(schema).toURL(); SAXReader reader = new SAXReader(); Document doc = reader.read(fileURL); validate(doc, schemaURL.toExternalForm()); } catch (Exception e) { e.printStackTrace(System.err); } } static public void validate(Document doc, String schema) throws Exception { // Turn on Namespace handling in theJAXP SAXParserFactory SAXParserFactory saxFactory = SAXParserFactory.newInstance(); saxFactory.setNamespaceAware(true); // create MSVs DocumentDeclaration by overriding // a IgnoreController in an anonyous inner class DocumentDeclaration docDeclaration = GrammarLoader.loadVGM(schema, new IgnoreController() { public void error(Locator[] locations, String message, Exception exception) { System.out.println("ERROR: " + message); } public void error(Locator[] locations, String message) { System.out.println("WARNING: " + message); } }, saxFactory); // xxx MSV version 20020414 now uses the SAX Error Handler MyErrorHandler myErrorHandler = new MyErrorHandler(); Verifier verifier = new Verifier(docDeclaration, myErrorHandler); SAXWriter writer = new SAXWriter((ContentHandler) verifier); writer.setErrorHandler(myErrorHandler); // validate now! writer.write(doc); if (verifier.isValid()) { System.err.println("The document was valid"); } else { System.err.println("The document was not valid"); } } }