XML schema attribute extensions
ODABA schema definitions require some ODABA specific schema extensions. Schema extensions are available at www.odaba.com/OXMLExtensions.xsd . Using this schema extensions allow providing complete schema definitions via an XML schema.
A summary of ODABA XML schema extensions is given in the definition below.
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema targetNamespace="http://www.w3.org/XML/1998/namespace" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:attribute name="alignment" type="xs:integer"/>
<xs:attribute name="assignment" type="xs:string"/>
<xs:attribute name="baseCollection" type="xs:string"/>
<xs:attribute name="complete" type="xs:boolean" default="false"/>
<xs:attribute name="dataType" type="xs:string"/>
<xs:attribute name="deleteEmpty" type="xs:boolean" default="false"/>
<xs:attribute name="dependent" type="xs:boolean" default="false"/>
<xs:attribute name="descending" type="xs:boolean" default="false"/>
<xs:attribute name="dimension" type="xs:integer"/>
<xs:attribute name="distinct" type="xs:boolean" default="false"/>
<xs:attribute name="elementType">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="BaseType"/>
<xs:enumeration value="Attribute"/>
<xs:enumeration value="Reference"/>
<xs:enumeration value="Relationship"/>
<xs:enumeration value="Key"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="guid" type="xs:boolean" default="false"/>
<xs:attribute name="ignoreCase" type="xs:boolean" default="false"/>
<xs:attribute name="intersect" type="xs:boolean" default="false"/>
<xs:attribute name="inverse" type="xs:string"/>
<xs:attribute name="keyComponents" type="xs:string"/> <!-- one or more key components separated by comma, e.g. "name(descending),first_name" -->
<xs:attribute name="identKey" type="xs:boolean" default="false"/>
<xs:attribute name="multipleKey" type="xs:boolean" default="false"/>
<xs:attribute name="noCreate" type="xs:boolean" default="false"/>
<xs:attribute name="notEmpty" type="xs:boolean" default="false"/>
<xs:attribute name="orderKeys" type="xs:string"/> <!-- one or more order keys separated by comma, e.g. "key_name1(unique),keyname2" -->
<xs:attribute name="owner" type="xs:boolean" default="false"/>
<xs:attribute name="precision" type="xs:integer"/>
<xs:attribute name="privilege">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="private"/>
<xs:enumeration value="public"/>
<xs:enumeration value="protected"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="referenceLevel">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="byValue"/>
<xs:enumeration value="byReference"/>
<xs:enumeration value="byPointer"/>
<xs:enumeration value="byPointerPointer"/>
<xs:enumeration value="generic"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="secondary" type="xs:boolean" default="false"/>
<xs:attribute name="size" type="xs:integer"/>
<xs:attribute name="static" type="xs:boolean" default="false"/>
<xs:attribute name="subSet" type="xs:string"/>
<xs:attribute name="superSet" type="xs:string"/>
<xs:attribute name="transient" type="xs:boolean" default="false"/>
<xs:attribute name="update" type="xs:boolean" default="false"/>
<xs:attribute name="version" type="xs:integer"/>
<xs:attribute name="virtual" type="xs:boolean" default="false"/>
<xs:attribute name="weakTyped" type="xs:boolean" default="false"/>
</xs:schema>

