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