org.custommonkey.xmlunit
Class Validator

java.lang.Object
  extended by org.xml.sax.helpers.DefaultHandler
      extended by org.custommonkey.xmlunit.Validator
All Implemented Interfaces:
org.xml.sax.ContentHandler, org.xml.sax.DTDHandler, org.xml.sax.EntityResolver, org.xml.sax.ErrorHandler

public class Validator
extends org.xml.sax.helpers.DefaultHandler
implements org.xml.sax.ErrorHandler

Validates XML against its internal or external DOCTYPE, or a completely different DOCTYPE. Usage:


Examples and more at xmlunit.sourceforge.net


Constructor Summary
  Validator(org.w3c.dom.Document document, java.lang.String systemID, java.lang.String doctype)
          DOM-style constructor: allows Document validation post-manipulation of the DOM tree's contents.
  Validator(org.xml.sax.InputSource sourceForValidation)
          Basic constructor.
protected Validator(org.xml.sax.InputSource inputSource, boolean usingDoctypeReader)
          Deprecated. Use the protected three arg constructor instead.
  Validator(org.xml.sax.InputSource sourceForValidation, java.lang.String systemID)
          Extended constructor.
protected Validator(org.xml.sax.InputSource inputSource, java.lang.String systemId, boolean usingDoctypeReader)
          Baseline constructor: called by all others
  Validator(org.xml.sax.InputSource sourceForValidation, java.lang.String systemID, java.lang.String doctype)
          Full constructor.
  Validator(java.io.Reader readerForValidation)
          Basic constructor.
  Validator(java.io.Reader readerForValidation, java.lang.String systemID)
          Extended constructor.
  Validator(java.io.Reader readerForValidation, java.lang.String systemID, java.lang.String doctype)
          Full constructor.
  Validator(java.lang.String stringForValidation)
          Basic constructor.
  Validator(java.lang.String stringForValidation, java.lang.String systemID)
          Extended constructor.
 
Method Summary
 void assertIsValid()
          Assert that a document is valid.
 void error(org.xml.sax.SAXParseException exception)
          ErrorHandler interface method.
 void fatalError(org.xml.sax.SAXParseException exception)
          ErrorHandler interface method.
 boolean isValid()
          Perform the validation of the source against DTD / Schema.
 org.xml.sax.InputSource resolveEntity(java.lang.String publicId, java.lang.String systemId)
          Entity Resolver method: allows us to override an existing systemID referenced in the markup DOCTYPE instruction.
 void setJAXP12SchemaSource(java.lang.Object schemaSource)
          As per JAXP 1.2 changes, which introduced a standard way for parsers to support schema validation.
 java.lang.String toString()
           
 void useXMLSchema(boolean use)
          Turn on XML Schema validation.
 void warning(org.xml.sax.SAXParseException exception)
          ErrorHandler interface method.
 
Methods inherited from class org.xml.sax.helpers.DefaultHandler
characters, endDocument, endElement, endPrefixMapping, ignorableWhitespace, notationDecl, processingInstruction, setDocumentLocator, skippedEntity, startDocument, startElement, startPrefixMapping, unparsedEntityDecl
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Validator

protected Validator(org.xml.sax.InputSource inputSource,
                    boolean usingDoctypeReader)
             throws org.xml.sax.SAXException,
                    ConfigurationException
Deprecated. Use the protected three arg constructor instead.

Kept for backwards compatibility.

Throws:
org.xml.sax.SAXException
ConfigurationException

Validator

protected Validator(org.xml.sax.InputSource inputSource,
                    java.lang.String systemId,
                    boolean usingDoctypeReader)
             throws org.xml.sax.SAXException,
                    ConfigurationException
Baseline constructor: called by all others

Parameters:
inputSource -
systemId -
usingDoctypeReader -
Throws:
org.xml.sax.SAXException
ConfigurationException - if validation could not be turned on

Validator

