The AndroMDA Profile must comply with the following XSD Schema:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="allowedValues"> <xs:annotation> <xs:documentation> The values that are allowed for a given profile element. </xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element name="value" minOccurs="1" maxOccurs="unbounded"> <xs:annotation> <xs:documentation> Defines an allowed value. The default flag can only be set on one of the values. </xs:documentation> </xs:annotation> <xs:complexType> <xs:simpleContent> <xs:extension base="xs:string"> <xs:attribute name="default" type="xs:boolean" use="optional"/> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="appliedOnElement" type="xs:anyType"> <xs:annotation> <xs:documentation> The model element on which the profile element can be applied. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="documentation" type="xs:anyType"/> <xs:element name="element"> <xs:annotation> <xs:documentation> Represents a <em>profile element</em>. This are used to define profile element names and values. </xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element ref="documentation" minOccurs="0" maxOccurs="1"> <xs:annotation> <xs:documentation> Defines any documentation about this element. </xs:documentation> </xs:annotation> </xs:element> <xs:element name="value" type="xs:string" minOccurs="0" maxOccurs="1"> <xs:annotation> <xs:documentation> The actual value of the profile element, such as <em>Entity</em>. </xs:documentation> </xs:annotation> </xs:element> <xs:element ref="appliedOnElement" minOccurs="0" maxOccurs="1"/> <xs:element ref="allowedValues" minOccurs="0" maxOccurs="1"/> </xs:sequence> <xs:attribute name="name" type="xs:string" use="required"> <xs:annotation> <xs:documentation> The logical name of the profile element. </xs:documentation> </xs:annotation> </xs:attribute> </xs:complexType> </xs:element> <xs:element name="elementGroup"> <xs:annotation> <xs:documentation> Groups profile elements logical by some common aspect (such as 'Stereotypes' for example). </xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element ref="documentation" minOccurs="0" maxOccurs="1"> <xs:annotation> <xs:documentation> Any documentation about this <em>group</em> of elements. </xs:documentation> </xs:annotation> </xs:element> <xs:element ref="element" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> <xs:attribute name="name" type="xs:string" use="required"> <xs:annotation> <xs:documentation> The name of this element group such as "Stereotypes". </xs:documentation> </xs:annotation> </xs:attribute> </xs:complexType> </xs:element> <xs:element name="elements"> <xs:annotation> <xs:documentation> Groups all elements for this profile. </xs:documentation> </xs:annotation> <xs:complexType> <xs:sequence> <xs:element ref="elementGroup" minOccurs="1" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:unique name="uniqueElementGroupName"> <xs:selector xpath="elementGroup"/> <xs:field xpath="@name"/> </xs:unique> <xs:unique name="uniqueElementName"> <xs:selector xpath="elementGroup/element"/> <xs:field xpath="@name"/> </xs:unique> </xs:element> <xs:element name="profile"> <xs:complexType> <xs:sequence> <xs:element ref="documentation" minOccurs="0" maxOccurs="1"/> <xs:element ref="elements" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> </xs:schema>