Loading TOC...


   model as Object
) as Sequence


This function is deprecated and will not be supported in MarkLogic 11.
Generate an XSD schema that can be used to validate instance data.

model A valid basic entity model.

Usage Notes

Use this function to generate an XSD schema you can use to validate your instance data. As generated, the schema can be used to validate instance data that conforms to the Entity Services canonical XML. You can customize the schema as needed. You must install the schema in the schemas database to use it for validation.

If the source model includes multiple entity type definitions and the entity types define different entity instance namespace URIs, then this function generates a schema for each namespace.

See Also


// Generate a schema from a basic model and then save it to a file.
const es = require('/MarkLogic/entity-services/entity-services');

const basicModel = fn.doc("/es-ex/models/name.json");
const schema = fn.head(es.schemaGenerate(basicModel));
xdmp.save("/somewhere/name.xsd", schema);

// Customize the schema as needed, then deploy it to the schemas database.
// Once deployed, you can use the schema to validate instance data,
// similar to the following example:

const instanceData = cts.doc('/instances/name/some-instance.xml');
xdmp.validate(instanceData, 'strict');


// Generate a schema from a model.
const es = require('/MarkLogic/entity-services/entity-services');

fn.head( es.schemaGenerate(
  { "info": {
      "title": "Example",
      "version": "1.0.0"
    "definitions": {
      "Name": {
        "properties": {
          "first": { "datatype": "string" },
          "middle": { "datatype": "string" },
          "last": { "datatype": "string" }
        "required": [ "first", "last" ]

/* Result: A schema similar to the following.

<xs:schema elementFormDefault="qualified" 
  <xs:element name="first" type="xs:string"/>
  <xs:element name="middle" type="xs:string"/>
  <xs:element name="last" type="xs:string"/>
  <xs:complexType name="NameType" mixed="true">
    <xs:sequence minOccurs="0">
      <xs:element ref="first"/>
      <xs:element minOccurs="0" ref="middle"/>
      <xs:element ref="last"/>
  <xs:element name="Name" type="NameType"/>


Stack Overflow iconStack Overflow: Get the most useful answers to questions from the MarkLogic community, or ask your own question.