op:validate-doc( $validateDocCol as item(), $schemaDef as map:map ) as map:map
Validate the document based on a supplied schema. This schema needs to be stored in the schema database. Check appserver error log for validate errors.
Parameters | |
---|---|
$validateDocCol | This is the column which contains the document to validate. This can be a string of the column name or an op:col. Use op:view-col or op:schema-col if you need to identify columns in the two views that have the same column name. |
$schemaDef | The required 'kind' key of the schemaDef map must be 'jsonSchema', 'schematron', or 'xmlSchema'. When 'kind' is 'jsonSchema' or 'schemtron' then a key 'schemaUri' is required. Key 'mode' takes 'strict', 'lax' or 'type' (refer to xdmp:validate). |
xquery version "1.0-ml"; import module namespace op="http://marklogic.com/optic" at "/MarkLogic/optic.xqy"; let $doc-descriptors := ( map:entry("uri", '/optic/validateDoc/toValidate1.xml'), map:entry("uri", '/optic/validateDoc/toValidate2.xml'), map:entry("uri", '/optic/validateDoc/toValidate3.xml') ) let $schemadef := map:entry("kind", "xmlSchema")=>map:with("mode", "strict") return op:from-doc-descriptors($doc-descriptors, "view") =>op:join-doc-cols(op:doc-cols("view"), op:view-col("view", "uri")) =>op:validate-doc(op:view-col("view", "doc"), $schemadef) =>op:result()
xquery version "1.0-ml"; import module namespace op="http://marklogic.com/optic" at "/MarkLogic/optic.xqy"; let $doc-descriptors := ( map:entry("uri", '/optic/validateDoc/toValidate1.xml'), map:entry("uri", '/optic/validateDoc/toValidate2.xml'), map:entry("uri", '/optic/validateDoc/toValidate3.xml'), map:entry("uri", '/optic/validateDoc/toValidate4.xml') ) let $schemadef := map:entry("kind", "xmlSchema")=>map:with("mode", "type")=>map:with("type", fn:QName("http://marklogic.com/xdmp/group", "count")) return op:from-doc-descriptors($doc-descriptors) =>op:join-doc-cols((), op:col("uri")) =>op:order-by("uri") =>op:validate-doc("doc", $schemadef) =>op:result()
xquery version "1.0-ml"; import module namespace op="http://marklogic.com/optic" at "/MarkLogic/optic.xqy"; let $doc-descriptors := ( map:entry("uri", '/optic/validateDoc/validate1.json'), map:entry("uri", '/optic/validateDoc/validate2.json'), map:entry("uri", '/optic/validateDoc/validate3.json'), map:entry("uri", '/optic/validateDoc/validate4.json') ) let $schemadef := map:entry("kind", "jsonSchema") =>map:with("schemaUri", "/validateDoc-test.json") =>map:with("mode", "full") return op:from-doc-descriptors($doc-descriptors) =>op:join-doc-cols((), op:col("uri")) =>op:order-by("uri") =>op:validate-doc("doc", $schemadef) =>op:result()
xquery version "1.0-ml"; import module namespace op="http://marklogic.com/optic" at "/MarkLogic/optic.xqy"; let $doc-descriptors := ( map:entry("uri", '/optic/validateDoc/toValidateSchematron1.xml'), map:entry("uri", '/optic/validateDoc/toValidateSchematron2.xml'), map:entry("uri", '/optic/validateDoc/toValidateSchematron3.xml') ) let $schemadef := map:entry("kind", "schematron") =>map:with("schemaUri", "/validateDoc-test.sch") return op:from-doc-descriptors($doc-descriptors, "view") =>op:join-doc-cols(op:doc-cols("view"), op:view-col("view","uri")) =>op:validate-doc(op:view-col("view","doc"), $schemadef) =>op:result()