XML schema validation requires namespace support. Check that the DOM you're passing in was created by a namespace-aware parser or created using namespace-aware methods (e.g. Document.createElementNS()).
Michael Glavassevich XML Parser Development IBM Toronto Lab E-mail: mrgla...@ca.ibm.com E-mail: mrgla...@apache.org alex77 <alex77...@hotmail.com> wrote on 01/23/2009 06:53:19 AM: > Hello, > > I try to validate an XML document (a DOM document built in memory) using a > Validator, I need the > Xerces Validator for knowing the exact DOM part having error. > > Using Xerces 2.9.1, I can't validate my document, each time it returns me > that It can't find the declaration of the Root element. If I switch to the > default the JDK 5 validator, it works ?? > > Someone have an idea ? Why Xerces can't find the root declaration ? I'm sure > my XSD document correct and the path is correct too. Tracing It seems Xerces > doesn't load correctly the grammar in the XMLSchema. > > Thank you for your help ! > > import java.io.File; > import java.io.IOException; > import java.net.URL; > > import javax.xml.XMLConstants; > import javax.xml.transform.dom.DOMSource; > import javax.xml.validation.Schema; > import javax.xml.validation.SchemaFactory; > import javax.xml.validation.Validator; > > import org.w3c.dom.Document; > import org.xml.sax.ErrorHandler; > import org.xml.sax.SAXException; > import org.xml.sax.SAXParseException; > > public class XSDValidator implements ErrorHandler { > > private Validator validator = null; > > public XSDValidator( String schemaURI ) throws Exception { > > System.setProperty( > "javax.xml.validation.SchemaFactory:" + > XMLConstants.W3C_XML_SCHEMA_NS_URI, > "org.apache.xerces.jaxp.validation.XMLSchemaFactory" ); > > SchemaFactory schemaFactory = SchemaFactory.newInstance( > XMLConstants.W3C_XML_SCHEMA_NS_URI ); > Schema schema = null; > if ( schemaURI.indexOf( "://" ) > -1 ) > schema = > schemaFactory.newSchema( > new URL( schemaURI ) ); > else > schema = > schemaFactory.newSchema( > new File( schemaURI ) > ); > > validator = schema.newValidator(); > validator.setErrorHandler( this ); > > } > > private boolean error = false; > private String errorMessage = null; > > public boolean validate( Document source ) { > error = false; > errorMessage = null; > try { > > validator.validate( new DOMSource( source ) ); > > } catch (SAXException e) { > errorMessage = e.getMessage(); > error = true; > } catch (IOException e) { > errorMessage = e.getMessage(); > error = true; > } > return !error; > } > > public String getErrorMessage() { return errorMessage; } > > public void error(SAXParseException exception) throws SAXException { > if ( !error ) { > errorMessage = exception.getMessage(); > // validator.getProperty( > "http://apache.org/xml/properties/dom/current-element-node" ); > error = true; > } > } > > public void fatalError(SAXParseException exception) throws SAXException { > if ( !error ) { > errorMessage = exception.getMessage(); > error = true; > } > } > > public void warning(SAXParseException exception) throws SAXException { > } > > -- > View this message in context: http://www.nabble.com/Can%27t- > Validate-with-the-XMLSchemaFactory-tp21623156p21623156.html > Sent from the Xerces - J - Users mailing list archive at Nabble.com. > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: j-users-unsubscr...@xerces.apache.org > For additional commands, e-mail: j-users-h...@xerces.apache.org >