Hank
Hank

Reputation: 131

JSON Schema Validation Error in MarkLogic - XDMP-VALIDATEERRORS

Using MarkLogic version 10.0-4.2, I am trying to validate a simple JSON record against a simple JSON schema.

JSON Schema:

{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "SourceSystemName": {
        "type": "string"
    },
    "BatchDtTm": {
        "type": "string"
    },
    "SubjectArea": {
        "type": "string"
    },
    "DocumentType": {
        "type": "string"
    },
    "LastUpdatedDt": {
        "type": "string"
    },
  "required": [
    "SourceSystemName",
    "BatchDtTm",
    "SubjectArea",
    "DocumentType",
    "LastUpdatedDt",
  ]
  }
}

Code being run in Query Console:

let jsonRecord = {"SourceSystemName":"ODH","BatchDtTm":"09/17/21 08:51:48:472723","SubjectArea":"Customer","DocumentType":"Preference","LastUpdatedDt":"09/17/21 03:59:53:629707"};

xdmp.jsonValidate(jsonRecord, cts.doc('/schemas/NewSchema.json').toString());

When I run the above code, I get error XDMP-JSVALIDATEBADSCHEMA: Invalid schema "": ""

I'm not really sure what is 'invalid' about my schema. Can someone offer some insight into what MarkLogic is viewing as 'invalid'?

Upvotes: 1

Views: 107

Answers (1)

Mads Hansen
Mads Hansen

Reputation: 66714

The second parameter for $schema is supposed to be the URI of the schema document.

$schema URI of the JSON schema to use for validation.

You are attempting to pass in the stringified content.

Try:

xdmp.jsonValidate(jsonRecord, '/schemas/NewSchema.json');

And ensure that the schema document is inserted into the Schemas database, not the content database.

Upvotes: 2

Related Questions