XSD (XML Schema Definition)
Important note: the purpose of this functionality is NOT to provide full compatibility with XSD syntax, but just to import models from other ER tools. As a a result, Hackolade does not currently support, among other things, mixed content types, deriving types by restriction, or XSD import and include.
If you have logical or physical models in ER/Studio Architect, erwin, InfoSphere, PowerDesigner, or others, you may want to import them into Hackolade.
To do so, you need to first export your model to an XSD schema. Please refer to your ER tool's documentation for more info.
Then, go to Tools > Reverse-Engineer > XSD Schema and choose the file exported.
The structure of an XSD can be imported either as an entity in the Entity Relationship Diagram, or alternatively as a model definition so it could be re-used in the model:
If you wish to force the destination of the reverse-engineering operation, you may specify the container in which the entities should be inserted.
Your next steps might be to start denormalizing and embedding, using this Hackolade function.
For specific instructions on configuration to export XSD, please refer to the respective pages:
- erwin
XSDs can be imported in Hackolade:
- as entities in the ER diagram (not available for Swagger or OpenAPI targets)
- as model definitions to be reused anywhere in the model
Sometimes with logical models exported from some ER tools likes erwin, they replace spaces in object names with underscores. When importing those models into a Hackolade Studio polyglot model, it might be desirable to restore object names to a regular business name. To that effect, we provide the option to perform a case conversion upon import. Proper Case or Title Case are likely candidates for this option.
XML Schema Definition conversion in Hackolade
An XSD defines the structure of an XML document. It specifies the elements and attributes that can appear in an XML document and the type of data these elements and attributes can contain.
XSD Elements
Element structures can be of simpleType or complexType, depending on whether the element is a leaf element or a parent element.
XSD elements can be of type simpleType, complexType, or anyType:
- an element of type simpleType contains only text. It cannot have attributes and elements.
- an element of type complexType can contain text, elements, and attributes. An element of type complexType is parent to all the elements and attributes contained within it.
- an any element in an XSD specifies that any well-formed XML is allowed in its place in XML instance.
XSD attributes are always of type simpleType.
Elements can be local or global. An element declared as the direct child of an XML schema is called a global element and can be used throughout the schema. Elements declared within a complexType definition are local elements. So, you cannot use these elements anywhere else in the schema.
XSD Attributes
XSD attributes are always of type simpleType.
Attributes are stored as member of the object created for the parent element. An attribute group defines an association between a name and a set of attribute declarations. You can reuse the attribute groups in complexType definitions.
An attribute group defines an association between a name and a set of attribute declarations. Attribute groups can be reused in complexType definitions.
XSD Type Definitions
XSD Type definitions are used to create new simpleType data type or complexType data type. A type definition that is used as a base for creating new definitions is known as the base type definition. A simpleType or complexType type can be either named or anonymous. A named simpleType or complexType is always defined globally. You can define a named simpleType or complexType and refer it in schema document as type of an element. An anonymous simpleType or complexType type does not have a name. So, an anonymous simpleType or complexType type cannot be referenced.
A simpleType type is derived from an XML schema built-in data type. A complexType type definition contains a set of element declarations, element references, and attribute declarations.A complexType type is first defined in the schema, and then the elements and attributes of this complexType type.
Below is the data type conversion from XSD to JSON Schema. Some additional granularity is possible with some targets.
XML Schema Type | JSON Schema Representation |
---|---|
anySimpleType | string, number, integer, boolean, null |
anyType | string, number, integer, boolean, null, object, array |
string | string |
normalizedString | string |
token | string |
language | string |
Name | string |
NCName | string |
ID | string |
IDREF | string |
IDREFS | array of strings |
ENTITY | string |
ENTITIES | array of strings |
NMTOKEN | string |
NMTOKENS | array of strings |
boolean | boolean |
base64Binary | binary | string |
hexBinary | string |
float | number |
double | number |
decimal | number |
integer | integer |
nonPositiveInteger | integer |
negativeInteger | integer |
long | integer |
int | integer |
short | integer |
byte | integer |
nonNegativeInteger | integer |
unsignedLong | integer |
unsignedInt | integer |
unsignedShort | integer |
unsignedByte | integer |
positiveInteger | integer |
anyURI | string with "format":"uri" |
QName | object with "namespaceURI", "localPart", "prefix" |
duration | string with ‘format: “duration” |
dateTime | string with "format":"date-time" |
date | string with "format":"date" |
time | string with "format":"time" |