java.lang.Objectjavax.xml.validation.ValidatorHandler
All Implemented Interfaces:
ContentHandler
A ValidatorHandler object is a thread-unsafe, non-reentrant object. In other words, it is the application's responsibility to make sure that one ValidatorHandler object is not used from more than one thread at any given time.
ValidatorHandler checks if the SAX events follow the set of constraints described in the associated Schema , and additionally it may modify the SAX events (for example by adding default values, etc.)
ValidatorHandler extends from ContentHandler , but it refines the underlying ContentHandler in the following way:
uri
, localName
, and qname
,
even though SAX allows some of them to be null.
Similarly, the user-specified ContentHandler will receive non-null
Strings for all three parameters.
A ValidatorHandler is automatically reset every time the startDocument method is invoked.
This spec defines the following feature that must be recognized by all ValidatorHandler implementations.
http://xml.org/sax/features/namespace-prefixes
This feature controls how a ValidatorHandler introduces
namespace bindings that were not present in the original SAX event
stream.
When this feature is set to true, it must make
sure that the user's ContentHandler will see
the corresponding xmlns*
attribute in
the org.xml.sax.Attributes object of the
ContentHandler#startElement(String,String,String,Attributes)
callback. Otherwise, xmlns*
attributes must not be
added to org.xml.sax.Attributes that's passed to the
user-specified ContentHandler .
(Note that regardless of this switch, namespace bindings are always notified to applications through ContentHandler#startPrefixMapping(String,String) and ContentHandler#endPrefixMapping(String) methods of the ContentHandler specified by the user.)
Note that this feature does NOT affect the way a ValidatorHandler receives SAX events. It merely changes the way it augments SAX events.
This feature is set to false
by default.
- href="mailto:Kohsuke.Kawaguchi@Sun.com">Kohsuke Kawaguchi
$
- Revision: 446598 $, $Date: 2006-09-15 08:55:40 -0400 (Fri, 15 Sep 2006) $1.5
- Constructor: |
---|
The constructor does nothing. Derived classes must create ValidatorHandler objects that have null ErrorHandler and null LSResourceResolver . |
Method from javax.xml.validation.ValidatorHandler Summary: |
---|
getContentHandler, getErrorHandler, getFeature, getProperty, getResourceResolver, getTypeInfoProvider, setContentHandler, setErrorHandler, setFeature, setProperty, setResourceResolver |
Methods from java.lang.Object: |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Method from javax.xml.validation.ValidatorHandler Detail: |
---|
|
|
The feature name is any fully-qualified URI. It is possible for a ValidatorHandler to recognize a feature name but temporarily be unable to return its value. Some feature values may be available only in specific contexts, such as before, during, or after a validation. Implementors are free (and encouraged) to invent their own features, using names built on their own URIs. |
The property name is any fully-qualified URI. It is possible for a ValidatorHandler to recognize a property name but temporarily be unable to return its value. Some property values may be available only in specific contexts, such as before, during, or after a validation. ValidatorHandler s are not required to recognize any specific property names. Implementors are free (and encouraged) to invent their own properties, using names built on their own URIs. |
|
The obtained TypeInfoProvider can be queried during a parse to access the type information determined by the validator. Some schema languages do not define the notion of type, for those languages, this method may not be supported. However, to be compliant with this specification, implementations for W3C XML Schema 1.0 must support this operation. |
When a ContentHandler is specified, a ValidatorHandler will work as a filter and basically copy the incoming events to the specified ContentHandler . In doing so, a ValidatorHandler may modify the events, for example by adding defaulted attributes. A ValidatorHandler may buffer events to certain extent, but to allow ValidatorHandler to be used by a parser, the following requirement has to be met. When a callback method on the specified ContentHandler throws an exception, the same exception object must be thrown from the ValidatorHandler . The ErrorHandler should not be notified of such an exception. This method can be called even during a middle of a validation. |
Error handler can be used to customize the error handling process during a validation. When an ErrorHandler is set, errors found during the validation will be first sent to the ErrorHandler . The error handler can abort further validation immediately by throwing org.xml.sax.SAXException from the handler. Or for example it can print an error to the screen and try to continue the validation by returning normally from the ErrorHandler If any Throwable is thrown from an ErrorHandler , the same Throwable object will be thrown toward the root of the call stack. ValidatorHandler is not allowed to throw org.xml.sax.SAXException without first reporting it to ErrorHandler . When the ErrorHandler is null, the implementation will behave as if the following ErrorHandler is set: class DraconianErrorHandler implements ErrorHandler { public void fatalError( org.xml.sax.SAXParseException e ) throws org.xml.sax.SAXException { throw e; } public void error( org.xml.sax.SAXParseException e ) throws org.xml.sax.SAXException { throw e; } public void warning( org.xml.sax.SAXParseException e ) throws org.xml.sax.SAXException { // noop } } When a new ValidatorHandler object is created, initially this field is set to null. |
Feature can be used to control the way a ValidatorHandler parses schemas, although ValidatorHandler s are not required to recognize any specific property names. The feature name is any fully-qualified URI. It is possible for a ValidatorHandler to expose a feature value but to be unable to change the current value. Some feature values may be immutable or mutable only in specific contexts, such as before, during, or after a validation. |
The property name is any fully-qualified URI. It is possible for a ValidatorHandler to recognize a property name but to be unable to change the current value. Some property values may be immutable or mutable only in specific contexts, such as before, during, or after a validation. ValidatorHandler s are not required to recognize setting any specific property names. |
ValidatorHandler uses a LSResourceResolver when it needs to locate external resources while a validation, although exactly what constitutes "locating external resources" is up to each schema language. When the LSResourceResolver is null, the implementation will behave as if the following LSResourceResolver is set: class DumbLSResourceResolver implements LSResourceResolver { public org.w3c.dom.ls.LSInput resolveResource( String publicId, String systemId, String baseURI) { return null; // always return null } }
If a LSResourceResolver throws a RuntimeException
(or instances of its derived classes),
then the ValidatorHandler will abort the parsing and
the caller of the When a new ValidatorHandler object is created, initially this field is set to null. |