in src/models/xsdSchemaConverter.ts [107:173]
private convertElement(jObject: JObject): SchemaNode {
const name = jObject.getAttribute("name");
const originalType = jObject.getAttribute("type");
const isPrimitive = this.isPrimitiveType(originalType);
let type: string;
let $ref: string;
if (isPrimitive) {
type = originalType;
$ref = undefined;
}
else {
type = "object";
$ref = originalType?.split(":").pop();
}
const definition: SchemaObjectContract = {
type: type,
properties: undefined,
$ref: $ref,
rawSchema: jObject.toXml().trim(),
rawSchemaFormat: "xml"
};
jObject.children.forEach(child => {
switch (child.name) {
case "simpleType": {
definition.properties = definition.properties || {};
const simpleTypeNode = this.convertSimpleType(child);
definition.properties[simpleTypeNode.name] = simpleTypeNode.definition;
break;
}
case "complexType": {
const complexTypeNode = this.convertComplexType(child);
if (complexTypeNode.name) {
definition.properties = definition.properties || {};
definition.properties[complexTypeNode.name] = complexTypeNode.definition;
}
else {
Object.assign(definition, complexTypeNode.definition);
}
break;
}
case "element": {
const elementNode = this.convertElement(child);
definition.properties = definition.properties || {};
definition.properties[elementNode.name] = elementNode.definition;
break;
}
default:
console.warn(`Element "${child.name}" by XSD schema converter.`);
break;
}
});
const resultNode: SchemaNode = {
name: name,
definition: definition
};
return resultNode;
}