Validation Module

From BaseX Documentation

Jump to: navigation, search

This XQuery Module contains functions to perform validations against DTDs, XML Schema and RelaxNG. For Schematron validation, check out Vincent Lizzi’s Schematron XQuery Module for BaseX.

Contents

[edit] Conventions

Updated with Version 9.0:

All functions and errors in this module are assigned to the http://basex.org/modules/validate namespace, which is statically bound to the validate prefix.

[edit] DTD Validation

Checks whether an XML document validates against a DTD. The input document can be specified as:

If no DTD is supplied in a function, the XML document is expected to contain an embedded DTD doctype declaration.

[edit] 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 error: the validation fails.
init: the validation process cannot be started.
not-found: no DTD validator is available.
Examples
  • validate:dtd('doc.xml', 'doc.dtd') validates the document doc.xml against the specified DTD file doc.dtd.
  • The following example validates an invalid document against a DTD, which is specified as string:
try {
  let $doc := <invalid/>
  let $schema := '<!ELEMENT root (#PCDATA)>'
  return validate:dtd($doc, $schema)
} catch validate:error {
  'DTD Validation failed.'
}

[edit] 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 init: the validation process cannot be started.
not-found: no DTD validator is available.
Examples
  • validate:dtd-info(<invalid/>, '<!ELEMENT root (#PCDATA)>') returns:
    2:11: Element type "invalid" must be declared..

[edit] validate:dtd-report

width='100%'
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 init: the validation process cannot be started.
not-found: no DTD validator is available.
Examples
  • validate:dtd-report(<invalid/>, '<!ELEMENT root (#PCDATA)>') returns:
<report>
  <status>invalid</status>
  <message level="Error" line="2" column="11">Element type "invalid" must be declared.</message>
</report>

[edit] XML Schema Validation

Checks whether an XML document validates against an XML Schema. The input document and the schema can be specified as:

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:

The XML Schema version can be specified as well (the supplied string must be 1.0 or 1.1). Please note that Version 1.1 is only available if Saxon EE or Xerces2 is added to the classpath.

[edit] 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, using the specified $version of XML Schema.
Errors error: the validation fails.
init: the validation process cannot be started.
not-found: no XML Schema validator is available.
version: no validator is found for the specified version.
Examples
  • validate:xsd('doc.xml', 'doc.xsd') validates the document doc.xml against the specified schema doc.xsd.
  • The following example demonstrates how a document can be validated against a schema without resorting to local or remote URIs:
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)

[edit] 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*
validate:xsd-info($input as item(), $schema as item()?, $version as xs:string) as xs:string*
Summary Validates the XML $input document against a $schema, using the specified $version of XML Schema, and returns warnings, errors and fatal errors in a string sequence.
Errors init: the validation process cannot be started.
not-found: no XML Schema validator is available.
version: no validator is found for the specified version.

[edit] 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)
validate:xsd-report($input as item(), $schema as xs:string?, $version as xs:string) as element(report)
Summary Validates the XML $input document against a $schema, using the specified $version of XML Schema, and returns warnings, errors and fatal errors as XML.
Errors init: the validation process cannot be started.
not-found: no XML Schema validator is available.
version: no validator is found for the specified version.

[edit] RelaxNG Validation

Checks whether an XML document validates against a RelaxNG schema. The input document and the schema can be specified as:

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. As Jing additionally supports NVDL validation, you can also use the functions to validate the input against NVDL schemas.

[edit] 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 error: the validation fails.
init: the validation process cannot be started.
not-found: the RelaxNG validator is not available.
Examples
  • validate:rng('doc.xml', 'doc.rng') validates the document doc.xml against the specified schema doc.rng.

[edit] 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 init: the validation process cannot be started.
not-found: the RelaxNG validator is not available.

[edit] 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 init: the validation process cannot be started.
not-found: The RelaxNG validator is not available.

[edit] Errors

Updated with Version 9.0:

Code Description
error The document cannot be validated against the specified schema.
init The validation cannot be started.
not-found No validator is available.
version No validator is found for the specified version.

[edit] Changelog

Version 9.0
Version 8.5
Version 8.3
Version 7.6

The module was introduced with Version 7.3.

Personal tools
Namespaces
Variants
Actions
Navigation
Print/export