Difference between revisions of "Validation Module"

From BaseX Documentation
Jump to navigation Jump to search
m (Text replace - "{| width='100%'" to "{|")
m (Text replace - "{|" to "{| width='100%'")
Line 9: Line 9:
  
 
==validate:xsd==
 
==validate:xsd==
{|
+
{| width='100%'
 
|-
 
|-
 
| width='90' | '''Signatures'''
 
| width='90' | '''Signatures'''
Line 40: Line 40:
  
 
==validate:dtd==
 
==validate:dtd==
{|
+
{| width='100%'
 
|-
 
|-
 
| width='90' | '''Signatures'''
 
| width='90' | '''Signatures'''
Line 74: Line 74:
 
=Errors=
 
=Errors=
  
{| class="wikitable" width="100%"
+
{| width='100%' class="wikitable" width="100%"
 
! width="5%"|Code
 
! width="5%"|Code
 
! width="95%"|Description
 
! width="95%"|Description

Revision as of 15:24, 21 December 2012

This XQuery Module contains functions to perform validations against XML Schema and Document Type Declarations. By default, this module uses Java’s standard validators. As an alternative, Saxon XSLT Processor is used if (saxon9he.jar, saxon9pe.jar or saxon9ee.jar) is added to the classpath.

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.

Functions

validate:xsd

Signatures validate:xsd($input as item()) as empty-sequence()
validate:xsd($input as item(), $schema as item()) as empty-sequence()
Summary Validates the document specified by $input.

Both $input and $schema may be

  • 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.

$schema can be used to specify the schema for validation. If no schema is given, $input is required to contain an xsi:(noNamespace)schemaLocation as defined in W3C XML Schema.

Errors BXVA0001: the addressed document cannot be validated against the given schema.
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)

validate:dtd

Signatures validate:dtd($input as item()) as empty-sequence()
validate:dtd($input as item(), $dtd as xs:string) as empty-sequence()
Summary Validates the document specified by $input.

$input may be

  • 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.

$schema can be used to specify the DTD for validation. If no DTD is given, $input is required to contain a DTD doctype declaration.

Errors BXVA0001: the addressed document cannot be validated against the given DTD.
Examples
  • validate:xsd('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 $dtd := '<!ELEMENT root (#PCDATA)>'
  return validate:dtd($doc, $dtd)
} catch BXVA0001 {
  'DTD Validation failed.'
}

Errors

Code Description
BXVA0001 A document cannot be validated against the specified DTD or XML Schema.

Changelog

The module was introduced with Version 7.3.