public Validator(org.w3c.dom.Document document,
                 java.lang.String systemID,
                 java.lang.String doctype)
          throws org.xml.sax.SAXException,
                 ConfigurationException
DOM-style constructor: allows Document validation post-manipulation of the DOM tree's contents. This takes a fairly tortuous route to validation as DOM level 2 does not allow creation of Doctype nodes. The supplied systemId and doctype name will replace any Doctype settings in the Document.

Parameters:
document -
systemID -
doctype -
Throws:
org.xml.sax.SAXException - if unable to obtain new Sax parser via JAXP factory
ConfigurationException - if validation could not be turned on

Validator

public Validator(java.io.Reader readerForValidation)
          throws org.xml.sax.SAXException,
                 ConfigurationException
Basic constructor. Validates the contents of the Reader using the DTD or schema referenced by those contents.

Parameters:
readerForValidation -
Throws:
org.xml.sax.SAXException - if unable to obtain new Sax parser via JAXP factory
ConfigurationException - if validation could not be turned on

Validator

public Validator(java.lang.String stringForValidation)
          throws org.xml.sax.SAXException,
                 ConfigurationException
Basic constructor. Validates the contents of the String using the DTD or schema referenced by those contents.

Parameters:
stringForValidation -
Throws:
org.xml.sax.SAXException - if unable to obtain new Sax parser via JAXP factory
ConfigurationException - if validation could not be turned on

Validator

public Validator(org.xml.sax.InputSource sourceForValidation)
          throws org.xml.sax.SAXException,
                 ConfigurationException
Basic constructor. Validates the contents of the InputSource using the DTD or schema referenced by those contents.

Parameters:
readerForValidation -
Throws:
org.xml.sax.SAXException - if unable to obtain new Sax parser via JAXP factory
ConfigurationException - if validation could not be turned on

Validator

public Validator(java.io.Reader readerForValidation,
                 java.lang.String systemID)
          throws org.xml.sax.SAXException,
                 ConfigurationException
Extended constructor. Validates the contents of the Reader using the DTD specified with the systemID. There must be DOCTYPE instruction in the markup that references the DTD or else the markup will be considered invalid: if there is no DOCTYPE in the markup use the 3-argument constructor

Parameters:
readerForValidation -
systemID -
Throws:
org.xml.sax.SAXException - if unable to obtain new Sax parser via JAXP factory
ConfigurationException - if validation could not be turned on

Validator

public Validator(java.lang.String stringForValidation,
                 java.lang.String systemID)
          throws org.xml.sax.SAXException,
                 ConfigurationException
Extended constructor. Validates the contents of the String using the DTD specified with the systemID. There must be DOCTYPE instruction in the markup that references the DTD or else the markup will be considered invalid: if there is no DOCTYPE in the markup use the 3-argument constructor

Parameters:
stringForValidation -
systemID -
Throws:
org.xml.sax.SAXException - if unable to obtain new Sax parser via JAXP factory
ConfigurationException - if validation could not be turned on

Validator

public Validator(org.xml.sax.InputSource sourceForValidation,
                 java.lang.String systemID)
          throws org.xml.sax.SAXException,
                 ConfigurationException
Extended constructor. Validates the contents of the InputSource using the DTD specified with the systemID. There must be DOCTYPE instruction in the markup that references the DTD or else the markup will be considered invalid: if there is no DOCTYPE in the markup use the 3-argument constructor

Parameters:
sourceForValidation -
systemID -
Throws:
org.xml.sax.SAXException - if unable to obtain new Sax parser via JAXP factory
ConfigurationException - if validation could not be turned on

Validator

public Validator(org.xml.sax.InputSource sourceForValidation,
                 java.lang.String systemID,
                 java.lang.String doctype)
          throws org.xml.sax.SAXException,
                 ConfigurationException
Full constructor. Validates the contents of the InputSource using the DTD specified with the systemID and named with the doctype name.

Parameters:
sourceForValidation -
systemID -
doctype -
Throws:
org.xml.sax.SAXException
ConfigurationException - if validation could not be turned on

