Validation Module
This XQuery Module contains functions to perform validations against DTDs, XML Schema and (since Version 8.3) RelaxNG. For Schematron validation, check out Vincent Lizzi’s Schematron XQuery Module.
Contents
Conventions
All functions in this module are assigned to the http://basex.org/modules/validate
namespace, which is statically bound to the validate
prefix.
All errors are assigned to the http://basex.org/errors
namespace, which is statically bound to the bxerr
prefix.
DTD Validation
Checks whether an XML document validates against a DTD. The input document can be specified as:
- an
xs:string
, containing the path to the resource, - an
xs:string
, containing the resource in its string representation, or - a
node()
, containing the resource itself.
If no DTD is supplied in a function, the XML document is expected to contain an embedded DTD doctype declaration.
validate:dtd
Signatures | validate:dtd($input as item()) as empty-sequence() validate:dtd($input as item(), $schema as xs:string?) as empty-sequence()
|
Summary | Validates the XML $input document against a $schema and returns an empty sequence or an error.
|
Errors | BXVA0001 : the validation fails.BXVA0002 : the validation process cannot be started.BXVA0003 : no DTD validator is available.
|
Examples |
try { let $doc := <invalid/> let $schema := '<!ELEMENT root (#PCDATA)>' return validate:dtd($doc, $schema) } catch bxerr:BXVA0001 { 'DTD Validation failed.' } |
validate:dtd-info
Signatures | validate:dtd-info($input as item()) as xs:string* validate:dtd-info($input as item(), $schema as xs:string) as xs:string*
|
Summary | Validates the XML $input document against a $schema and returns warnings, errors and fatal errors in a string sequence.
|
Errors | BXVA0002 : the validation process cannot be started.BXVA0003 : no DTD validator is available.
|
Examples |
|
validate:dtd-report
Signatures | validate:dtd-report($input as item()) as element(report) validate:dtd-report($input as item(), $schema as xs:string) as element(report)
|
Summary | Validates the XML $input document against a $schema and returns warnings, errors and fatal errors as XML.
|
Errors | BXVA0002 : the validation process cannot be started.BXVA0003 : no DTD validator is available.
|
Examples |
<report> <status>invalid</status> <message level="Error" line="2" column="11">Element type "invalid" must be declared.</message> </report> |
XML Schema Validation
Checks whether an XML document validates against an XML Schema. The input document and the schema can be specified as:
xs:string
, containing the path to the resource,xs:string
, containing the resource in its string representation, ornode()
, containing the resource itself.
If no schema is given, the input is expected to contain an xsi:(noNamespace)schemaLocation
attribute, as defined in W3C XML Schema.
Different XML Schema implementations can be applied for validation:
- Java includes a default implementation of XML Schema (which is an older version of Apache Xerces)
- If Xerces2 exists in the classpath, it will be used instead. If you want to manually add Xerces2, you should download the Xerces2 Java ..... (XML Schema 1.1) (Beta) archive and copy at least four libraries (
cupv10k-runtime.jar
,org.eclipse.wst.xml.xpath2.processor_1.1.0.jar
,xercesImpl.jar
,xml-apis.jar
) to thelib
directory of the full distribution of BaseX. - The Saxon Enterprise Edition (saxon9ee.jar) is detected as well.
With Version 8.3, the XML Schema version can be specified as well:
- The version must be
1.0
or1.1
. - Version 1.1 is only available if Saxon EE or Xerces2 (beta version with XML Schema 1.1 support) is available.
- If Xerces2 is manually added to the classpath,
validate:xsd
Signatures | validate:xsd($input as item()) as empty-sequence() validate:xsd($input as item(), $schema as item()?) as empty-sequence() validate:xsd($input as item(), $schema as item()?, $version as xs:string) as empty-sequence()
|
Summary | Validates the XML $input document against a $schema .
|
Errors | BXVA0001 : the validation fails.BXVA0002 : the validation process cannot be started.BXVA0003 : no XML Schema validator is available.
|
Examples |
let $doc := <simple:root xmlns:simple='http://basex.org/simple'/> let $schema := <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' targetNamespace='http://basex.org/simple'> <xs:element name='root'/> </xs:schema> return validate:xsd($doc, $schema) |
validate:xsd-info
Signatures | validate:xsd-info($input as item()) as xs:string* validate:xsd-info($input as item(), $schema as item()) as xs:string*
|
Summary | Validates a document and returns warnings, errors and fatal errors in a string sequence. See validate:xsd for more details on the function arguments. |
Errors | BXVA0002 : the validation process cannot be started.BXVA0003 : no XML Schema validator is available.
|
validate:xsd-report
Signatures | validate:xsd-report($input as item()) as element(report) validate:xsd-report($input as item(), $schema as xs:string) as element(report)
|
Summary | Validates a document and returns warnings, errors and fatal errors as XML. See validate:xsd for more details on the function arguments. |
Errors | BXVA0002 : the validation process cannot be started.BXVA0003 : no XML Schema validator is available.
|
RelaxNG
Checks whether an XML document validates against a RelaxNG schema. The input document and the schema an be specified as:
xs:string
, containing the path to the resource,xs:string
, containing the resource in its string representation, ornode()
, containing the resource itself.
RelaxNG validation will be available if Jing exists in the classpath. The latest version, jing-20091111.jar
, is included in the full distributions of BaseX.
validate:rng
Signatures | validate:rng($input as item(), $schema as item()) as empty-sequence() validate:rng($input as item(), $schema as item(), $compact as xs:boolean) as empty-sequence()
|
Summary | Validates the XML $input document against a $schema , using the XML or $compact notation.
|
Errors | BXVA0001 : the validation fails.BXVA0002 : the validation process cannot be started.BXVA0003 : the RelaxNG validator is not available.BXVA0004 : no validator is found for the specified version.
|
Examples |
|
validate:rng-info
Signatures | validate:rng-info($input as item(), $schema as item()) as xs:string* validate:rng-info($input as item(), $schema as item(), $compact as xs:boolean) as xs:string*
|
Summary | Validates the XML $input document against a $schema , using the XML or $compact notation, and returns warnings, errors and fatal errors in a string sequence.
|
Errors | BXVA0002 : the validation process cannot be started.BXVA0003 : the RelaxNG validator is not available.BXVA0004 : no validator is found for the specified version.
|
validate:rng-report
Signatures | validate:rng-report($input as item(), $schema as xs:string) as element(report) validate:rng-report($input as item(), $schema as xs:string, $compact as xs:boolean) as element(report)
|
Summary | Validates the XML $input document against a $schema , using the XML or $compact notation, and returns warnings, errors and fatal errors as XML.
|
Errors | BXVA0002 : the validation process cannot be started.BXVA0003 : The RelaxNG validator is not available.BXVA0004 : no validator is found for the specified version.
|
Errors
Code | Description |
---|---|
BXVA0001
|
The document cannot be validated against the specified DTD or XML Schema. |
BXVA0002
|
The validation cannot be started. |
BXVA0003
|
No validator is available. |
BXVA0004
|
No validator is found for the specified version. |
Changelog
- Version 8.3
- Added: validate:rng, validate:rng-info
- Added: dtd-report, xsd-report, validate:rng-report
- Version 7.6
- Added: validate:xsd-info, validate:dtd-info
The module was introduced with Version 7.3.