Difference between revisions of "Validation Module"
m (Text replace - "assigned to the \{\{Code\|([^}]*)\}\} namespace" to "assigned to the <code><nowiki>$1</nowiki></code> namespace") |
|||
Line 1: | Line 1: | ||
− | This [[Module Library|XQuery Module]] contains functions to perform validations against [http://www.w3.org/XML/Schema XML Schema] and [http:// | + | This [[Module Library|XQuery Module]] contains functions to perform validations against [http://en.wikipedia.org/wiki/Document_Type_Declaration DTDs], [http://www.w3.org/XML/Schema XML Schema] and (since {{Version|8.3}}) [http://relaxng.org/ RelaxNG]: |
+ | |||
+ | * For DTDs and XML Schema, Java’s standard validators is used. | ||
+ | * For XML Schema, the [http://www.saxonica.com/ Saxon XSLT Processor] is used if it is added to the classpath. | ||
+ | * For RelaxNG, [http://www.thaiopensource.com/relaxng/jing.html Jing] must be added to the classpath. Jing is included in the full distributions of BaseX. | ||
=Conventions= | =Conventions= | ||
Line 7: | Line 11: | ||
=Functions= | =Functions= | ||
+ | |||
+ | ==validate:dtd== | ||
+ | {| width='100%' | ||
+ | |- | ||
+ | | width='120' | '''Signatures''' | ||
+ | |{{Func|validate:dtd|$input as item()|empty-sequence()}}<br />{{Func|validate:dtd|$input as item(), $dtd as xs:string|empty-sequence()}} | ||
+ | |- | ||
+ | | '''Summary''' | ||
+ | |Validates the document specified by {{Code|$input}}. {{Code|$input}} can be specified as: | ||
+ | * an {{Code|xs:string}}, containing the path to the resource, | ||
+ | * an {{Code|xs:string}}, containing the resource in its string representation, or | ||
+ | * a {{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''' | ||
+ | |{{Error|BXVA0001|#Errors}} the validation fails.<br/>{{Error|BXVA0002|#Errors}} the validation process cannot be started. | ||
+ | |- | ||
+ | | '''Examples''' | ||
+ | | | ||
+ | * {{Code|validate:dtd('doc.xml', 'doc.dtd')}} validates the document {{Code|doc.xml}} against the specified DTD file {{Code|doc.dtd}}. | ||
+ | * The following example validates an invalid document against a DTD, which is specified as string: | ||
+ | <pre class="brush:xquery"> | ||
+ | try { | ||
+ | let $doc := <invalid/> | ||
+ | let $dtd := '<!ELEMENT root (#PCDATA)>' | ||
+ | return validate:dtd($doc, $dtd) | ||
+ | } catch BXVA0001 { | ||
+ | 'DTD Validation failed.' | ||
+ | } | ||
+ | </pre> | ||
+ | |- | ||
+ | |} | ||
+ | |||
+ | ==validate:dtd-info== | ||
+ | |||
+ | {| width='100%' | ||
+ | |- | ||
+ | | 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*}} | ||
+ | |- | ||
+ | | '''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: | ||
+ | * {{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''' | ||
+ | |{{Error|BXVA0002|#Errors}} the validation process cannot be started. | ||
+ | |} | ||
==validate:xsd== | ==validate:xsd== | ||
+ | |||
{| width='100%' | {| width='100%' | ||
|- | |- | ||
Line 56: | Line 111: | ||
|} | |} | ||
− | ==validate: | + | ==validate:rng== |
+ | |||
+ | {{Mark|Introduced with Version 8.3}}: | ||
+ | |||
{| width='100%' | {| width='100%' | ||
|- | |- | ||
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
− | |{{Func|validate: | + | |{{Func|validate:rng|$input as item(), $schema as item()|empty-sequence()}}<br/>{{Func|validate:rng|$input as item(), $schema as item(), $compact as xs:boolean|empty-sequence()}} |
|- | |- | ||
| '''Summary''' | | '''Summary''' | ||
− | |Validates the document specified by {{Code|$input}}. {{Code|$input}} can be specified as: | + | |Validates the document specified by {{Code|$input}}. The validation schema is specified by {{Code|$schema}}, and {{Code|$compact}} indicates if the schema uses the compact RelaxNG notation. Both {{Code|$input}} and {{Code|$schema}} can be specified as: |
− | * | + | * {{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|BXVA0001|#Errors}} the validation fails.<br/>{{Error|BXVA0002|#Errors}} the validation process cannot be started. | + | |{{Error|BXVA0001|#Errors}} the validation fails.<br/>{{Error|BXVA0002|#Errors}} the validation process cannot be started.<br/>{{Error|BXVA0003|#Errors}} the RelaxNG validator is not available. |
|- | |- | ||
| '''Examples''' | | '''Examples''' | ||
| | | | ||
− | * {{Code|validate: | + | * {{Code|validate:rng('doc.xml', 'doc.rng')}} validates the document {{Code|doc.xml}} against the specified schema {{Code|rng.xsd}}. |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|} | |} | ||
− | ==validate: | + | ==validate:rng-info== |
+ | |||
+ | {{Mark|Introduced with Version 8.3}}: | ||
{| width='100%' | {| width='100%' | ||
|- | |- | ||
| width='120' | '''Signatures''' | | width='120' | '''Signatures''' | ||
− | |{{Func|validate: | + | |{{Func|validate:rng-info|$input as item(), $schema as item()|xs:string*}}<br/>{{Func|validate:rng-info|$input as item(), $schema as item(), $compact as xs:boolean|xs:string*}} |
|- | |- | ||
| '''Summary''' | | '''Summary''' | ||
− | |Validates the document specified by {{Code|$input}} and returns | + | |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: |
* {{Code|xs:string}}, containing the path to the resource, | * {{Code|xs:string}}, containing the path to the resource, | ||
* {{Code|xs:string}}, containing the resource in its string representation, or | * {{Code|xs:string}}, containing the resource in its string representation, or | ||
* {{Code|node()}}, containing the resource itself. | * {{Code|node()}}, containing the resource itself. | ||
− | |||
|- | |- | ||
| '''Errors''' | | '''Errors''' | ||
− | |{{Error|BXVA0002|#Errors}} the validation process cannot be started. | + | |{{Error|BXVA0002|#Errors}} the validation process cannot be started.<br/>{{Error|BXVA0003|#Errors}} the RelaxNG validator is not available. |
|} | |} | ||
Line 117: | Line 164: | ||
|{{Code|BXVA0002}} | |{{Code|BXVA0002}} | ||
|The validation cannot be started. | |The validation cannot be started. | ||
+ | |- | ||
+ | |{{Code|BXVA0003}} | ||
+ | |No RelaxNG validator is available. | ||
|} | |} | ||
=Changelog= | =Changelog= | ||
+ | |||
+ | ;Version 8.3 | ||
+ | * Added: [[#validate:rng|validate:rng]], [[#validate:rng-info|validate:rng-info]] | ||
;Version 7.6 | ;Version 7.6 |
Revision as of 15:12, 5 June 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 Processor is used if it is added to the classpath.
- For RelaxNG, Jing must be added to the classpath. Jing is included in the full distributions of BaseX.
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.
Functions
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 can be specified as:
|
Errors | BXVA0001 : the validation fails.BXVA0002 : the validation process cannot be started.
|
Examples |
try { let $doc := <invalid/> let $dtd := '<!ELEMENT root (#PCDATA)>' return validate:dtd($doc, $dtd) } catch BXVA0001 { 'DTD Validation failed.' } |
validate:dtd-info
Signatures | validate:dtd-info($input as item()) as xs:string* validate:dtd-info($input as item(), $dtd as xs:string) as xs:string*
|
Summary | Validates the document specified by $input and returns warning, errors and fatal errors in a string sequence. $input can be specified as:
|
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:
|
Errors | BXVA0001 : the validation fails.BXVA0002 : the validation process cannot be started.
|
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 the document specified by $input and returns warning, errors and fatal errors in a string sequence. $input and $schema can be specified as:
|
Errors | BXVA0002 : the validation process cannot be started.
|
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 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:
|
Errors | BXVA0001 : the validation fails.BXVA0002 : the validation process cannot be started.BXVA0003 : the RelaxNG validator is not available.
|
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 document specified by $input and returns warnings, errors and fatal errors in a string sequence. The validation schema is specified by $schema , and $compact indicates if the schema uses the compact RelaxNG notation. $input and $schema can be specified as:
|
Errors | BXVA0002 : the validation process cannot be started.BXVA0003 : the RelaxNG validator is not available.
|
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
- Added: validate:rng, validate:rng-info
- Version 7.6
- Added: validate:xsd-info, validate:dtd-info
The module was introduced with Version 7.3.