Under construction

needs migrating from SourceForge to here

Introduction

Fedora validates objects on ingest using XSD schema validation and Schematron validation.

Fedora's validation mechanism is configurable, allowing the implementation of custom validation mechanisms for objects being ingested, and for validating Fedora objects when they are modified.

XML Validation

XSD schema and Schematron validation is performed on all objects when they are ingested. By providing your own implementation of the DOValidator module and specifying this in fedora.fcfg it is possible to implement custom XML validation mechanisms.

By default both XML schema and Schematron validation is performed. This is configurable. To alter the validation performed on ingest add a parameter to the DOManager module configuration in fedora.fcfg:

<param name="ingestValidationLevel" value="0"/>

The value of this parameter specifies the type(s) of validation to perform on ingest:

If this parameter is not specified the default level is 0.

Fedora's XML ingest validation is designed to help ensure the integrity of your repository. Exercise caution if you are implementing your own validation mechanisms, and only change the validation level from the default if you can ensure that objects are valid prior to ingesting them.

If Fedora's logging level is set to DEBUG, Fedora also validates the XML object representation before committing it to permanent storage using both XSD and Schematron validation. This feature is intended to be used for testing Fedora.

Object validation

Fedora Object validation is carried out prior to any object modifications being committed to permanent storage - if a modification would result in an invalid object according to the configured validators, the modification is not made and an error is reported.

By default, Fedora's configuration is to perform no object validation upon modification operations.

In addition, objects can be validated on demand using the validate API method. This will validate objects according to their specification using Enhanced Content Models.

Digital Object validation is configured using Spring, in the file $FEDORA_HOME/server/config/spring/doobjectvalidator.xml.

Digital Object validation can be used to ensure that repository content conforms to the rules specified using Enhanced Content Models, which allows specification via an object's content model of XML datastream schema and relationships that should exist between objects.

To enable ECM object validation for every modification made to an object, uncomment the relevant sections in this file.

You can define your own validators for objects by writing Java classes that implement the org.fcrepo.server.validation.DOObjectValidator interface, and then adding these to the doobjectvalidator.xml Spring configuration file.

Although performing validation of Fedora objects on every modification can be used to help ensure the integrity of your repository, adding such validation operations will incur an overhead every time an object is modified.