Validator

public Validator(java.io.Reader readerForValidation,
                 java.lang.String systemID,
                 java.lang.String doctype)
          throws org.xml.sax.SAXException,
                 ConfigurationException
Full constructor. Validates the contents of the Reader using the DTD specified with the systemID and named with the doctype name.

Parameters:
readerForValidation -
systemID -
doctype -
Throws:
org.xml.sax.SAXException
ConfigurationException - if validation could not be turned on
Method Detail

useXMLSchema

public void useXMLSchema(boolean use)
                  throws org.xml.sax.SAXException
Turn on XML Schema validation.

This feature should work with any XML parser that is JAXP 1.2 compliant and supports XML Schema validation.

For a fully JAXP 1.2 compliant parser the property http://java.sun.com/xml/jaxp/properties/schemaLanguage is set, if this fails the method falls back to the features http://apache.org/xml/features/validation/schema & http://apache.org/xml/features/validation/dynamic which should cover early versions of Xerces 2 as well.

Parameters:
use - indicate that XML Schema should be used to validate documents.
Throws:
org.xml.sax.SAXException
See Also:
setJAXP12SchemaSource(Object)

isValid

public boolean isValid()
Perform the validation of the source against DTD / Schema.

Returns:
true if the input supplied to the constructor passes validation, false otherwise

assertIsValid

public void assertIsValid()
Assert that a document is valid.


toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object
Returns:
class name appended with validation messages

warning

public void warning(org.xml.sax.SAXParseException exception)
             throws org.xml.sax.SAXException
ErrorHandler interface method.

Specified by:
warning in interface org.xml.sax.ErrorHandler
Overrides:
warning in class org.xml.sax.helpers.DefaultHandler
Parameters:
exception -
Throws:
org.xml.sax.SAXException

error

public void error(org.xml.sax.SAXParseException exception)
           throws org.xml.sax.SAXException
ErrorHandler interface method.

Specified by:
error in interface org.xml.sax.ErrorHandler
Overrides:
error in class org.xml.sax.helpers.DefaultHandler
Parameters:
exception -
Throws:
org.xml.sax.SAXException

fatalError

public void fatalError(org.xml.sax.SAXParseException exception)
                throws org.xml.sax.SAXException
ErrorHandler interface method.

Specified by:
fatalError in interface org.xml.sax.ErrorHandler
Overrides:
fatalError in class org.xml.sax.helpers.DefaultHandler
Parameters:
exception -
Throws:
org.xml.sax.SAXException

resolveEntity

public org.xml.sax.InputSource resolveEntity(java.lang.String publicId,
                                             java.lang.String systemId)
Entity Resolver method: allows us to override an existing systemID referenced in the markup DOCTYPE instruction.

Specified by:
resolveEntity in interface org.xml.sax.EntityResolver
Overrides:
resolveEntity in class org.xml.sax.helpers.DefaultHandler
Parameters:
publicId -
systemId -
Returns:
the sax InputSource that points to the overridden systemID

setJAXP12SchemaSource

public void setJAXP12SchemaSource(java.lang.Object schemaSource)
                           throws org.xml.sax.SAXException
As per JAXP 1.2 changes, which introduced a standard way for parsers to support schema validation. Since only W3C Schema support was included in JAXP 1.2, this is the only mechanism currently supported by this method.

Parameters:
schemaSource - This can be one of the following:
  • String that points to the URI of the schema
  • InputStream with the contents of the schema
  • SAX InputSource
  • File
  • an array of Objects with the contents being one of the types defined above. An array of Objects can be used only when the schema language has the ability to assemble a schema at runtime. When an array of Objects is passed it is illegal to have two schemas that share the same namespace.
Throws:
org.xml.sax.SAXException - if this method of validating isn't supported.
See Also:
http://java.sun.com/webservices/jaxp/change-requests-11.html

XMLUnit is hosted by sourceforge.net