Changes

Jump to navigation Jump to search
95 bytes removed ,  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>
|}
=XML Schema Validation=
 
{{Mark|Updated with Version 9.2:}} Version argument was dropped (the latest version will always be used).
Checks whether an XML document validates against an XML Schema. The input document and the schema can be specified as:
* {{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>
|}
==validate:xsd-processor==
 
{{Mark|Introduced with Version 9.2:}}
{| width='100%'
==validate:xsd-version==
 
{{Mark|Introduced with Version 9.2:}}
{| width='100%'
* {{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,551

edits

Navigation menu