# 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