1:import javax.xml.parsers.*; 2:import org.xml.sax.*; 3:import org.xml.sax.helpers.*; 4:import java.io.*; 5: 6:// A Simple SAX Application using JAXP with Namespace support 7:public class SimpleSchema{ 8: private SAXParserFactory factory; // Creates parser object 9: private SAXParser parser; // Holds a parser object 10: private XMLReader xmlReader; // Object that parses the file 11: private DefaultHandler handler; // Defines the handler for this parser 12: private boolean valid = true; 13: 14: // Set schema constants 15: static final String JAXP_SCHEMA_LANGUAGE = 16: "http://java.sun.com/xml/jaxp/properties/schemaLanguage"; 17: static final String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema"; 18: static final String JAXP_SCHEMA_SOURCE = "http://java.sun.com/xml/jaxp/properties/schemaSource"; 19: 20: 21: public SimpleSchema() throws SAXException{ 22: try{ 23: factory = SAXParserFactory.newInstance(); 24: factory.setValidating(true); 25: factory.setNamespaceAware(true); 26: 27: if (factory.isValidating()){ 28: System.out.println("The parser is validating"); 29: } 30: 31: //Create Parser 32: parser = factory.newSAXParser(); 33: 34: // Enable Schemas 35: parser.setProperty(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA); 36: 37: //Create XMLReader 38: xmlReader = parser.getXMLReader(); 39: 40: ContentHandler cHandler = new MyDefaultHandler(); 41: ErrorHandler eHandler = new MyDefaultHandler(); 42: 43: xmlReader.setContentHandler(cHandler); 44: xmlReader.setErrorHandler(eHandler); 45: 46: } catch (ParserConfigurationException e){ 47: e.printStackTrace(); 48: } catch (SAXException e){ 49: e.printStackTrace(); 50: } 51: } 52: 53: public void parseDocument(String xmlFile){ 54: try{ 55: xmlReader.parse(xmlFile); 56: if (valid) { 57: System.out.println("Document is valid!"); 58: } 59: } catch (SAXException e){ 60: e.printStackTrace(); 61: } catch (IOException e){ 62: e.printStackTrace(); 63: } catch (Exception e){ 64: e.printStackTrace(); 65: } 66: } 67: 68: public static void main(String[] args){ 69: try { 70: if (args.length != 1) { 71: System.out.println( 72: "Usage: java SimpleSchema " + 73: "[XML Document Filename]"); 74: System.exit(0); 75: } 76: SimpleSchema xmlApp = new SimpleSchema(); 77: xmlApp.parseDocument(args[0]); 78: } catch (SAXException e){ 79: e.printStackTrace(); 80: } catch (Exception e) { 81: e.printStackTrace(); 82: } 83: } 84: 85: class MyDefaultHandler extends DefaultHandler{ 86: private CharArrayWriter buff = new CharArrayWriter(); 87: private String errMessage = ""; 88: /* With a handler class, just override the methods you need to use 89: */ 90: 91: // Start Error Handler code here 92: public void warning(SAXParseException e) { 93: System.out.println("Warning Line " + e.getLineNumber() + ": " + e.getMessage() + "\n"); 94: } 95: 96: public void error(SAXParseException e) { 97: errMessage = new String("Error Line " + e.getLineNumber() + ": " + e.getMessage() + "\n"); 98: System.out.println(errMessage); 99: valid = false; 100: } 101: 102: public void fatalError(SAXParseException e) { 103: errMessage = new String("Error Line " + e.getLineNumber() + ": " + e.getMessage() + "\n"); 104: System.out.println(errMessage); 105: valid = false; 106: } 107: } 108:} 109: