
es.schemaGenerate( 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.
| Parameters | |
|---|---|
| model | A valid basic entity model. |
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.
// 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"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:sem="http://marklogic.com/semantics"
xmlns:es="http://marklogic.com/entity-services">
<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:sequence>
</xs:complexType>
<xs:element name="Name" type="NameType"/>
</xs:schema>
*/
Stack Overflow: Get the most useful answers to questions from the MarkLogic community, or ask your own question.