Thank you very much, Michael.  This is exactly what I was looking for. 


----- Original Message ----
From: Michael Glavassevich <[EMAIL PROTECTED]>
To: j-users@xerces.apache.org
Cc: [EMAIL PROTECTED]
Sent: Monday, October 27, 2008 1:59:06 PM
Subject: Re: How to get exact location of schema validation errors?


Hi Alex,

The current element node being visited by the Validator can be queried [1] from 
your error handler by calling back into it with getProperty() [2].

Thanks.

[1] http://xerces.apache.org/xerces2-j/properties.html#dom.current-element-node
[2] 
http://xerces.apache.org/xerces2-j/javadocs/api/javax/xml/validation/Validator.html#getProperty(java.lang.String)

Michael Glavassevich
XML Parser Development
IBM Toronto Lab
E-mail: [EMAIL PROTECTED]
E-mail: [EMAIL PROTECTED]

Alex Talis <[EMAIL PROTECTED]> wrote on 10/27/2008 01:28:12 PM:

> Hi, Mukul
>  
> Thanks for your response, but I'm not looking for column and row 
> numbers in the XML document.  I might have been a little ambiguous 
> in using the word "location".  What I need is the reference to the 
> Node object in the DOM tree that caused the validation error.  The 
> perfect solution would be for the SAXException to contain a 
> reference to that Node.
>  
> I started looking at the source of org.apache.xerces.impl.xs.
> XMLSchemaValidator, and I see a method called processOneAttribute, 
> which has all this info for attributes.  There is also code that 
> deals with Elements and also has the references to Nodes.  I'm going
> to study this a little and see if I can do something with it.
>  
> Alex
> 
> ----- Original Message ----
> From: Mukul Gandhi <[EMAIL PROTECTED]>
> To: j-users@xerces.apache.org
> Cc: Alex Talis <[EMAIL PROTECTED]>
> Sent: Sunday, October 26, 2008 8:36:26 PM
> Subject: Re: How to get exact location of schema validation errors?
> 
> On Mon, Oct 27, 2008 at 7:07 AM, Alex Talis <[EMAIL PROTECTED]> wrote:
> > I'm using JAXP to validate a DOM Document with a Validator.  When validation
> > fails, I get an exception with a pretty descriptive message, but no way to
> > pinpoint where in the document the error was found.
> 
> You can set an error handler to a validator.
> 
> for e.g.,
> 
> Validator validator = schema.newValidator();
> MyErrorHandler errorHandler = new MyErrorHandler();
> validator.setErrorHandler(errorHandler);
> validator.validate(new DOMSource ...
> 
> Then in MyErrorHandler, you should write as,
> 
> class MyErrorHandler implements ErrorHandler {
> 
>   public void fatalError(SAXParseException e) throws SAXException {
> 
>   }
> 
>   public void error(SAXParseException e) throws SAXException {
> 
>   }
> 
>   public void warning(SAXParseException e) throws SAXException {
> 
>   }
> 
> within the methods, fatalError, error or warning, you can get location
> of the error/problem as,
> 
> e.getLineNumber()
> e.getColumnNumber()
> 
> 
> -- 
> Regards,
> Mukul Gandhi

Reply via email to