Class Validator

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

public class Validator extends DefaultHandler implements ErrorHandler
Validates XML against its internal or external DOCTYPE, or a completely different DOCTYPE. Usage:
  • new Validator(readerForXML);
    to validate some XML that contains or references an accessible DTD or schema
  • new Validator(readerForXML, systemIdForValidation);
    to validate some XML that references a DTD but using a local systemId to perform the validation
  • new Validator(readerForXML, systemIdForValidation, doctypeName);
    to validate some XML against a completely different DTD

Examples and more at xmlunit.sourceforge.net
  • Constructor Details

    • Validator

      protected Validator(InputSource inputSource, boolean usingDoctypeReader) throws SAXException, ConfigurationException
      Deprecated.
      Use the protected three arg constructor instead.
      Kept for backwards compatibility.
      Throws:
      SAXException
      ConfigurationException
    • Validator

      protected Validator(InputSource inputSource, String systemId, boolean usingDoctypeReader) throws SAXException, ConfigurationException
      Baseline constructor: called by all others
      Parameters:
      inputSource -
      systemId -
      usingDoctypeReader -
      Throws:
      SAXException
      ConfigurationException - if validation could not be turned on
    • Validator

      public Validator(Document document, String systemID, String doctype) throws 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:
      SAXException - if unable to obtain new Sax parser via JAXP factory
      ConfigurationException - if validation could not be turned on
    • Validator

      public Validator(Reader readerForValidation) throws SAXException, ConfigurationException
      Basic constructor. Validates the contents of the Reader using the DTD or schema referenced by those contents.
      Parameters:
      readerForValidation -
      Throws:
      SAXException - if unable to obtain new Sax parser via JAXP factory
      ConfigurationException - if validation could not be turned on
    • Validator

      public Validator(String stringForValidation) throws SAXException, ConfigurationException
      Basic constructor. Validates the contents of the String using the DTD or schema referenced by those contents.
      Parameters:
      stringForValidation -
      Throws:
      SAXException - if unable to obtain new Sax parser via JAXP factory
      ConfigurationException - if validation could not be turned on
    • Validator

      public Validator(InputSource sourceForValidation) throws SAXException, ConfigurationException
      Basic constructor. Validates the contents of the InputSource using the DTD or schema referenced by those contents.
      Parameters:
      readerForValidation -
      Throws:
      SAXException - if unable to obtain new Sax parser via JAXP factory
      ConfigurationException - if validation could not be turned on
    • Validator

      public Validator(Reader readerForValidation, String systemID) throws 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:
      SAXException - if unable to obtain new Sax parser via JAXP factory
      ConfigurationException - if validation could not be turned on
    • Validator

      public Validator(String stringForValidation, String systemID) throws 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:
      SAXException - if unable to obtain new Sax parser via JAXP factory
      ConfigurationException - if validation could not be turned on
    • Validator

      public Validator(InputSource sourceForValidation, String systemID) throws 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:
      SAXException - if unable to obtain new Sax parser via JAXP factory
      ConfigurationException - if validation could not be turned on
    • Validator

      public Validator(InputSource sourceForValidation, String systemID, String doctype) throws 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:
      SAXException
      ConfigurationException - if validation could not be turned on
    • Validator

      public Validator(Reader readerForValidation, String systemID, String doctype) throws 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:
      SAXException
      ConfigurationException - if validation could not be turned on
  • Method Details

    • useXMLSchema

      public void useXMLSchema(boolean use) throws 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:
      SAXException
      See Also:
    • 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 String toString()
      Overrides:
      toString in class Object
      Returns:
      class name appended with validation messages
    • warning

      public void warning(SAXParseException exception) throws SAXException
      ErrorHandler interface method.
      Specified by:
      warning in interface ErrorHandler
      Overrides:
      warning in class DefaultHandler
      Parameters:
      exception -
      Throws:
      SAXException
    • error

      public void error(SAXParseException exception) throws SAXException
      ErrorHandler interface method.
      Specified by:
      error in interface ErrorHandler
      Overrides:
      error in class DefaultHandler
      Parameters:
      exception -
      Throws:
      SAXException
    • fatalError

      public void fatalError(SAXParseException exception) throws SAXException
      ErrorHandler interface method.
      Specified by:
      fatalError in interface ErrorHandler
      Overrides:
      fatalError in class DefaultHandler
      Parameters:
      exception -
      Throws:
      SAXException
    • resolveEntity

      public InputSource resolveEntity(String publicId, String systemId)
      Entity Resolver method: allows us to override an existing systemID referenced in the markup DOCTYPE instruction.
      Specified by:
      resolveEntity in interface EntityResolver
      Overrides:
      resolveEntity in class DefaultHandler
      Parameters:
      publicId -
      systemId -
      Returns:
      the sax InputSource that points to the overridden systemID
    • setJAXP12SchemaSource

      public void setJAXP12SchemaSource(Object schemaSource) throws 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:
      SAXException - if this method of validating isn't supported.