AndroMDA Profile Schema

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>