The AndroMDA Configuration must comply with the following XSD Schema:
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="andromda">
<xs:complexType>
<xs:sequence>
<xs:element ref="properties" minOccurs="0"/>
<xs:element ref="server" minOccurs="0"/>
<xs:element ref="repositories"/>
<xs:element ref="mappingsSearchLocations" minOccurs="0"/>
<xs:element ref="namespaces"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="host" type="xs:string"/>
<xs:element name="loadInterval" type="xs:integer"/>
<xs:element name="location">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="patterns" type="xs:string" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="moduleSearchLocations">
<xs:complexType>
<xs:sequence>
<xs:element ref="location" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="mappingsSearchLocations">
<xs:complexType>
<xs:sequence>
<xs:element ref="location" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="maximumFailedLoadAttempts" type="xs:integer"/>
<xs:element name="model">
<xs:complexType>
<xs:sequence>
<xs:element ref="uri" minOccurs="1" maxOccurs="unbounded"/>
<xs:element ref="transformations" minOccurs="0"/>
<xs:element ref="moduleSearchLocations" minOccurs="0"/>
<xs:element ref="modelPackages" minOccurs="0"/>
<xs:element ref="constraints" minOccurs="0">
<xs:annotation>
<xs:documentation>
These control the way model validation is handled, it is possible to filter
out certain constraints so that they are not applied to your model(s).
</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
<xs:attribute name="lastModifiedCheck" type="xs:boolean" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="modelPackage">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="process" type="xs:boolean" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="modelPackages">
<xs:complexType>
<xs:sequence>
<xs:element ref="modelPackage" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="processAll" type="xs:boolean" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="constraint">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="enforce" type="xs:boolean" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="constraints">
<xs:complexType>
<xs:sequence>
<xs:element ref="constraint" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="enforceAll" type="xs:boolean" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="models">
<xs:complexType>
<xs:sequence>
<xs:element ref="model" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="namespace">
<xs:complexType>
<xs:sequence>
<xs:element ref="properties"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="namespaces">
<xs:complexType>
<xs:sequence>
<xs:element ref="namespace" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="uniqueNamespaceName">
<xs:selector xpath="namespace"/>
<xs:field xpath="@name"/>
</xs:unique>
</xs:element>
<xs:element name="port" type="xs:integer"/>
<xs:element name="properties">
<xs:complexType>
<xs:sequence>
<xs:element ref="property" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="uniquePropertyName">
<xs:selector xpath="property"/>
<xs:field xpath="@name"/>
</xs:unique>
</xs:element>
<xs:element name="property">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="name" type="xs:string" use="required"/>
<xs:attribute name="ignore" type="xs:boolean" use="optional"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="repository">
<xs:complexType>
<xs:sequence>
<xs:element ref="models" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required">
<xs:annotation>
<xs:documentation>
The unique name of the repository.
</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="repositories">
<xs:complexType>
<xs:sequence>
<xs:element ref="repository" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="uniqueRepositoryName">
<xs:selector xpath="repository"/>
<xs:field xpath="@name"/>
</xs:unique>
</xs:element>
<xs:element name="server">
<xs:complexType>
<xs:sequence>
<xs:element ref="host"/>
<xs:element ref="port"/>
<xs:element ref="loadInterval" minOccurs="0"/>
<xs:element ref="maximumFailedLoadAttempts" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="transformation">
<xs:complexType>
<xs:sequence>
<xs:element ref="uri" minOccurs="1"/>
<xs:element ref="moduleSearchLocations" minOccurs="0"/>
<xs:element ref="modelPackages" minOccurs="0"/>
</xs:sequence>
<xs:attribute name="output" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="transformations">
<xs:complexType>
<xs:sequence>
<xs:element ref="transformation" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="uri" type="xs:string"/>
</xs:schema>