Changes

Jump to navigation Jump to search
90 bytes added ,  13:19, 2 July 2020
* {{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 classsyntaxhighlight lang="brush:xquery">
try {
let $doc := <invalid/>
'DTD Validation failed.'
}
</presyntaxhighlight>
|}
|
* <code>validate:dtd-report(<invalid/>, '<!ELEMENT root (#PCDATA)>')</code> returns:
<pre classsyntaxhighlight lang="brush:xml">
<report>
<status>invalid</status>
<message level="Error" line="2" column="11">Element type "invalid" must be declared.</message>
</report>
</presyntaxhighlight>
|}
* {{Code|node()}}, containing the resource itself.
If no schema is given, the input is expected to contain an {{Code|xsi:(noNamespace)schemaLocation}} attribute, as defined in [httphttps://www.w3.org/TR/xmlschema-1/#xsi_schemaLocation W3C XML Schema].
Different XML Schema processors are supported:
* By default, the '''Java implementation''' of XML Schema 1.0 is used (it is based on an old version of Apache Xerces).
* The latest version of '''Xerces2''' provides implementations of XML Schema 1.0 and 1.1. The processor will be applied if you download one of the [httphttps://xerces.apache.org/mirrors.cgi#binary binary distributions] and copy the following libraries to the {{Code|lib/custom}} directory of the full distribution of BaseX:
** {{Code|org.eclipse.wst.xml.xpath2.processor_1.2.0.jar}}
** {{Code|cupv10k-runtime.jar}}
** {{Code|xercesImpl.jar}}
** {{Code|xml-apis.jar}}
* '''Saxon Enterprise Edition''' will be applied used if you download the [https://www.saxonica.com/download/java.xml ZIP release] and if you copy {{Code|saxon9ee.jar}} and a valid license key to the classpath.
==validate:xsd==
|
* Pass on document and schema as nodes:
<pre classsyntaxhighlight lang="brush:xquery">
let $doc := <simple:root xmlns:simple='http://basex.org/simple'/>
let $schema :=
</xs:schema>
return validate:xsd($doc, $schema)
</presyntaxhighlight>
* Validate all documents of a database against the specified schema, using the supplied feature:
<pre classsyntaxhighlight lang="brush:xquery">
for $city in db:open('cities')
return validate:xsd($city, 'city.xsd',
map { 'http://javax.xml.XMLConstants/feature/secure-processing': true() }
)
</presyntaxhighlight>
|}
* {{Code|node()}}, containing the resource itself.
RelaxNG validation will be available if [httphttps://wwwrelaxng.thaiopensource.comorg/relaxngjclark/jing.html Jing] exists in the classpath. The latest version, {{Code|jing-20091111.jar}}, is included in the full distributions of BaseX. As Jing additionally supports [http://www.nvdl.org/ NVDL] validation, you can also use the functions to validate the input against NVDL schemas.
==validate:rng==
If you want to use Schematron for validating documents, simply install Vincent Lizzi’s excellent [https://github.com/Schematron/schematron-basex Schematron XQuery Module for BaseX]:
<pre classsyntaxhighlight lang="brush:xquery">
repo:install('https://github.com/Schematron/schematron-basex/raw/master/dist/schematron-basex-1.2.xar')
</presyntaxhighlight>
The following query illustrates how documents are validated. It is directly taken from the GitHub project:
<pre classsyntaxhighlight lang="brush:xquery">
import module namespace schematron = "http://github.com/Schematron/schematron-basex";
return concat(schematron:message-level($message), ': ', schematron:message-description($message))
)
</presyntaxhighlight>
=Errors=
Bureaucrats, editor, reviewer, Administrators
13,550

edits

Navigation menu