# Class ValidationDriver

java.lang.Object
com.thaiopensource.validate.ValidationDriver

public class ValidationDriver extends Object
Provides a simplified API for validating XML documents against schemas. This class is neither reentrant nor safe for access from multiple threads.

Author:
  James Clark

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static interface`
  `ValidationDriver.SaxProducer`
  A producer of SAX events.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ValidationDriver()`
  Equivalent to ValidationDriver(PropertyMap.EMPTY, PropertyMap.EMPTY, null).
  `ValidationDriver(PropertyMap properties)`
  Equivalent to ValidationDriver(properties, properties, null).
  `ValidationDriver(PropertyMap schemaProperties, PropertyMap instanceProperties)`
  Equivalent to ValidationDriver(schemaProperties, instanceProperties, null).
  `ValidationDriver(PropertyMap schemaProperties, PropertyMap instanceProperties, SchemaReader schemaReader)`
  Creates and initializes a ValidationDriver.
  `ValidationDriver(PropertyMap properties, SchemaReader sr)`
  Equivalent to ValidationDriver(properties, properties, sr).
  `ValidationDriver(SchemaReader sr)`
  Equivalent to ValidationDriver(PropertyMap.EMPTY, PropertyMap.EMPTY, null).

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static InputSource`
  `fileInputSource(File file)`
  Returns an `InputSource` for a `File`.
  `static InputSource`
  `fileInputSource(String filename)`
  Returns an `InputSource` for a filename.
  `PropertyMap`
  `getSchemaProperties()`
  Get the actual properties of the loaded schema
  `boolean`
  `loadSchema(InputSource in)`
  Loads a schema.
  `static InputSource`
  `uriOrFileInputSource(String uriOrFile)`
  Returns an `InputSource` for a string that represents either a file or an absolute URI.
  `boolean`
  `validate(ValidationDriver.SaxProducer saxProducer)`
  Validates the events of a producer against the currently loaded schema.
  `boolean`
  `validate(InputSource in)`
  Validates a document against the currently loaded schema.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### ValidationDriver

    public ValidationDriver(PropertyMap schemaProperties, PropertyMap instanceProperties, SchemaReader schemaReader)
    Creates and initializes a ValidationDriver.
    Parameters:
      `schemaProperties` - a PropertyMap specifying properties controlling schema creation; must not be `null`
      `instanceProperties` - a PropertyMap specifying properties controlling validation; must not be `null`
      `schemaReader` - the SchemaReader to use; if this is `null`, then the schema must be in XML, and the namespace URI of the root element will be used to determine what the schema language is

  - ### ValidationDriver

    public ValidationDriver(PropertyMap schemaProperties, PropertyMap instanceProperties)
    Equivalent to ValidationDriver(schemaProperties, instanceProperties, null).
    See Also:
      - `ValidationDriver(PropertyMap,PropertyMap,SchemaReader)`

  - ### ValidationDriver

    public ValidationDriver(PropertyMap properties, SchemaReader sr)
    Equivalent to ValidationDriver(properties, properties, sr).
    See Also:
      - `ValidationDriver(PropertyMap,PropertyMap,SchemaReader)`

  - ### ValidationDriver

    public ValidationDriver(PropertyMap properties)
    Equivalent to ValidationDriver(properties, properties, null).
    See Also:
      - `ValidationDriver(PropertyMap,PropertyMap,SchemaReader)`

  - ### ValidationDriver

    public ValidationDriver(SchemaReader sr)
    Equivalent to ValidationDriver(PropertyMap.EMPTY, PropertyMap.EMPTY, null).
    See Also:
      - `ValidationDriver(PropertyMap,PropertyMap,SchemaReader)`

  - ### ValidationDriver

    public ValidationDriver()
    Equivalent to ValidationDriver(PropertyMap.EMPTY, PropertyMap.EMPTY, null).
    See Also:
      - `ValidationDriver(PropertyMap,PropertyMap,SchemaReader)`

- ## Method Details

  - ### loadSchema

    public boolean loadSchema(InputSource in) throws SAXException, IOException
    Loads a schema. Subsequent calls to `validate` will validate with respect the loaded schema. This can be called more than once to allow multiple documents to be validated against different schemas.
    Parameters:
      `in` - the InputSource for the schema
    Returns:
      `true` if the schema was loaded successfully; `false` otherwise
    Throws:
      `IOException` - if an I/O error occurred
      `SAXException` - if an XMLReader or ErrorHandler threw a SAXException

  - ### validate

    public boolean validate(InputSource in) throws SAXException, IOException
    Validates a document against the currently loaded schema. This can be called multiple times in order to validate multiple documents.
    Parameters:
      `in` - the InputSource for the document to be validated
    Returns:
      `true` if the document is valid; `false` otherwise
    Throws:
      `IllegalStateException` - if there is no currently loaded schema
      `IOException` - if an I/O error occurred
      `SAXException` - if an XMLReader or ErrorHandler threw a SAXException

  - ### validate

    public boolean validate(ValidationDriver.SaxProducer saxProducer) throws SAXException, IOException
    Validates the events of a producer against the currently loaded schema. This can be called multiple times in order to validate multiple documents.
    Parameters:
      `producer` - a producer that delivers SAX events to the handlers.
    Returns:
      `true` if the document is valid; `false` otherwise
    Throws:
      `IllegalStateException` - if there is no currently loaded schema
      `IOException` - if an I/O error occurred
      `SAXException` - if an XMLReader or ErrorHandler threw a SAXException

  - ### getSchemaProperties

    public PropertyMap getSchemaProperties()
    Get the actual properties of the loaded schema
    Returns:
      a PropertyMap with the schema properties
    Throws:
      `IllegalStateException` - if there is no currently loaded schema

  - ### fileInputSource

    public static InputSource fileInputSource(String filename)
    Returns an `InputSource` for a filename.
    Parameters:
      `filename` - a String specifying the filename
    Returns:
      an `InputSource` for the filename

  - ### fileInputSource

    public static InputSource fileInputSource(File file)
    Returns an `InputSource` for a `File`.
    Parameters:
      `file` - the `File`
    Returns:
      an `InputSource` for the filename

  - ### uriOrFileInputSource

    public static InputSource uriOrFileInputSource(String uriOrFile)
    Returns an `InputSource` for a string that represents either a file or an absolute URI. If the string looks like an absolute URI, it will be treated as an absolute URI, otherwise it will be treated as a filename.
    Parameters:
      `uriOrFile` - a `String` representing either a file or an absolute URI
    Returns:
      an `InputSource` for the file or absolute URI