Validator Registry¶
XML-Director provides a registry for registering validators. The registry supports the following validation methods:
- XML schemas (file suffix
.xsd
) - Document Type Definitions DTD (file suffix
.dtd
) - RelaxNG schemas (file suffix
.rng
) - Schematron (file suffix
.sch
)
Validators in XML-Director can be grouped together as a family
.
A family is a list of validators that belongs together (per project, per
publication etc.) - the semantics is left of the user of XML-Director.
The default method for registering one or multiple validators is by putting
them into a folder and calling the parser_folder()
API of the validator
registry. The type of a validator is derived from its file extension.
The validator registry supports both local and remote directories (WebDAV, SFTPFS, FTP etc.).
Registering a folder with validator files¶
Example:
from xmldirector.plonecore.validator_registry import ValidatorRegistryUtility
# local filesystem
ValidatorRegistryUtility.parse_folder(
family='myproject',
directory='/path/to/my/schema')
# WebDAV filesystem (e.g. Base-X or eXist-db)
ValidatorRegistryUtility.parse_folder(
family='myproject',
directory='dav://username:password@myhost:port/exist/webdav/db/schemas')
# FTP server
ValidatorRegistryUtility.parse_folder(
family='myproject',
directory='ftp://ftp.customer.com/public/schemas')
Verifying XML content against a validator¶
Example:
from zope.component import getUtility
from xmldirector.plonecore.interfaces import IValidatorRegistry
registry = getUtility(IValidatorRegistry)
validator = registry.get_validator('myproject', 'some.xsd')
result = validator.validate(some_xml)
if result:
print 'XML validates against given schema'
else:
for error in result.errors:
print error
The result
object will evaluate to True
in case of a validation with
out errors. Otherwise result
will result to False
. The attribute
errors
holds a list of error messages related to the validation errors.
Viewing all registered validators¶
XML-Director implements a view @@validator-registry
for the Plone root folder
for introspecting the validator registry. The view lists all validators together with
information about family, validator name, type of validator and its filesystem path.
Example:
http://host:port/path/to/plone@@validator-registry