xdmp:json-validate-report-node( $node as node(), $schema as node(), $options as xs:string* ) as element(xdmp:validation-errors)
Validate a JSON node against a JSON Schema and return an error report.
xdmp:json-validate-report-node( object-node{ "count": 3, "items": array-node{12} }, object-node{ "properties": object-node{ "count": object-node{ "type":"integer", "minimum":0 }, "items": object-node{ "type":"array", "items": object-node{"type":"string", "minLength":1 } } } }) => <xdmp:validation-errors xmlns:xdmp="http://marklogic.com/xdmp"> <error:error xmlns:error="http://marklogic.com/xdmp/error" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <error:code>XDMP-JSVALIDATEINVTYPE</error:code> <error:name/> <error:xquery-version>1.0-ml</error:xquery-version> <error:message>Invalid node type</error:message> <error:format-string>XDMP-JSVALIDATEINVTYPE: Invalid node type: Expected node of type text, found number at number-node{12} using schema ""</error:format-string> <error:retryable>false</error:retryable> <error:expr/> <error:data> <error:datum>number-node{12}</error:datum> <error:datum>""</error:datum> <error:datum>text</error:datum> <error:datum>number</error:datum> </error:data> <error:stack> <error:frame> <error:line>2</error:line> <error:column>2</error:column> <error:xquery-version>1.0-ml</error:xquery-version> </error:frame> </error:stack> </error:error> <error:error xmlns:error="http://marklogic.com/xdmp/error" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <error:code>XDMP-JSVALIDATEINVNODE</error:code> <error:name/> <error:xquery-version>1.0-ml</error:xquery-version> <error:message>Invalid node</error:message> <error:format-string>XDMP-JSVALIDATEINVNODE: Invalid node: Node number-node{12} not valid against property 'items' expected {type: string, minLength: 1} using schema ""</error:format-string> <error:retryable>false</error:retryable> <error:expr/> <error:data> <error:datum>items</error:datum> <error:datum>number-node{12}</error:datum> <error:datum>""</error:datum> <error:datum>{type: string, minLength: 1}</error:datum> </error:data> <error:stack> <error:frame> <error:line>2</error:line> <error:column>2</error:column> <error:xquery-version>1.0-ml</error:xquery-version> </error:frame> </error:stack> </error:error> <error:error xmlns:error="http://marklogic.com/xdmp/error" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <error:code>XDMP-JSVALIDATEINVNODE</error:code> <error:name/> <error:xquery-version>1.0-ml</error:xquery-version> <error:message>Invalid node</error:message> <error:format-string>XDMP-JSVALIDATEINVNODE: Invalid node: Node object-node{"count":number-node{3}, "items":array-node{number-node{12}}} not valid against property 'properties' expected {properties: {count:{...}, items:{...}}} using schema ""</error:format-string> <error:retryable>false</error:retryable> <error:expr/> <error:data> <error:datum>properties</error:datum> <error:datum>object-node{"count":number-node{3}, "items":array-node{number-node{12}}}</error:datum> <error:datum>""</error:datum> <error:datum>{properties: {count:{...}, items:{...}}}</error:datum> </error:data> <error:stack> <error:frame> <error:line>2</error:line> <error:column>2</error:column> <error:xquery-version>1.0-ml</error:xquery-version> </error:frame> </error:stack> </error:error> </xdmp:validation-errors>