AndroMDA Namespace Descriptor Schema

The AndroMDA namespace descriptor must comply with the following XSD Schema:

<
xs:schema
xmlns:xs=
"http://www.w3.org/2001/XMLSchema"
elementFormDefault=
"qualified"
> <
xs:element
name=
"component"
> <
xs:annotation
> <
xs:documentation
> Defines a <
em
>namespace component<
/em
> (that is a component that can be registered with a namespace). <
/xs:documentation
> <
/xs:annotation
> <
xs:complexType
> <
xs:sequence
> <
xs:element
name=
"path"
type=
"xs:string"
minOccurs=
"0"
maxOccurs=
"unbounded"
> <
xs:annotation
> <
xs:documentation
> Defines a path (relative to the namespace component) of where to find the component descriptor. <
/xs:documentation
> <
/xs:annotation
> <
/xs:element
> <
/xs:sequence
> <
xs:attribute
name=
"name"
type=
"componentName"
use=
"required"
> <
xs:annotation
> <
xs:documentation
> The unique name of the component type. <
/xs:documentation
> <
/xs:annotation
> <
/xs:attribute
> <
/xs:complexType
> <
/xs:element
> <
xs:simpleType
name=
"componentName"
> <
xs:annotation
> <
xs:documentation
> Stores the possible component names <
/xs:documentation
> <
/xs:annotation
> <
xs:restriction
base=
"xs:string"
> <
xs:enumeration
value=
"cartridge"
> <
xs:annotation
> <
xs:documentation
> Represents the 'cartridge' component. Use this to register a cartridge in a namespace. <
/xs:documentation
> <
/xs:annotation
> <
/xs:enumeration
> <
xs:enumeration
value=
"metafacades"
> <
xs:annotation
> <
xs:documentation
> Represents the 'metafacades' component. Use this to register a set of metafacades in a namespace. <
/xs:documentation
> <
/xs:annotation
> <
/xs:enumeration
> <
xs:enumeration
value=
"profile"
> <
xs:annotation
> <
xs:documentation
> Represents the 'profile' component. Use this to register a profile in a namespace. <
/xs:documentation
> <
/xs:annotation
> <
/xs:enumeration
> <
xs:enumeration
value=
"repository"
> <
xs:annotation
> <
xs:documentation
> Represents the 'repository' component. Use this to register a repository in a namespace. <
/xs:documentation
> <
/xs:annotation
> <
/xs:enumeration
> <
xs:enumeration
value=
"translation-library"
> <
xs:annotation
> <
xs:documentation
> Represents the 'translation-library' component. Use this to register a translation-library in your namespace. <
/xs:documentation
> <
/xs:annotation
> <
/xs:enumeration
> <
/xs:restriction
> <
/xs:simpleType
> <
xs:element
name=
"components"
> <
xs:complexType
> <
xs:sequence
> <
xs:element
ref=
"component"
minOccurs=
"1"
maxOccurs=
"unbounded"
/
> <
/xs:sequence
> <
/xs:complexType
> <
xs:unique
name=
"uniqueComponentName"
> <
xs:selector
xpath=
"component"
/
> <
xs:field
xpath=
"@name"
/
> <
/xs:unique
> <
/xs:element
> <
xs:element
name=
"default"
type=
"xs:string"
/
> <
xs:element
name=
"documentation"
type=
"xs:anyType"
/
> <
xs:element
name=
"namespace"
> <
xs:complexType
> <
xs:sequence
> <
xs:element
ref=
"components"
minOccurs=
"1"
maxOccurs=
"1"
/
> <
xs:element
ref=
"properties"
minOccurs=
"0"
maxOccurs=
"unbounded"
/
> <
/xs:sequence
> <
xs:attribute
name=
"name"
type=
"xs:string"
use=
"required"
> <
xs:annotation
> <
xs:documentation
> Defines the name of the namespace, this name should be unique among the namespaces that will be used at a given time. <
/xs:documentation
> <
/xs:annotation
> <
/xs:attribute
> <
xs:attribute
name=
"shared"
type=
"xs:boolean"
use=
"optional"
> <
xs:annotation
> <
xs:documentation
> Indicates if component(s) registered by this namespace should be treated as <
em
>shared<
/em
>. Shared can mean for example: these metafacades will be made available to <
strong
>ALL<
/strong
> namespaces. An example of this in use is: we have the "uml" namespace marked as shared because we want these to be able to be used by all cartridges. <
/xs:documentation
> <
/xs:annotation
> <
/xs:attribute
> <
/xs:complexType
> <
/xs:element
> <
xs:element
name=
"property"
> <
xs:annotation
> <
xs:documentation
> Represents a <
em
>namespace property<
/em
>. This are properties used to configure aspects within namespace components (such as cartridges, metafacades, etc). <
/xs:documentation
> <
/xs:annotation
> <
xs:complexType
> <
xs:sequence
> <
xs:element
ref=
"default"
minOccurs=
"0"
maxOccurs=
"1"
> <
xs:annotation
> <
xs:documentation
> The default value given to the property if one isn't explicitly defined. <
/xs:documentation
> <
/xs:annotation
> <
/xs:element
> <
xs:element
ref=
"documentation"
minOccurs=
"0"
maxOccurs=
"1"
> <
xs:annotation
> <
xs:documentation
> Defines any documentation about this property. <
/xs:documentation
> <
/xs:annotation
> <
/xs:element
> <
/xs:sequence
> <
xs:attribute
name=
"name"
type=
"xs:string"
use=
"required"
> <
xs:annotation
> <
xs:documentation
> The name of the property. <
/xs:documentation
> <
/xs:annotation
> <
/xs:attribute
> <
xs:attribute
name=
"required"
type=
"xs:boolean"
use=
"optional"
default=
"true"
> <
xs:annotation
> <
xs:documentation
> Whether or not this property is required (AndroMDA will issue a warning if the property is required but is undefined). <
/xs:documentation
> <
/xs:annotation
> <
/xs:attribute
> <
/xs:complexType
> <
/xs:element
> <
xs:element
name=
"propertyGroup"
> <
xs:annotation
> <
xs:documentation
> Groups properties logical by some common aspect (such as 'Outlets' 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 properties. <
/xs:documentation
> <
/xs:annotation
> <
/xs:element
> <
xs:element
ref=
"property"
minOccurs=
"1"
maxOccurs=
"unbounded"
/
> <
/xs:sequence
> <
xs:attribute
name=
"name"
type=
"xs:string"
use=
"required"
> <
xs:annotation
> <
xs:documentation
> The name of this property group such as "Outlets". <
/xs:documentation
> <
/xs:annotation
> <
/xs:attribute
> <
/xs:complexType
> <
/xs:element
> <
xs:element
name=
"properties"
> <
xs:annotation
> <
xs:documentation
> Groups all properties for this given namespace. <
/xs:documentation
> <
/xs:annotation
> <
xs:complexType
> <
xs:sequence
> <
xs:element
ref=
"propertyGroup"
minOccurs=
"1"
maxOccurs=
"unbounded"
/
> <
/xs:sequence
> <
/xs:complexType
> <
xs:unique
name=
"uniquePropertyGroupName"
> <
xs:selector
xpath=
"propertyGroup"
/
> <
xs:field
xpath=
"@name"
/
> <
/xs:unique
> <
xs:unique
name=
"uniquePropertyName"
> <
xs:selector
xpath=
"propertyGroup/property"
/
> <
xs:field
xpath=
"@name"
/
> <
/xs:unique
> <
/xs:element
> <
/xs:schema
>