Difference between revisions of "Validation Module"

From BaseX Documentation
Jump to navigation Jump to search
Line 13: Line 13:
  
 
==validate:dtd==
 
==validate:dtd==
 +
 
{| width='100%'
 
{| width='100%'
 
|-
 
|-
 
| width='120' | '''Signatures'''
 
| width='120' | '''Signatures'''
|{{Func|validate:dtd|$input as item()|empty-sequence()}}<br />{{Func|validate:dtd|$input as item(), $dtd as xs:string|empty-sequence()}}
+
|{{Func|validate:dtd|$input as item()|empty-sequence()}}<br />{{Func|validate:dtd|$input as item(), $schema as xs:string|empty-sequence()}}
 
|-
 
|-
 
| '''Summary'''
 
| '''Summary'''
Line 35: Line 36:
 
try {
 
try {
 
   let $doc := <invalid/>
 
   let $doc := <invalid/>
   let $dtd := '<!ELEMENT root (#PCDATA)>'
+
   let $schema := '<!ELEMENT root (#PCDATA)>'
   return validate:dtd($doc, $dtd)
+
   return validate:dtd($doc, $schema)
 
} catch bxerr:BXVA0001 {
 
} catch bxerr:BXVA0001 {
 
   'DTD Validation failed.'
 
   'DTD Validation failed.'
Line 49: Line 50:
 
|-
 
|-
 
| width='120' | '''Signatures'''
 
| width='120' | '''Signatures'''
|{{Func|validate:dtd-info|$input as item()|xs:string*}}<br />{{Func|validate:dtd-info|$input as item(), $dtd as xs:string|xs:string*}}
+
|{{Func|validate:dtd-info|$input as item()|xs:string*}}<br />{{Func|validate:dtd-info|$input as item(), $schema as xs:string|xs:string*}}
 +
|-
 +
| '''Summary'''
 +
|Validates a document and returns warnings, errors and fatal errors in a string sequence. See [[#validate:dtd|validate:dtd]] for more details on the function arguments.
 +
|-
 +
| '''Errors'''
 +
|{{Error|BXVA0002|#Errors}} the validation process cannot be started.
 +
|}
 +
 
 +
==validate:dtd-report==
 +
 
 +
{| width='100%'
 +
|-
 +
| width='120' | '''Signatures'''
 +
|{{Func|validate:dtd-report|$input as item()|element(report)}}<br />{{Func|validate:dtd-report|$input as item(), $schema as xs:string|element(report)}}
 
|-
 
|-
 
| '''Summary'''
 
| '''Summary'''
|Validates the document specified by {{Code|$input}} and returns warning, errors and fatal errors in a string sequence. {{Code|$input}} can be specified as:
+
|Validates a document and returns warnings, errors and fatal errors as XML. See [[#validate:dtd|validate:dtd]] for more details on the function arguments.
* {{Code|xs:string}}, containing the path to the resource,
 
* {{Code|xs:string}}, containing the resource in its string representation, or
 
* {{Code|node()}}, containing the resource itself.
 
{{Code|$schema}} can be used to specify the DTD for validation. If no DTD is given, {{Code|$input}} is required to contain a DTD doctype declaration.<br />
 
 
|-
 
|-
 
| '''Errors'''
 
| '''Errors'''
Line 101: Line 112:
 
|-
 
|-
 
| '''Summary'''
 
| '''Summary'''
|Validates the document specified by {{Code|$input}} and returns warning, errors and fatal errors in a string sequence. {{Code|$input}} and {{Code|$schema}} can be specified as:
+
|Validates a document and returns warnings, errors and fatal errors in a string sequence. See [[#validate:xsd|validate:xsd]] for more details on the function arguments.
* {{Code|xs:string}}, containing the path to the resource,
+
|-
* {{Code|xs:string}}, containing the resource in its string representation, or
+
| '''Errors'''
* {{Code|node()}}, containing the resource itself.
+
|{{Error|BXVA0002|#Errors}} the validation process cannot be started.
{{Code|$schema}} can be used to specify the schema for validation. If no schema is given, {{Code|$input}} is required to contain an {{Code|xsi:(noNamespace)schemaLocation}} attribute as defined in [http://www.w3.org/TR/xmlschema-1/#xsi_schemaLocation W3C XML Schema].<br />
+
|}
 +
 
 +
==validate:xsd-report==
 +
 
 +
{| width='100%'
 +
|-
 +
| width='120' | '''Signatures'''
 +
|{{Func|validate:xsd-report|$input as item()|element(report)}}<br />{{Func|validate:xsd-report|$input as item(), $schema as xs:string|element(report)}}
 +
|-
 +
| '''Summary'''
 +
|Validates a document and returns warnings, errors and fatal errors as XML. See [[#validate:xsd|validate:xsd]] for more details on the function arguments.
 
|-
 
|-
 
| '''Errors'''
 
| '''Errors'''
Line 144: Line 165:
 
|-
 
|-
 
| '''Summary'''
 
| '''Summary'''
|Validates the document specified by {{Code|$input}} and returns warnings, errors and fatal errors in a string sequence. The validation schema is specified by {{Code|$schema}}, and {{Code|$compact}} indicates if the schema uses the compact RelaxNG notation. {{Code|$input}} and {{Code|$schema}} can be specified as:
+
|Validates a document and returns warnings, errors and fatal errors in a string sequence. See [[#validate:rng|validate:rng]] for more details on the function arguments.
* {{Code|xs:string}}, containing the path to the resource,
 
* {{Code|xs:string}}, containing the resource in its string representation, or
 
* {{Code|node()}}, containing the resource itself.
 
 
|-
 
|-
 
| '''Errors'''
 
| '''Errors'''
 
|{{Error|BXVA0002|#Errors}} the validation process cannot be started.<br/>{{Error|BXVA0003|#Errors}} the RelaxNG validator is not available.
 
|{{Error|BXVA0002|#Errors}} the validation process cannot be started.<br/>{{Error|BXVA0003|#Errors}} the RelaxNG validator is not available.
 +
|}
 +
 +
==validate:rng-report==
 +
 +
{| width='100%'
 +
|-
 +
| width='120' | '''Signatures'''
 +
|{{Func|validate:rng-report|$input as item(), $schema as xs:string|element(report)}}<br />{{Func|validate:rng-report|$input as item(), $schema as xs:string, $compact as xs:boolean|element(report)}}
 +
|-
 +
| '''Summary'''
 +
|Validates a document and returns warnings, errors and fatal errors as XML. See [[#validate:rng|validate:rng]] for more details on the function arguments.
 +
|-
 +
| '''Errors'''
 +
|{{Error|BXVA0002|#Errors}} the validation process cannot be started.
 
|}
 
|}
  
Line 173: Line 205:
 
;Version 8.3
 
;Version 8.3
 
* Added: [[#validate:rng|validate:rng]], [[#validate:rng-info|validate:rng-info]]
 
* Added: [[#validate:rng|validate:rng]], [[#validate:rng-info|validate:rng-info]]
 +
* Added: [[#validate:dtd-report|dtd-report]], [[#validate:xsd-report|xsd-report]], [[#validate:rng-report|validate:rng-report]]
  
 
;Version 7.6
 
;Version 7.6

Revision as of 16:54, 24 August 2015

This XQuery Module contains functions to perform validations against DTDs, XML Schema and (since Version 8.3) RelaxNG:

  • For DTDs and XML Schema, Java’s standard validators is used.
  • For XML Schema, the Saxon XSLT ProcessorSaxonHE.jar, SaxonPE.jar, or SaxonEE.jar – is used if it is added to the classpath.
  • For RelaxNG, Jing must be added to the classpath. The latest version, jing-20091111.jar, is included in the full distributions of BaseX.

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: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 document specified by $input. $input 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.

$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 validation fails.
BXVA0002: the validation process cannot be started.
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 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 a document and returns warnings, errors and fatal errors in a string sequence. See validate:dtd for more details on the function arguments.
Errors BXVA0002: the validation process cannot be started.

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 a document and returns warnings, errors and fatal errors as XML. See validate:dtd for more details on the function arguments.
Errors BXVA0002: the validation process cannot be started.

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 can be specified as:
  • xs:string, containing the path to the resource,
  • xs:string, containing the resource in its string representation, or
  • 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 attribute as defined in W3C XML Schema.

Errors BXVA0001: the validation fails.
BXVA0002: the validation process cannot be started.
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: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.

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.

validate:rng

Introduced with Version 8.3:

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 document specified by $input. The validation schema is specified by $schema, and $compact indicates if the schema uses the compact RelaxNG notation. Both $input and $schema can be specified as:
  • xs:string, containing the path to the resource,
  • xs:string, containing the resource in its string representation, or
  • node(), containing the resource itself.
Errors BXVA0001: the validation fails.
BXVA0002: the validation process cannot be started.
BXVA0003: the RelaxNG validator is not available.
Examples
  • validate:rng('doc.xml', 'doc.rng') validates the document doc.xml against the specified schema doc.rng.

validate:rng-info

Introduced with Version 8.3:

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 a document and returns warnings, errors and fatal errors in a string sequence. See validate:rng for more details on the function arguments.
Errors BXVA0002: the validation process cannot be started.
BXVA0003: the RelaxNG validator is not available.

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 a document and returns warnings, errors and fatal errors as XML. See validate:rng for more details on the function arguments.
Errors BXVA0002: the validation process cannot be started.

Errors

Code Description
BXVA0001 The document cannot be validated against the specified DTD or XML Schema.
BXVA0002 The validation cannot be started.
BXVA0003 No RelaxNG validator is available.

Changelog

Version 8.3
Version 7.6

The module was introduced with Version 7.3.