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");
}
}
}