You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Praveen Peddi <pp...@contextmedia.com> on 2003/01/15 21:25:45 UTC
XML validation using schema. May be off topic with SOAP
I want to validate an xml document with an existing schema. I know there is a code to do it when the schema is present as a URL. BUt in my case schema is present with in the application (since it is stored in the database) and that is not the url.
I have the following code:
public static void DOMValidate(String XMLfile, String Schema){
long startTime = System.currentTimeMillis();
// Instantiate the DOM parser.
DOMParser parser = new DOMParser();
// set the features
try{
parser.setFeature("http://xml.org/sax/features/namespaces",true);
parser.setFeature("http://xml.org/sax/features/validation", true);
parser.setFeature("http://apache.org/xml/features/validation/schema",true);
parser.setFeature("http://apache.org/xml/features/validation/schema-full-checking",true);
// convert the xml file name to a URL
String SystemId = null;
try{
SystemId = new File(Schema).toURL().toExternalForm();
} catch(java.net.MalformedURLException ex){
//ex.printStackTrace();
log.error(ex);
}
parser.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",SystemId);
// myErrorHandler is a descendant of ErrorHandler, it should be set here to be able to catch parse errors
parser.setErrorHandler(new SchemaErrorHandler());
} catch (SAXNotSupportedException ex){
System.out.println("SAXNotSupportedException Exception");
} catch (SAXNotRecognizedException ex){
System.out.println("SAXNotRecognizedException Exception");
}
// parse the xml file, the errorhandler class has callbacks,
// so those will be called automatically there is a parse error
try{
parser.parse(new File(XMLfile).toURL().toExternalForm());
//System.out.println("Parsed Successfully by DOM Parser");
} catch (org.xml.sax.SAXException ex){
//System.out.println("SAXException Exception");
//ex.printStackTrace();
log.error(ex);
} catch (java.io.IOException ex){
System.out.println("IOException Exception");
} finally {
long endTime = System.currentTimeMillis();
//System.out.println("Total time of DOMValidate:"+(endTime-startTime));
}
}
How can I do the validation if the Schema is the actual schema string not the url. This looks like a common problem. I assume that its not universal that schema is not always stored externally.
Any suggestions are appreciated.
Praveen