XML Schema "component.xsd"
Target Namespace:

  http://www.nokia.com/sdt/emf/component

Schema Location:

  C:/dev/CVS-carbide-head/com.nokia.sdt.component.symbian/component.xsd, see XML source

Components:

  73 global elements, 6 local elements, 18 complexTypes, 4 simpleTypes, 1 attribute group

Annotation
Annotation 1
Type mappings are used to store mappings along with a type. Added post 1.2
Annotation 2
Member mappings are used to map a property to a member of a resource.

Global Element Summary
abstractProperty |
Type: | abstractPropertyType
Content: | empty, 8 attributes
Used: | at 3 locations
arrayProperty |
Type: | arrayPropertyType
Content: | empty, 9 attributes
Used: | never
attribute |
Type: | embedded (extension of xsd:string)
Content: | simple, 1 attribute
Used: | at 1 location
attributes | Attribute elements can hold any static character data that is common to all instances of a component.
Type: | embedded complexType
Content: | complex, 1 element
Used: | at 1 location
choice | This defines a decision in the select element.
Type: | embedded complexType
Content: | complex, 1 attribute, 3 elements
Used: | at 1 location
code | Define a reference to an interface implemented in Java.
Type: | embedded complexType
Content: | empty, 2 attributes
Used: | at 1 location
component | This is the container element for all the information about a single component.
Type: | embedded complexType
Content: | complex, 7 attributes, 11 elements
Used: | at 1 location
componentDefinition | componentDefinition must be the root element of a component definition document.
Type: | embedded complexType
Content: | complex, 3 elements
Used: | never
componentReferenceProperty |
Type: | componentReferencePropertyType
Content: | empty, 12 attributes
Used: | never
compoundProperty |
Type: | compoundPropertyType
Content: | empty, 10 attributes
Used: | never
compoundPropertyDeclaration | Declares a compound type that may be referenced from one or more compound property declarations in this or other component documents.
Type: | embedded complexType
Content: | complex, 4 attributes, 2 elements
Used: | at 1 location
defineLocation | This element defines a location in source, such as a function in the main file or a region of text in a class declaration.
Type: | embedded complexType
Content: | complex, 11 attributes, 4 elements
Used: | at 3 locations
defineMacro | Added post 1.1.
Type: | embedded complexType
Content: | complex, 2 attributes, 6 elements
Used: | at 1 location
designerImages | This element is specifies images for use by the UI designer.
Type: | embedded complexType
Content: | empty, 4 attributes
Used: | at 1 location
documentation | The optional documentation element provides brief description information about the component and a link to more detailed documentation
Type: | embedded complexType
Content: | complex, 3 elements
Used: | at 1 location
enumProperty |
Type: | enumPropertyType
Content: | empty, 11 attributes
Used: | never
enumPropertyDeclaration | Declares an enumerated type that may be referenced from one or more enumerated property declarations in this or other component documents.
Type: | embedded complexType
Content: | complex, 4 attributes, 2 elements
Used: | at 1 location
event | The definition of a single event.
Type: | embedded complexType
Content: | empty, 7 attributes
Used: | at 1 location
events | The list of events defined for this component.
Type: | embedded complexType
Content: | complex, 1 attribute, 1 element
Used: | at 1 location
expandArgument | Added post 1.1.
Type: | embedded (extension of xsd:string)
Content: | simple, 2 attributes
Used: | at 1 location
expandMacro |
Type: | embedded (extension of ConditionalSourceGen)
Content: | complex, 7+any attributes, 1 element
Used: | at 4 locations
extensionProperties | Extension properties may be dynamically added, based on the state of an instance of this component, its container, or other objects.
Type: | embedded complexType
Content: | complex, 1 attribute, 1 element
Used: | at 1 location
implementation |
Type: | embedded complexType
Content: | complex, 1 attribute, 3 elements
Used: | at 1 location
implementations | Implementation elements declare code or script implementations of interfaces by name.
Type: | embedded complexType
Content: | complex, 1 element
Used: | at 1 location
importArguments | Added post 1.1.
Type: | embedded complexType
Content: | empty, 4 attributes
Used: | at 1 location
inline | Provide Javascript in-line with templates and other sourceGen elements.
Type: | embedded (extension of ConditionalSourceGenString)
Content: | simple, 5 attributes
Used: | at 4 locations
macroArgument | Added post 1.1.
Type: | embedded (extension of xsd:string)
Content: | simple, 4 attributes
Used: | at 1 location
mapArrayMember | Map a property or child list to an array in RSS.
Type: | embedded (extension of mappingArrayType)
Content: | complex, 3 attributes, 2 elements
Used: | at 1 location
mapArrayType | Map a property or child list to an array in RSS.
Type: | embedded (extension of mappingArrayType)
Content: | complex, 1 attribute, 2 elements
Used: | at 1 location
mapBitmaskElement | Map a set of boolean properties to an expression in an array element.
Type: | embedded (extension of mappingBitmaskType)
Content: | complex, 1 attribute, 1 element
Used: | never
mapBitmaskMember | Map a set of boolean properties to a bitmask expression in RSS.
Type: | embedded (extension of mappingBitmaskType)
Content: | complex, 4 attributes, 1 element
Used: | at 1 location
mapBitmaskType | Map a set of boolean properties to a bitmask expression in RSS.
Type: | embedded (extension of mappingBitmaskType)
Content: | complex, 2 attributes, 1 element
Used: | at 1 location
mapBitmaskValue | Map a set of properties to a subexpression of the bitmask expression.
Type: | embedded complexType
Content: | empty, 2 attributes
Used: | at 1 location
mapElementFromType | Map RSS from the type declaration attached to the current element.
Type: | embedded (extension of twoWayMappingType)
Content: | empty, 1 attribute
Used: | never
mapEnum | This defines the mapping of one particular property value to one particular RSS value.
Type: | embedded complexType
Content: | empty, 2 attributes
Used: | at 1 location
mapEnumElement | Map an enumerator to an array element.
Type: | embedded (extension of mappingEnumType)
Content: | complex, 5 attributes, 1 element
Used: | never
mapEnumMember | Map an enumerator to RSS.
Type: | embedded (extension of mappingEnumType)
Content: | complex, 8 attributes, 1 element
Used: | at 1 location
mapEnumType | Map an enumerator to RSS.
Type: | embedded (extension of mappingEnumType)
Content: | complex, 6 attributes, 1 element
Used: | at 1 location
mapFixedElement | Map a fixed value to an array element.
Type: | embedded (extension of mappingFixedType)
Content: | empty, 1 attribute
Used: | never
mapFixedMember | Map a fixed value to an RSS member.
Type: | embedded (extension of mappingFixedType)
Content: | empty, 3 attributes
Used: | at 1 location
mapFixedType | Map a fixed value.
Type: | embedded (extension of mappingFixedType)
Content: | empty, 2 attributes
Used: | at 1 location
mapIdentifierElement | Map a simple value to a literal (identifier) in an array element.
Type: | embedded (extension of mappingIdentifierType)
Content: | empty
Used: | never
mapIdentifierMember | Map a simple property to a literal (identifier) in RSS.
Type: | embedded (extension of mappingIdentifierType)
Content: | empty, 3 attributes
Used: | at 1 location
mapIdentifierType | Map a simple property to a literal (identifier) in RSS.
Type: | embedded (extension of mappingIdentifierType)
Content: | empty, 1 attribute
Used: | at 1 location
mapInstanceElement | Map an instance's resources to an array element.
Type: | embedded (extension of mappingInstanceType)
Content: | empty, 1 attribute
Used: | never
mapInstanceMember | Map resources for an instance.
Type: | embedded (extension of mappingInstanceType)
Content: | empty, 4 attributes
Used: | at 1 location
mapInstanceType | Map resources for an instance.
Type: | embedded (extension of mappingInstanceType)
Content: | empty, 2 attributes
Used: | never
mapIntoProperty | Delve into a property path without generating any resources.
Type: | embedded (extension of twoWayMappingType)
Content: | complex, 1 attribute, 1 element
Used: | at 1 location
mapMemberFromType | Map RSS from the type declaration attached to the given property.
Type: | embedded (extension of twoWayMappingType)
Content: | empty, 4 attributes
Used: | at 1 location
mapReferenceElement | Map a reference property to an array element.
Type: | embedded (extension of mappingReferenceType)
Content: | empty, 1 attribute
Used: | never
mapReferenceMember | Map a reference property to resources the instance generates.
Type: | embedded (extension of mappingReferenceType)
Content: | empty, 4 attributes
Used: | at 1 location
mapReferenceType | Map a reference property to resources the instance generates.
Type: | embedded (extension of mappingReferenceType)
Content: | empty, 2 attributes
Used: | at 1 location
mapResource | Map an instance to a RESOURCE.
Type: | embedded (extension of mappingResourceType)
Content: | complex, 7 attributes, 12 elements
Used: | at 2 locations
mapResourceElement | Map a compound property or instance to resources in an array element.
Type: | embedded (extension of mappingResourceType)
Content: | complex, 4 attributes, 12 elements
Used: | never
mapResourceMember | Map a property to a RESOURCE expression or statement.
Type: | embedded (extension of mappingResourceType)
Content: | complex, 6 attributes, 12 elements
Used: | at 1 location
mapResourceType | Map a property to a RESOURCE expression or statement.
Type: | embedded (extension of mappingResourceType)
Content: | complex, 4 attributes, 12 elements
Used: | at 1 location
mapSimpleElement | Map a simple value to an array element.
Type: | embedded (extension of mappingSimpleType)
Content: | empty
Used: | never
mapSimpleMember | Map a simple value to a member.
Type: | embedded (extension of mappingSimpleType)
Content: | empty, 3 attributes
Used: | at 1 location
mapSimpleType | Map a simple value.
Type: | embedded (extension of mappingSimpleType)
Content: | empty, 1 attribute
Used: | at 1 location
properties | The list of properties defined for this component.
Type: | embedded complexType
Content: | complex, 1 element
Used: | at 1 location
property |
Type: | simplePropertyType
Content: | empty, 13 attributes
Used: | never
propertyOverrides | A list of property overrides defined for this component.
Type: | embedded complexType
Content: | complex, 4 attributes, 1 element
Used: | at 1 location
script | Define a reference to an interface implemented in Javascript.
Type: | embedded complexType
Content: | empty, 2 attributes
Used: | at 3 locations
select | This element encapsulates choice elements which allow conditional source mapping.
Type: | embedded complexType
Content: | complex, 4 attributes, 1 element
Used: | at 5 locations
sourceGen | This section controls C/C++ source generation (with the potential to support other one-way languages).
Type: | embedded complexType
Content: | complex, 2 attributes, 9 elements
Used: | at 1 location
sourceMapping | The sourceMapping element defines a particular style of source generation which consists of automatic generation of source by structurally mapping a component instance to a source definition.
Type: | embedded complexType
Content: | complex, 2 elements
Used: | at 1 location
sourceTypeMapping | The sourceTypeMapping element mirrors sourceMapping but provides stored source mapping data for use by compound or enum types.
Type: | embedded complexType
Content: | complex, 9 elements
Used: | at 2 locations
symbian | The optional Symbian element provides SDK compatibility information and information about the related C++ classes and resource structures.
Type: | embedded complexType
Content: | empty, 7 attributes
Used: | at 1 location
template | This defines a contribution.
Type: | embedded (extension of ConditionalSourceGenString)
Content: | empty, 8 attributes
Used: | at 4 locations
templateGroup | A logical grouping of templates and locations.
Type: | embedded (extension of ConditionalSourceGen)
Content: | complex, 8 attributes, 6 elements
Used: | at 1 location
twoWayMapping |
Type: | twoWayMappingType
Content: | empty
Used: | at 3 locations
useTemplate | In a derived component, selects a template from the base by id.
Type: | embedded complexType
Content: | empty, 1 attribute
Used: | at 3 locations
useTemplateGroup | In a derived component, selects a template group from the base by id.
Type: | embedded complexType
Content: | complex, 1 attribute, 1 element
Used: | at 2 locations

Local Element Summary
enumElement (within enumPropertyDeclaration) | This sequence is the list of values comprising the enumerated type.
Type: | embedded complexType
Content: | empty, 2 attributes
Defined: | locally at 1 location
helpTopic (type xsd:string) | A link to help information for this component.
Type: | xsd:string
Content: | simple
Defined: | locally at 1 location
information (type xsd:string) | Brief description of the component, shown in a tooltip.
Type: | xsd:string
Content: | simple
Defined: | locally at 1 location
interface (within implementation) |
Type: | embedded complexType
Content: | empty, 1 attribute
Defined: | locally at 1 location
propertyOverride (within propertyOverrides) |
Type: | embedded complexType
Content: | empty, 4 attributes
Defined: | locally at 1 location
wizardDescription (type xsd:string) | Text displayed in the UI design wizard.
Type: | xsd:string
Content: | simple
Defined: | locally at 1 location

Complex Type Summary
abstractPropertyType | A base schema type for further property type declarations.
Content: | empty, 8 attributes
Used: | at 6 locations
arrayPropertyType | A concrete property type that is a dynamic array of property values.
Content: | empty, 9 attributes
Used: | at 1 location
componentReferencePropertyType | A concrete property type that maintains a reference to a component instance in the same model.
Content: | empty, 12 attributes
Used: | at 1 location
compoundPropertyType | Concrete type used for structured properties.
Content: | empty, 10 attributes
Used: | at 1 location
ConditionalSourceGen |
Content: | empty, 3 attributes
Used: | at 2 locations
ConditionalSourceGenString | Base for sourcegen elements which may be conditionally skipped (and which contain text).
Content: | simple, 3 attributes
Used: | at 2 locations
enumPropertyType | Concrete type used for enumerated value properties.
Content: | empty, 11 attributes
Used: | at 1 location
mappingArrayType | Base for mapping arrays from sequence properties or component instance children.
Content: | complex, 2 elements
Used: | at 2 locations
mappingBitmaskType | Base for mapping sets of boolean properties to a single bitmask expression in RSS.
Content: | complex, 1 attribute, 1 element
Used: | at 3 locations
mappingEnumType | Base for mapping enumerator properties.
Content: | complex, 5 attributes, 1 element
Used: | at 3 locations
mappingFixedType | Base for mapping a fixed value to RSS.
Content: | empty, 1 attribute
Used: | at 3 locations
mappingIdentifierType | Base for mapping property values to RSS identifiers (rather than strings, for instance, as mappingSimpleType would do).
Content: | empty
Used: | at 3 locations
mappingInstanceType | Base for mapping resources generated by component instances.
Content: | empty, 1 attribute
Used: | at 3 locations
mappingReferenceType | Base for mapping references to resources generated by component instances.
Content: | empty, 1 attribute
Used: | at 3 locations
mappingResourceType | Base for mapping resources in RSS.
Content: | complex, 3 attributes, 12 elements
Used: | at 4 locations
mappingSimpleType | Base for mapping simple types (integers, floats, strings, booleans).
Content: | empty
Used: | at 3 locations
simplePropertyType | Concrete type used for basic properties.
Content: | empty, 13 attributes
Used: | at 1 location
twoWayMappingType | Base for two-way mappings.
Content: | empty
Used: | at 13 locations

Simple Type Summary
listOfStrings |
Used: | at 11 locations
propertyDataType | Simple, predefined property types.
Used: | at 1 location
referenceScopeType | Enumeration used for scoping references within the model
Used: | at 1 location
standaloneType | The selector for controlling standalone resource mapping.
Used: | at 1 location

Attribute Group Summary
ConditionalSourceGenAttributes | Base for sourcegen elements which may be conditionally skipped.
Content: | 3 attributes
Used: | at 2 locations

XML Source

<?xml version="1.0" encoding="UTF-8"?> <!-- Copyright (C) 2006 Nokia Corporation. All rights reserved. --> <!-- Entities for parts of the definitions we're forced to repeat due to the lack of multiple inheritance in EMF --> <!DOCTYPE xsd:schema [ <!ENTITY MapMemberAttributes ' <xsd:attribute name="member" type="xsd:string" use="required"> <xsd:annotation><xsd:documentation> The struct member. </xsd:documentation></xsd:annotation> </xsd:attribute> <xsd:attribute default="true" name="suppressDefault" type="xsd:boolean" use="optional"> <xsd:annotation><xsd:documentation> If true, do not emit the member initializer if the property matches the default specified in the STRUCT. If may be useful to set this to false if the default changes between SDK releases (to avoid branching components). </xsd:documentation></xsd:annotation> </xsd:attribute> '> <!ENTITY MapPropertyAttribute ' <xsd:attribute name="property" type="xsd:string" use="required"> <xsd:annotation><xsd:documentation> The property path providing the value. </xsd:documentation></xsd:annotation> </xsd:attribute> '> <!ENTITY MapTypeIdAttribute ' <xsd:attribute name="typeId" type="xsd:string" use="optional"> <xsd:annotation><xsd:documentation> Identifies the id for this particular kind of type mapping. </xsd:documentation></xsd:annotation> </xsd:attribute> '> ]> <xsd:schema elementFormDefault="qualified" targetNamespace="http://www.nokia.com/sdt/emf/component" xmlns="http://www.nokia.com/sdt/emf/component" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="componentDefinition"> <xsd:annotation> <xsd:documentation> componentDefinition must be the root element of a component definition document. It includes zero or more compound property declarations, zero or more enum declarations and zero or one component declarations. Displayable strings can either be included literally within the XML or referenced in the component.properties file by prefixing the string with %. For example, "%foo" references the value of the "foo" property in component.properties. To obtain the string "%foo" use a double %, e.g. "%%foo". </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="0" ref="compoundPropertyDeclaration"/> <xsd:element maxOccurs="unbounded" minOccurs="0" ref="enumPropertyDeclaration"/> <xsd:element minOccurs="0" ref="component"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="component"> <xsd:annotation> <xsd:documentation> This is the container element for all the information about a single component. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element minOccurs="0" ref="documentation"/> <xsd:element minOccurs="0" ref="symbian"/> <xsd:element minOccurs="0" ref="designerImages"/> <xsd:element minOccurs="0" ref="attributes"/> <xsd:element minOccurs="0" ref="properties"/> <xsd:element maxOccurs="unbounded" minOccurs="0" ref="extensionProperties"/> <xsd:element minOccurs="0" ref="propertyOverrides"/> <xsd:element minOccurs="0" ref="events"/> <xsd:element minOccurs="0" ref="sourceGen"/> <xsd:element minOccurs="0" ref="sourceMapping"/> <xsd:element minOccurs="0" ref="implementations"/> </xsd:sequence> <xsd:attribute name="qualifiedName" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation> A globally unique name for a component. By convention these use dotted names, such as com.example.MyComponent. Different versions of a component, in different files, can share the same qualified name. These values should not be localized. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="friendlyName" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation> A short name displayed in the user interface. These values should be localized. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="instanceNameRoot" type="xsd:string"> <xsd:annotation> <xsd:documentation> The root part of the name used in assigned unique names to component instances. For example, if the root is "label" then names will be assigned in sequence "label1", "label2", and so forth. These values should not be localized. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="version" type="xsd:string"> <xsd:annotation> <xsd:documentation> Identifies the version of the component specified by this document. Uses OSGI style version strings, composed of up to 3 integers and a text qualifier, of the form <major version>.<minor version>.<micro version>.<qualifier>. See http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/osgi/org/osgi/framework/Version.html for further information. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="baseComponent" type="xsd:string"> <xsd:annotation> <xsd:documentation> The fully qualifed name of the base component. The version of the base component cannot be specified, it will be whichever is selected via SDK matching. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="category" type="xsd:string"> <xsd:annotation> <xsd:documentation> Specifies the grouping for the editor's component palette. If this string matches the key of a known group then the localized name is looked up within the Symbian component provider. Otherwise it is treated like a potentially localized string, i.e. if it is %-prefixed a string is looked up in the properties file. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="abstract" type="xsd:boolean"> <xsd:annotation> <xsd:documentation> Specify true to define a component intended to be used as a basis for deriving other components. Abstract components are filtered out of the component palette. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> </xsd:element> <xsd:element name="documentation"> <xsd:annotation> <xsd:documentation> The optional documentation element provides brief description information about the component and a link to more detailed documentation </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element name="information" type="xsd:string"> <xsd:annotation> <xsd:documentation> Brief description of the component, shown in a tooltip. This value should be localized. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="helpTopic" type="xsd:string"> <xsd:annotation> <xsd:documentation>A link to help information for this component.</xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element name="wizardDescription" type="xsd:string"> <xsd:annotation> <xsd:documentation> Text displayed in the UI design wizard. Applies only to containers and top-level content. This value should be localized. </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="symbian"> <xsd:annotation> <xsd:documentation> The optional Symbian element provides SDK compatibility information and information about the related C++ classes and resource structures. When this element is omitted the component will be considered incompatible with all Symbian SDKs. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:attribute name="sdkName" use="required"> <xsd:annotation> <xsd:documentation> This value identifies the Symbian OS variant with which the component is compatible. Currently the only supported value is "com.nokia.serie60". </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="minSDKVersion" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation> A version number indicating the lowest SDK version with which the component is compatible. For example, if the value is 2.8 the component will be selected for use with a 2.8 SDK but not 2.6. Uses OSGI style version strings, composed of up to 3 integers and a text qualifier, of the form <major version>.<minor version>.<micro version>.<qualifier>. See http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/osgi/org/osgi/framework/Version.html for further information. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="maxSDKVersion" type="xsd:string"> <xsd:annotation> <xsd:documentation> A version number indicating the maximum SDK version with which the component is compatible. For example, if the value is 2.8 the component will be selected for use with a 2.8 SDK but not 3.0. Uses OSGI style version strings, composed of up to 3 integers and a text qualifier, of the form <major version>.<minor version>.<micro version>.<qualifier>. See http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/osgi/org/osgi/framework/Version.html for further information. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="className" type="xsd:string"> <xsd:annotation> <xsd:documentation> The C++ class name corresponding to this component, if any. Not used for source code generation, but is displayed in the component palette. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="classHelpTopic" type="xsd:string"> <xsd:annotation> <xsd:documentation>A link to help information for this C++ class</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="resourceType" type="xsd:string"> <xsd:annotation> <xsd:documentation> The Symbian RSS resource type for this component, if any </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="resourceHelpTopic" type="xsd:string"> <xsd:annotation> <xsd:documentation>A link to help information for the resource</xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> </xsd:element> <xsd:element name="designerImages"> <xsd:annotation> <xsd:documentation> This element is specifies images for use by the UI designer. Only those images that apply need to be defined, e.g. if a component never appears in the UI design wizard or palette then it doesn't need those images. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:attribute name="smallIconFile" type="xsd:string"> <xsd:annotation> <xsd:documentation> A relative path to an Eclipse-supported image type, such as PNG, GIF, or BMP. This image is displayed in the outline. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="largeIconFile" type="xsd:string"> A relative path to an Eclipse-supported image type, such as PNG, GIF, or BMP. This image is displayed in the component palette. <xsd:annotation> <xsd:documentation/> </xsd:annotation> </xsd:attribute> <xsd:attribute name="layoutImageFile" type="xsd:string"> A relative path to an Eclipse-supported image type, such as PNG, GIF, or BMP. This image is displayed in the UI design wizard. <xsd:annotation> <xsd:documentation/> </xsd:annotation> </xsd:attribute> <xsd:attribute name="thumbnailFile" type="xsd:string"> <xsd:annotation> <xsd:documentation> A relative path to an Eclipse-supported image type, such as PNG, GIF, or BMP. This image is displayed in UI designer's graphical layout area if the component does not provide rendering code. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> </xsd:element> <xsd:element name="attributes"> <xsd:annotation> <xsd:documentation> Attribute elements can hold any static character data that is common to all instances of a component. Attributes are inherited from their base components. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="unbounded" ref="attribute"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="attribute"> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="key" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation/> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name="properties"> <xsd:annotation> <xsd:documentation> The list of properties defined for this component. Components also inherit the properties of their base components, and can have properties added dynamically, see extensionProperties. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="0" ref="abstractProperty"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="extensionProperties"> <xsd:annotation> <xsd:documentation> Extension properties may be dynamically added, based on the state of an instance of this component, its container, or other objects. There may be more than one set of extension properties defined in a component. See the com.nokia.sdt.datamodel.adapter.IPropertyExtenders interface. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="0" ref="abstractProperty"/> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation> The unique name of this extension property set. Used to select properties to add at runtime. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> </xsd:element> <xsd:simpleType name="propertyDataType"> <xsd:annotation> <xsd:documentation>Simple, predefined property types.</xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="void"> <xsd:annotation> <xsd:documentation>The empty type. Do not use for real properties.</xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="boolean"> <xsd:annotation> <xsd:documentation/> </xsd:annotation> True/False values. </xsd:enumeration> <xsd:enumeration value="integer"> <xsd:annotation> <xsd:documentation> Four byte integer properties. Ranges may be constrained on property declarations. </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="float"> <xsd:annotation> <xsd:documentation> Floating point values. Ranges may be constrained on property declarations. </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="string"> <xsd:annotation> <xsd:documentation>Non-localized string literals</xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="localizedString"> <xsd:annotation> <xsd:documentation> Localized string literals. Users may enter different values for each language. </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="uniqueName"> <xsd:annotation> <xsd:documentation> Unique, non-localized string. Values are forced to be unique across the data model. </xsd:documentation> </xsd:annotation> </xsd:enumeration> </xsd:restriction> </xsd:simpleType> <xsd:element abstract="true" name="abstractProperty" type="abstractPropertyType"/> <xsd:element name="property" substitutionGroup="abstractProperty" type="simplePropertyType"/> <xsd:element name="compoundProperty" substitutionGroup="abstractProperty" type="compoundPropertyType"/> <xsd:element name="enumProperty" substitutionGroup="abstractProperty" type="enumPropertyType"/> <xsd:element name="arrayProperty" substitutionGroup="abstractProperty" type="arrayPropertyType"/> <xsd:element name="componentReferenceProperty" substitutionGroup="abstractProperty" type="componentReferencePropertyType"/> <xsd:complexType name="abstractPropertyType"> <xsd:annotation> <xsd:documentation> A base schema type for further property type declarations. Not used directly in components. </xsd:documentation> </xsd:annotation> <xsd:attribute name="name" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation> The internal name for the property. It must be unique within the component and its base components. Since it may be used as an identifier in scripts it should be a legal JavaScript identifier. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="displayName" type="xsd:string"> <xsd:annotation> <xsd:documentation> The property name to be display in the user interface. Can contain spaces and other characters. This value should be localized. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="category" type="xsd:string"> <xsd:annotation> <xsd:documentation> The category grouping to be used in the property sheet. If this value matches the key of a known group then the localized name is looked up within the Symbian component provider. Otherwise it is treated like a potentially localized string, i.e. if it is %-prefixed a string is looked up in the properties file. The special value of "hidden" will cause the property to be filtered from the property sheet. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="false" name="readOnly" type="xsd:boolean"> <xsd:annotation> <xsd:documentation> If true the property will be read-only in the property sheet. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="true" name="resettable" type="xsd:boolean"> <xsd:annotation> <xsd:documentation> If false the reset button will be disabled, inhibiting the user from reverting to the default value </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="descriptionKey" type="xsd:string"> <xsd:annotation> <xsd:documentation> A property key to descriptive text for the property to be displayed in the status bar when the property is selected in the property sheet. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="helpKey" type="xsd:string"> <xsd:annotation> <xsd:documentation>A key to more detailed help for the property.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="editorClass" type="xsd:string"> <xsd:annotation> <xsd:documentation> The fully qualified name of a class implementing com.nokia.sdt.component.property.IPropertyEditorFactory. This allows Java code to provide a label provider, cell editor, and validator for the property. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> <xsd:complexType name="simplePropertyType"> <xsd:annotation> <xsd:documentation>Concrete type used for basic properties.</xsd:documentation> </xsd:annotation> <xsd:complexContent> <xsd:extension base="abstractPropertyType"> <xsd:attribute name="type" type="propertyDataType" use="required"> <xsd:annotation> <xsd:documentation>Selects the data type of the property.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="default" type="xsd:string"> <xsd:annotation> <xsd:documentation> A default value for the property. Must be a string convertible to the particular property type. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="minValue" type="xsd:string"> <xsd:annotation> <xsd:documentation> Optional minimum value constraint. Applies only to integers and floats. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="maxValue" type="xsd:string"> <xsd:annotation> <xsd:documentation> Optional maximum value constraint. Applies only to integers and floats. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="extendWithEnum" type="xsd:string"> <xsd:annotation> <xsd:documentation> Optional extension of the enum with the enums provided by an enimPropertyDeclaration. If the value of the property matches any in an extension enumProperty's 'value' attribute, the 'displayValue' will be shown as the current value in the property sheet. Additionally, the editor for the value (if not overridden with a custom editorClass) will be a combo that allows typing in the literal value or selecting one of the extended enums. <p> The 'value' of each of the extending enums must match the type being extended, or else the attempt to set the value to that enum will fail. Note that this means that it is useless to extend booleans (since all extensions must map to 'true' or 'false'). </p> </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="compoundPropertyType"> <xsd:annotation> <xsd:documentation>Concrete type used for structured properties.</xsd:documentation> </xsd:annotation> <xsd:complexContent> <xsd:extension base="abstractPropertyType"> <xsd:attribute name="type" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation> The fully qualified name of the compound property type declaration. It can be any type accessible from the current or any other component definitions. See compoundPropertyDeclaration for further information. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="default" type="xsd:string"> <xsd:annotation> <xsd:documentation> An optional default value for the property. The compoundPropertyDeclaration must have a converterType specified for this default value to be used. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="enumPropertyType"> <xsd:annotation> <xsd:documentation> Concrete type used for enumerated value properties. </xsd:documentation> </xsd:annotation> <xsd:complexContent> <xsd:extension base="abstractPropertyType"> <xsd:attribute name="type" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation> The fully qualifed name of the enumerated property type. See enumPropertyDeclaration. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="default" type="xsd:string"> <xsd:annotation> <xsd:documentation> The default enumerated value, in case it needs to be different from the default declared in the enumeratedPropertyDeclaration. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="extendWithEnum" type="xsd:string"> <xsd:annotation> <xsd:documentation> Optional extension of the simple values with the enums provided by an enimPropertyDeclaration. If the value of the property matches any in an enumProperty's 'value' attribute, the 'displayValue' will be shown as the current value in the property sheet. Additionally, the editor for the value (if not overridden with a custom editorClass) will be a combo that allows typing in the literal value or selecting one of the union of base and extended enums. <p> The extending enum may provide 'value' elements which are different from the base enum (even integers, say), if appropriate. These values are exposed to script, source mapping, and source gen, so ensure that all those clients are prepared to deal with the extra values. </p> </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:simpleType name="referenceScopeType"> <xsd:annotation> <xsd:documentation> Enumeration used for scoping references within the model </xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="model"> <xsd:annotation> <xsd:documentation> Property can reference any valid instance in the model </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="children"> <xsd:annotation> <xsd:documentation> Property can reference any children of the referencing instance </xsd:documentation> </xsd:annotation> True/False values. </xsd:enumeration> <xsd:enumeration value="siblings"> <xsd:annotation> <xsd:documentation> Property can reference any siblings or children of the referencing instance </xsd:documentation> </xsd:annotation> True/False values. </xsd:enumeration> </xsd:restriction> </xsd:simpleType> <xsd:complexType name="componentReferencePropertyType"> <xsd:annotation> <xsd:documentation> A concrete property type that maintains a reference to a component instance in the same model. The reference is kept by name, and is maintained across renames of the target instance. It is cleared automatically if the target instance is removed. </xsd:documentation> </xsd:annotation> <xsd:complexContent> <xsd:extension base="abstractPropertyType"> <xsd:attribute name="scope" type="referenceScopeType" use="required"> <xsd:annotation> <xsd:documentation> Enumeration defining the scope for permissable values. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="constraint" type="xsd:string"> <xsd:annotation> <xsd:documentation> If specified, this must be the fully qualified name of a component type. Values are then constrained to be instances of this type, and the property sheet user interface displays a list of eligible instances. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="creationKeys" type="xsd:string"> <xsd:annotation> <xsd:documentation> An optional comma-delimited string containing a list of keys. When present these keys are used to add "create new xxx" items to the dropdown menu for the property, in addition to the "None" and existing instances populated into the menu. A component using this feature must also provide an ISetValueCommandExtender implementation to handle the creation of these items. Each key is used for two purposes: - As a resource key for the dropdown menu item. The resource string should be the full command, e.g. "Create new Foo". - When selected, the key is provided as a parameter to a com.nokia.sdt.component.NewComponentReferenceParameter instance. This instance is then available from the SetValueCommand passed to ISetValueCommandExtender.getExtendedCommand. The implementation should retrieve the key, and return a Command object that will create the appropriate new instance and set the target value to the new instance. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="promoteReferenceProperties" type="xsd:boolean"> <xsd:annotation> <xsd:documentation> If specified, the properties of the instance referenced by this property are promoted into this property source, excluding the 'name' property and other properties that already exist in this component. This property and the referenced component instance's properties will be at the same level. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="arrayPropertyType"> <xsd:annotation> <xsd:documentation> A concrete property type that is a dynamic array of property values. All values are of the same type, which can be either a simple or compound property type. </xsd:documentation> </xsd:annotation> <xsd:complexContent> <xsd:extension base="abstractPropertyType"> <xsd:attribute name="type" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation> The element type. It must be either a propertyDataType value, such as "integer" or "localizedString", or the fully qualified name of a compound property type. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="compoundPropertyDeclaration"> <xsd:annotation> <xsd:documentation> Declares a compound type that may be referenced from one or more compound property declarations in this or other component documents. All compound property declarations are in a global namespace and must be declared as global elements. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="0" ref="abstractProperty"> <xsd:annotation> <xsd:documentation> Any property type may be used here, i.e. simple, compound, array, reference. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" ref="sourceTypeMapping"> <xsd:annotation> <xsd:documentation> This element provides source mapping for the type, for use by map*FromType elements. Added post 1.2. </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> <xsd:attribute name="qualifiedName" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation> A globally unique name for the property. By convention this is a dotted name, e.g. com.example.MyPropertyType. This identifier is used in compound property declarations. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="" name="editableType" type="xsd:string"> <xsd:annotation> <xsd:documentation> The property type of the editable value. In addition to editing each child value, the user may be able to edit the property as a whole. For example, an RGB color value may be editable as a string. This value can be a propertyDataType value such as "integer" or "string", or can be the name of an enumPropertyDeclaration. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="converterClass" type="xsd:string"> <xsd:annotation> <xsd:documentation> If specified, this must be the fully qualified name of an implementation of com.nokia.sdt.component.property.ICompoundPropertyValueConverter. It is used to convert back and forth between the editable value and the compound value. The editable value is a single value, display as the parent value in the property sheet and used with cell editors. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="editorClass" type="xsd:string"> <xsd:annotation> <xsd:documentation> The fully qualified name of a class implementing com.nokia.sdt.component.property.IPropertyEditorFactory. This allows Java code to provide a label provider, cell editor, and validator for the property. Specify a factory class here provides a default for all compound properties of this type. The factory may be overriden by a compound property declaration </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> </xsd:element> <xsd:element name="enumPropertyDeclaration"> <xsd:annotation> <xsd:documentation> Declares an enumerated type that may be referenced from one or more enumerated property declarations in this or other component documents. All enum property declarations are in a global namespace and must be declared as global elements. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="unbounded" name="enumElement"> <xsd:annotation> <xsd:documentation> This sequence is the list of values comprising the enumerated type. Each value consists of an internal string value and a displayable string value. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:attribute name="value" use="required"> <xsd:annotation> <xsd:documentation>The internal value, which is not localizable.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="displayValue" use="optional"> <xsd:annotation> <xsd:documentation>The displayable value, which should be localized.</xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> </xsd:element> <xsd:element maxOccurs="1" minOccurs="0" ref="sourceTypeMapping"> <xsd:annotation> <xsd:documentation> This element provides source mapping for the type, for use by map*FromType elements. Added post 1.2 </xsd:documentation> </xsd:annotation> </xsd:element> </xsd:sequence> <xsd:attribute name="qualifiedName" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation> The globally unique name for this type. By convention this is a dotted name, e.g. com.example.MyEnumType. This value is used in enumPropertyDeclaration. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="defaultValue" type="xsd:string"> <xsd:annotation> <xsd:documentation> A default internal value for the enumeration. It can be overriden in property declarations. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> </xsd:element> <xsd:element name="propertyOverrides"> <xsd:annotation> <xsd:documentation> A list of property overrides defined for this component. Components also inherit the property overrides of their base components, with changes applied by the most derived component taking precedence. Property overrides allow certain characteristics of a property to be modified, such as changing a modifiable property to read-only. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="0" name="propertyOverride"> <xsd:complexType> <xsd:attribute name="name" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation> The internal name for the property being overriden. It is legal for this to reference a name that does not exist. This allows overrides of extension properties, which are only conditionaly defined. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="category" type="xsd:string"> <xsd:annotation> <xsd:documentation> Override of the property category. See the description in <abstractPropertyType> </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="readOnly" type="xsd:boolean"> <xsd:annotation> <xsd:documentation> Override of the readOnly state. See the description in <abstractPropertyType> </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="default" type="xsd:string"> <xsd:annotation> <xsd:documentation> Override of the default value. Default values can only be overriden on properties supporting default values, i.e simple properties, enums, and compound properties. See the description in <abstractPropertyType> for more information. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="events"> <xsd:annotation> <xsd:documentation> The list of events defined for this component. Components also inherit the events of their base components. Events are named notifications or hooks to which code can be attached. The data here is used to drive the user interface. The details of source code generation are part of the source code generation templates. The set of available events, and default event, may be overriden via code or script. See the com.nokia.sdt.datamodel.adapter.IComponentEventInfo interface for more information. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="0" ref="event"/> </xsd:sequence> <xsd:attribute name="defaultEventName" type="xsd:string"> <xsd:annotation> <xsd:documentation> If defined, the default event will be identified in a component instance's context menu. In the case of inheritance the most derived definition of the default event is used. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> </xsd:element> <xsd:element name="event"> <xsd:annotation> <xsd:documentation>The definition of a single event.</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:attribute name="name" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation> The internal name for the event. This does not need to be a dotted name, but it must be unique within the component and its base components. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="displayName" type="xsd:string"> <xsd:annotation> <xsd:documentation> This displayable name for the event. This value should be localized. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="category" type="xsd:string"> <xsd:annotation> <xsd:documentation> Categories are used for grouping events in the Events view. As with property categories, this can be a key to a category localized by the component provider, or it can be a pre-localized or literal string. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="descriptionKey" type="xsd:string"> <xsd:annotation> <xsd:documentation> A key for descriptive information about the event. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="helpKey" type="xsd:string"> <xsd:annotation> <xsd:documentation>A help topic for online help for the event.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="handlerNameTemplate" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation> A template which is expanded to the proposed default name for the event handler function. An example of such a template is "Handle{title(name)}StateChangedL". The {} marks template variables. A variable may contain a simple property value, but generally only the 'name' property should be used. The pseudo-functions "lower", "upper", and "title" may be used to transform the property value. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="group" type="xsd:string"> <xsd:annotation> <xsd:documentation> This is a grouping, separate from categories, used in event filtering. Events may only make sense for specific containers. The interface com.nokia.sdt.datamodel.adapter.IComponentEventInfo is used to filter applicable events from the complete set of declared events. When deriving from an existing base component it is not generally necessary to implement this interface. Instead, just use the groups defined by the base component in your own events. For example to make events visible in a CCoeControl container, The CCoeControlBase component uses the filter group "Control". </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> </xsd:element> <xsd:element name="implementations"> <xsd:annotation> <xsd:documentation> Implementation elements declare code or script implementations of interfaces by name. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="unbounded" ref="implementation"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="implementation"> <xsd:complexType> <xsd:sequence> <xsd:sequence> <xsd:element maxOccurs="unbounded" name="interface"> <xsd:complexType> <xsd:attribute name="id" type="xsd:string" use="required"/> </xsd:complexType> </xsd:element> </xsd:sequence> <xsd:choice> <xsd:element ref="code"/> <xsd:element ref="script"/> </xsd:choice> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:element name="code"> <xsd:annotation> <xsd:documentation> Define a reference to an interface implemented in Java. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:attribute name="plugin" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation>Plugin id</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="class" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>Class in plugin.</xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> </xsd:element> <xsd:element name="script"> <xsd:annotation> <xsd:documentation> Define a reference to an interface implemented in Javascript. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:attribute name="file" type="xsd:string" use="required"/> <xsd:attribute name="prototype" type="xsd:string" use="required"/> </xsd:complexType> </xsd:element> <xsd:element name="sourceGen"> <xsd:annotation> <xsd:documentation> This section controls C/C++ source generation (with the potential to support other one-way languages). In a sourceGen element, all the elements in linear order comprise the component's contributions. Conditional sourcegen is implemented by using the "form" attribute on templates or templateGroups, or explicitly checking the regex "form" in inline code. Another form of conditional sourcegen is event handling code. The "ifEvents" attribute completely filters out defineLocation/template elements if a given event is not bound to an instance. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:choice maxOccurs="unbounded" minOccurs="0"> <xsd:element ref="defineLocation"/> <xsd:element ref="template"/> <xsd:element ref="templateGroup"/> <xsd:element ref="useTemplate"/> <xsd:element ref="useTemplateGroup"/> <xsd:element ref="inline"/> <xsd:element ref="script"/> <xsd:element ref="defineMacro"/> <xsd:element ref="expandMacro"/> </xsd:choice> </xsd:sequence> <!-- IGNORED --> <xsd:attribute name="forms" type="xsd:string" use="optional"/> <xsd:attribute default="false" name="debug" type="xsd:boolean" use="optional"/> </xsd:complexType> </xsd:element> <xsd:simpleType name="listOfStrings"> <xsd:list itemType="xsd:string"/> </xsd:simpleType> <xsd:attributeGroup name="ConditionalSourceGenAttributes"> <xsd:annotation> <xsd:documentation> Base for sourcegen elements which may be conditionally skipped. Such skipping applies to the save-time behavior and not the load-time or validation-time behavior. </xsd:documentation> </xsd:annotation> <xsd:attribute name="forms" type="listOfStrings" use="optional"> <xsd:annotation> <xsd:documentation> Added post 1.1 to inline. A list of tokens used to select a particular kind of source for a parent. The namespace is determined implicitly by what a parent requests. For instance, a parent may have special sourcegen, and pass the form "SpecialCase" to its children. Elements specifying form="SpecialCase" will be selected. Other parents will not see such elements if they do not specify that form. If the form does not match, the element is not invoked. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="ifEvents" type="listOfStrings" use="optional"> <xsd:annotation> <xsd:documentation> Added post 1.1 to inline. If defined, a list of events, any of which must be bound for the element to be invoked. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="ifExpr" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Added post 1.1. If defined, a Javascript expression which must evaluate to true (or non-zero) for the element to be invoked. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:attributeGroup> <xsd:complexType abstract="true" name="ConditionalSourceGen"> <xsd:attributeGroup ref="ConditionalSourceGenAttributes"/> </xsd:complexType> <!-- I'm really annoyed schema doesn't support multiple inheritance. ConditionalSourceGenString should be an extension of ConditionalSourceGen too. --> <xsd:complexType abstract="true" name="ConditionalSourceGenString"> <xsd:annotation> <xsd:documentation> Base for sourcegen elements which may be conditionally skipped (and which contain text). Such skipping applies to the save-time behavior and not the load-time or validation-time behavior. </xsd:documentation> </xsd:annotation> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attributeGroup ref="ConditionalSourceGenAttributes"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> <xsd:element name="inline"> <xsd:annotation> <xsd:documentation> Provide Javascript in-line with templates and other sourceGen elements. Be sure to supply a "forms" attribute, otherwise the code may execute multiple times during the source generation contribution-gathering phase. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="ConditionalSourceGenString"> <xsd:attribute default="function" name="scope" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Tells where the inline code appears. By default, it appears in the primary function into which templates are generated, thus is executed in line with them. Specifying "file" or "prototype" means the content is intended to modify the Javascript prototype, thus it is placed at the top level of the file. ${jsObject}.prototype may be used to access the prototype. Note: include() and includeFrom() calls should be placed in the prototype scope, or their contents will not be visible to derived components. Added post 1.1: "file" is a synonym for "prototype". </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="id" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Added post 1.1: the identifier for the inline section, which makes it inheritable. Inline sections are inherited as templates, accessible with "useTemplate" of the same id. If unspecified, a default id is assigned. Use a blank id to avoid inheriting. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name="defineLocation"> <xsd:annotation> <xsd:documentation> This element defines a location in source, such as a function in the main file or a region of text in a class declaration. This is a slight misnomer as this element does not by its presence realize the location. Only when a contribution references location id (or post 1.1: when realize="true" is used) will the location be added to source. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:choice maxOccurs="unbounded" minOccurs="0"> <xsd:element ref="template"/> <xsd:element ref="inline"/> <xsd:element ref="script"/> <xsd:element ref="expandMacro"/> </xsd:choice> </xsd:sequence> <xsd:attribute name="baseLocation" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> If defined, the location id this location lives inside. (E.g. a class inside a file, an enum declaration inside a class, etc.) </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="domain" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> The source domain which controls how locations are interpreted and instantiated. Only "cpp" is supported currently. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="id" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation> The location identifier. This must be unique in a component. A derived component may redefine a location. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="dir" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> For a top-level location, where baseLocation is null, this is a template-expanded reference to the project-relative directory to use. Predefined variables ${src}, ${inc}, ${resource}, ${build} are provided. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="file" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> For a top-level location, where baseLocation is null, this is a template-expanded filename relative to the directory specified by "dir". </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="location" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation> This describes the location relative to its base (use "" for a top-level file location). A location segment in the cpp domain is a string representing a node in a C/C++ parse tree. Each takes the syntax “<name> ‘(‘ <arguments…> ‘)’�?. Certain nodes may only appear within certain others. This list defines top-level nodes: class(<name>): reference the class declaration for the class ‘name’, which may include namespaces (e.g. “class(MyClass)�? or “class(${className})�?) function(<name>(<arguments…)): reference a function with the given signature. ‘name’ may include namespaces or represent a destructor. ‘arguments’ is a comma-separated list of types. This list of arguments is currently not parsed and only the number of arguments matters. The arguments list may end in ellipsis (“…�?) to indicate that any zero or more arguments are matched. Again, the <template> inside a <defineLocation> really defines the function. (E.g. “function(main(int,char**))�? or “function(${className}::method(void*)�?.) region(<name>): a region defines a commented block of text with no other syntactical clues. The block comments and the name are used to identify the block. Thus, names should be unique across a component. (E.g. “region(Generated Includes)�?.) enum(<name>): a enum declaration with the given name. Name must be non-empty (locations are used to look up source, so anonymous enums cannot be unambiguously identified). (E.g. “enum(T${className}Ids)�?.) namespace(<name>): a namespace declaration with the given name, which may contain colons. (E.g. “namespace(std::tr1)�?) to-file(): resolve to the current file of a location, i.e. get back to the root location. Inside a class(), namespace() is not allowed, and this additional segment is allowed: bases(): references the base-class-list within a class declaration. If the class’ defining text already includes a base, then the defining text for the bases() location may be omitted. If a class’ defining text does not include a base, the bases() location must include the leading colon in its defining text. Otherwise, contributions are individual class references with leading commas. In a function(), only class(), region(), enum(), and to-file() are allowed. In an enum(), bases() or region(), only region() and to-file() are allowed. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="true" name="owned" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Note: a string for macro use only; must resolve to "true" or "false". If true, the location is marked generated in source and will be regenerated from scratch on every save. Otherwise, the location is generated only when missing. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="default" name="filter" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Defines a filter on contributions added to the location. Available filters: * unique-includes (can be applied anywhere, but scans files) * unique-prototypes (can be applied in "class()" or children, but scans the class) * unique-bases (can be applied to "bases()" or children, but scans the base class list) </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="isEventHandler" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Note: a string for macro use only; must resolve to "true" or "false". When "ifEvents" is non-empty, this flag tells the designer which particular function is the user-editable event handler. So this usually is applied to a function() location. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="false" name="realize" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Added post 1.1. Note: a string for macro use only; must resolve to "true" or "false". If true, a template for this location is automatically added when this location is defined. Otherwise, the location is a placeholder and is not "realized" in actual source unless a template references it. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="ifEvents" type="listOfStrings" use="optional"> <xsd:annotation> <xsd:documentation> If defined, a list of events, any of which must be bound for the location to be declared. Otherwise, its id is not available and the location is undefined. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> </xsd:element> <xsd:element name="template"> <xsd:annotation> <xsd:documentation> This defines a contribution. The text element is template-expanded with ${ ... } expression escapes and may contain Javascript in <% ... %> sections. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="ConditionalSourceGenString"> <xsd:attribute name="location" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> The location id the contribution goes to. May not be specified when "phase" is set. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="phase" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> The phase the contribution goes to. A parent component must realize the phase into an actual location id. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="mode" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation>Unused currently.</xsd:documentation> </xsd:annotation> </xsd:attribute> <!-- form and forms are the same, semantically --> <!-- form is obsolescent, use forms instead --> <xsd:attribute name="form" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> A token used to select a particular kind of source for a parent. The namespace is determined implicitly by what a parent requests. For instance, a parent may have special sourcegen, and pass the form "SpecialCase" to its children. Templates specifying form="SpecialCase" will be selected. Other parents will not see such templates if they do not specify that form. If the form does not match, the template is not instantiated. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="id" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Unique id for the template within a component or within a templateGroup. Ids may be shared for different forms. Derived components may redefine ids or inherit templates by id. Added post 1.1: if the id is unspecified in a templateGroup, a default id is assigned. To avoid inheriting, supply an empty id. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="templateGroup"> <xsd:annotation> <xsd:documentation> A logical grouping of templates and locations. Attributes present on the group are automatically applied to children. Groups may not be nested. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="ConditionalSourceGen"> <xsd:sequence> <xsd:choice maxOccurs="unbounded" minOccurs="0"> <xsd:element ref="defineLocation"/> <xsd:element ref="template"/> <!-- added post 1.1 --> <xsd:element ref="inline"/> <!-- added post 1.1 --> <xsd:element ref="useTemplate"/> <!-- added post 1.1 --> <xsd:element ref="useTemplateGroup"/> <!-- added post 1.1 --> <xsd:element ref="expandMacro"/> </xsd:choice> </xsd:sequence> <xsd:attribute name="location" type="xsd:string" use="optional"/> <xsd:attribute name="mode" type="xsd:string" use="optional"/> <xsd:attribute name="phase" type="xsd:string" use="optional"/> <xsd:attribute name="id" type="xsd:string" use="optional"/> <!-- form is obsolescent --> <xsd:attribute name="form" type="xsd:string" use="optional"/> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="useTemplate"> <xsd:annotation> <xsd:documentation> In a derived component, selects a template from the base by id. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:attribute name="ids" type="xsd:string" use="required"/> </xsd:complexType> </xsd:element> <xsd:element name="useTemplateGroup"> <xsd:annotation> <xsd:documentation> In a derived component, selects a template group from the base by id. If no subelements are specified, all the named templates (those with ids) are inherited. No templates without ids are inherited. If subelements are specified, these describe the specific templates to inherit from the group. The id "*" may be used to bring in all named templates. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="0" ref="useTemplate"/> </xsd:sequence> <xsd:attribute name="ids" type="xsd:string" use="required"/> </xsd:complexType> </xsd:element> <xsd:element name="defineMacro"> <xsd:annotation> <xsd:documentation> Added post 1.1. This element defines a macro consisting of a set of templates and inlines which may be variable-substituted. If a given defineMacro imports multiple arguments of the same name, then they must be explicitly redefined, to resolve any ambiguities about the default value. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="0" ref="importArguments"/> <xsd:element maxOccurs="unbounded" minOccurs="0" ref="macroArgument"/> <xsd:choice maxOccurs="unbounded" minOccurs="0"> <xsd:element ref="template"/> <xsd:element ref="inline"/> <xsd:element ref="defineLocation"/> <xsd:element ref="expandMacro"/> </xsd:choice> </xsd:sequence> <xsd:attribute name="id" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Unique id for the macro within a component. Ids may be shared for different forms. Derived components inherit macros automatically but may redefine a macro with the same id. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="help" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Help/usage text for a documentation generating tool. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> </xsd:element> <xsd:element name="macroArgument"> <xsd:annotation> <xsd:documentation> Added post 1.1. Defines an argument for use with the macro. The default value may be specified in the 'default' attribute or in the text of the element. The text supercedes the attribute. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="name" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation> The name of the argument. This must be a legal Javascript identifier and unique within the macro. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="optional" type="xsd:boolean" use="optional"> <xsd:annotation> <xsd:documentation> Tells whether the argument may be omitted from an expandMacro use. If true, and no default is provided, the variable's value is null. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="default" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> The default value of the argument if unspecified. Alternately, the text of this element may be supplied as the default, if formatting or newlines are used. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="help" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Help/usage text for a documentation generating tool. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name="importArguments"> <xsd:annotation> <xsd:documentation> Added post 1.1. This element specifies that a list of arguments (name, type, defaults, optional flags) will be imported from another macro. If this element is omitted, then all the arguments from the macro are imported. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:attribute name="macroName" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>The macro whose arguments to import.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="arguments" type="listOfStrings" use="required"> <xsd:annotation> <xsd:documentation> The list of argument names to import. This is mutually exclusive with 'exceptArguments'. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="exceptArguments" type="listOfStrings" use="required"> <xsd:annotation> <xsd:documentation> The list of argument names NOT to import. All the arguments are imported except these. This is mutually exclusive with 'arguments'. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="help" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Help/usage text for a documentation generating tool. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> </xsd:element> <xsd:element name="expandMacro"> <xsd:annotation> <xsd:documentation> <p> Added post 1.1. Expands a given macro into the sourceGen of the caller. This has the same effect as inserting the same templates and inlines from the macro's definition at the point of call. Variable references from those templates and inlines are substituted with the values provided in attributes (e.g. variableName="value") or expandArgument child elements. The latter may be preferred for cases where code is substituted, so the formatting may be retained. </p> <p> As a special case, variable references may have modifiers to modify the formatting of a variable when it is expanded. Modifiers are appended to the variable name as in: $(varName::modifier). </p> <p> Currently supported modifiers are all for tweaking canonical function argument lists, which match the format of declaration, with spaces, argument names, default values, etc: </p> <ul> <li>as-function-declaration-args: identity</li> <li> as-function-definition-args: removes default argument values </li> <li> as-function-location-args: removes argument names, default arguments, and spaces </li> </ul> </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="ConditionalSourceGen"> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="0" ref="expandArgument"/> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation> The macro to invoke (matching the id from defineMacro). </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="passArguments" type="listOfStrings" use="optional"> <xsd:annotation> <xsd:documentation> A list of arguments defined in the current calling macro to pass unchanged to the called macro, excluding any arguments that are not defined in the current call. This attribute is only valid in expandMacro called from a defineMacro. Passing arguments is different from adding attributes argName="$(argName)" because it avoids defining otherwise undefined arguments. (A missing optional argument is null, not the empty string. The '::is-defined' modifier can be used to check this.) Elements in the list of strings are names of arguments, or renames of the form targetArgumentName=hostArgumentName which passes hostArgumentName from the hosting macro with the name targetArgumentName (again, only if the argument is actually defined in the call). If this argument is not specified, all the arguments in the invoked macro are passed (zero or more may have defaults which are overridden in this macro). </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="dontPassArguments" type="listOfStrings" use="optional"> <xsd:annotation> <xsd:documentation> This is primarily used when passArguments is not specified. It specifies which arguments not to pass to the invoked macro, which become undefined in the expansion of that macro. This is useful when this macro takes over the work of one or more arguments from the invoked macro. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="help" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Help/usage text for a documentation generating tool. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:anyAttribute processContents="lax"> <xsd:annotation> <xsd:documentation> Any attribute matching the variables used in the given named macro may appear here. </xsd:documentation> </xsd:annotation> </xsd:anyAttribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="expandArgument"> <xsd:annotation> <xsd:documentation> Added post 1.1. Provides multiline text content for an argument. This is semantically identical to setting an attribute of the same name="..." value in the expandMacro element, with any standalone leading whitespace and standalone trailing whitespace removed (as with <template>). </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="name" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation> The variable to define (matching the id from macroArgument). </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="help" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Help/usage text for a documentation generating tool. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name="select"> <xsd:annotation> <xsd:documentation> This element encapsulates choice elements which allow conditional source mapping. One choice must match or an error results (you can use an empty choice to match the default case if necessary). Only the first matching choice is considered. <p> Only use one attribute (property, attribute, propertyExists, isComponentInstanceOf) for the select statement. </p> </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:element maxOccurs="unbounded" minOccurs="0" ref="choice"/> </xsd:sequence> <!-- only one of these should be set --> <xsd:attribute name="property" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Specifies the property path to test. (E.g. "flag", "[parent].flag", ...) Results in an error if the property does not exist, else the string version of the property to test. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="attribute" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Specifies the attribute value to test. Results in blank ("") or the value of the attribute to test. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="propertyExists" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Specifies the property path to test for existence. (E.g. "flag", "[parent].flag", ...) Results in a 'true' or 'false' value to test. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="isComponentInstanceOf" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Specifies the property path to test for existence, e.g., whether the property may be set or queried. This is independent of whether the property is actually set. The attribute takes a property path (e.g. "flag", "[parent].flag", ...) Results in a 'true' or 'false' value to test. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> </xsd:element> <xsd:element name="choice"> <xsd:annotation> <xsd:documentation> This defines a decision in the select element. If the "value" attribute matches the value obtained in the select element, the choice is matched and its mapping elements instantiated. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:choice maxOccurs="unbounded" minOccurs="0"> <xsd:element ref="twoWayMapping"/> <xsd:element ref="mapResource"/> <xsd:element ref="select"/> </xsd:choice> </xsd:sequence> <xsd:attribute name="value" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> The value to match. If unspecified, the choice always matches. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> </xsd:element> <xsd:complexType name="twoWayMappingType"> <xsd:annotation> <xsd:documentation>Base for two-way mappings.</xsd:documentation> </xsd:annotation> </xsd:complexType> <xsd:complexType name="mappingFixedType"> <xsd:annotation> <xsd:documentation>Base for mapping a fixed value to RSS.</xsd:documentation> </xsd:annotation> <xsd:complexContent> <xsd:extension base="twoWayMappingType"> <xsd:attribute name="value" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>The literal string to emit into RSS.</xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="mappingSimpleType"> <xsd:annotation> <xsd:documentation> Base for mapping simple types (integers, floats, strings, booleans). </xsd:documentation> </xsd:annotation> <xsd:complexContent> <xsd:extension base="twoWayMappingType"/> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="mappingInstanceType"> <xsd:annotation> <xsd:documentation> Base for mapping resources generated by component instances. Either a reference to the resource is emitted (for LLINK targets) or the resource expression is emitted (for STRUCT targets). </xsd:documentation> </xsd:annotation> <xsd:complexContent> <xsd:extension base="twoWayMappingType"> <xsd:attribute name="rsrcId" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation>If specified, which particular resource to match.</xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="mappingReferenceType"> <xsd:annotation> <xsd:documentation> Base for mapping references to resources generated by component instances. </xsd:documentation> </xsd:annotation> <xsd:complexContent> <xsd:extension base="twoWayMappingType"> <xsd:attribute name="rsrcId" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> If defined, tells which particular generated resource to reference. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="mappingEnumType"> <xsd:annotation> <xsd:documentation> Base for mapping enumerator properties. If any mapEnum elements specified, they completely define the list of mappings of internal enumerator values to external RSS values. Otherwise, internal values are directly emitted as RSS values. </xsd:documentation> </xsd:annotation> <xsd:complexContent> <xsd:extension base="twoWayMappingType"> <xsd:sequence maxOccurs="unbounded" minOccurs="0"> <xsd:element ref="mapEnum"/> </xsd:sequence> <xsd:attribute name="enumeration" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation>Unused.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="headers" type="listOfStrings" use="optional"> <xsd:annotation> <xsd:documentation> List of header files that must be included to provide the RSS enumerator symbols. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="true" name="validate" type="xsd:boolean" use="optional"> <xsd:annotation> <xsd:documentation> If true, ensure that mapped enumerators are declared in the RSS context, emitting warnings if not. Set this to false if mapping #defines or expressions. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="nameAlgorithm" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> If defined, mapped RSS values may be generated by an algorithm based on the current instance and property. See the com.nokia.sdt.sourceGen.nameAlgorithm extension point for details. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="uniqueValue" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> When nameAlgorithm is defined, specifies that some or all mapped values are generated by the name algorithm. If the value is "*", every value goes through the name algorithm and gets an enumerator in an *.hrh file. Otherwise, only properties matching the value are generated. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="mapEnum"> <xsd:annotation> <xsd:documentation> This defines the mapping of one particular property value to one particular RSS value. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:attribute name="value" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>The property value.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="enumerator" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>The RSS enumerator.</xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> </xsd:element> <xsd:complexType name="mappingIdentifierType"> <xsd:annotation> <xsd:documentation> Base for mapping property values to RSS identifiers (rather than strings, for instance, as mappingSimpleType would do). </xsd:documentation> </xsd:annotation> <xsd:complexContent> <xsd:extension base="twoWayMappingType"/> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="mappingResourceType"> <xsd:annotation> <xsd:documentation>Base for mapping resources in RSS.</xsd:documentation> </xsd:annotation> <xsd:complexContent> <xsd:extension base="twoWayMappingType"> <xsd:sequence> <xsd:choice maxOccurs="unbounded" minOccurs="0"> <xsd:element ref="mapSimpleMember"/> <xsd:element ref="mapInstanceMember"/> <xsd:element ref="mapReferenceMember"/> <xsd:element ref="mapFixedMember"/> <xsd:element ref="mapEnumMember"/> <xsd:element ref="mapIdentifierMember"/> <xsd:element ref="mapArrayMember"/> <xsd:element ref="mapResourceMember"/> <xsd:element ref="mapBitmaskMember"/> <xsd:element ref="mapMemberFromType"/> <xsd:element ref="mapIntoProperty"/> <xsd:element ref="select"/> </xsd:choice> </xsd:sequence> <xsd:attribute name="struct" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation>The RSS STRUCT name to generate.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="headers" type="listOfStrings" use="optional"> <xsd:annotation> <xsd:documentation> The list of headers required to declare the STRUCT. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="id" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> The unique identifier for this resource within a component. Every mapResourceXXX must have an identifier, either implicitly or explicitly defined. If unspecified, an identifier is automatically generated for mapResourceMember or mapResourceElement elements. Otherwise, missing identifiers are reported at errors at source mapping time. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:complexType name="mappingBitmaskType"> <xsd:annotation> <xsd:documentation> Base for mapping sets of boolean properties to a single bitmask expression in RSS. When mapping this element, a working set of the includedProperties is created. Each mapBitmaskValue element is considered in turn, and if all the properties it references are present in the working set and have the value "true", the matching value is OR'ed into the target expression, and those properties removed from the working set. Once the working set is empty, the mapping is complete. If all mapBitmaskValues are exhausted but the working set is non-empty, this is a component error. </xsd:documentation> </xsd:annotation> <xsd:complexContent> <xsd:extension base="twoWayMappingType"> <xsd:sequence maxOccurs="unbounded" minOccurs="0"> <xsd:element ref="mapBitmaskValue"/> </xsd:sequence> <xsd:attribute name="includedProperties" type="listOfStrings" use="optional"> <xsd:annotation> <xsd:documentation> The list of properties included in the set. If undefined, all the sibling properties (within a component or compound property) are included. Every included property must be referenced in a mapBitmaskValue element, or else the mapping is considered invalid, and an error reported. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:element name="mapBitmaskValue"> <xsd:annotation> <xsd:documentation> Map a set of properties to a subexpression of the bitmask expression. If all the given properties are "true", the given value is OR'ed into the target expression. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:attribute name="properties" type="listOfStrings" use="required"> <xsd:annotation> <xsd:documentation> List of properties to consider. May be property paths. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="value" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>Value to OR into the target expression.</xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:complexType> </xsd:element> <xsd:element abstract="true" name="twoWayMapping" type="twoWayMappingType"/> <xsd:complexType name="mappingArrayType"> <xsd:annotation> <xsd:documentation> Base for mapping arrays from sequence properties or component instance children. </xsd:documentation> </xsd:annotation> <xsd:complexContent> <xsd:extension base="twoWayMappingType"> <xsd:sequence> <xsd:choice maxOccurs="1" minOccurs="0"> <xsd:element ref="twoWayMapping"> <xsd:annotation> <xsd:documentation> This is restricted to mapXXXElement, mapElementFromType, or mapIntoProperty, but we can't represent this in XSD. </xsd:documentation> </xsd:annotation> </xsd:element> <xsd:element ref="select"/> </xsd:choice> </xsd:sequence> </xsd:extension> </xsd:complexContent> </xsd:complexType> <xsd:annotation> <xsd:documentation> Type mappings are used to store mappings along with a type. Added post 1.2 </xsd:documentation> </xsd:annotation> <!-- added post 1.2 --> <xsd:element name="mapFixedType" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation>Map a fixed value.</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingFixedType"> <xsd:attribute name="typeId" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Identifies the id for this particular kind of type mapping. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <!-- added post 1.2 --> <xsd:element name="mapSimpleType" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation>Map a simple value.</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingSimpleType"> <xsd:attribute name="typeId" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Identifies the id for this particular kind of type mapping. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <!-- added post 1.2 --> <xsd:element name="mapInstanceType" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation>Map resources for an instance.</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingInstanceType"> <xsd:attribute name="typeId" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Identifies the id for this particular kind of type mapping. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <!-- added post 1.2 --> <xsd:element name="mapReferenceType" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation> Map a reference property to resources the instance generates. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingReferenceType"> <xsd:attribute name="typeId" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Identifies the id for this particular kind of type mapping. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <!-- added post 1.2 --> <xsd:element name="mapEnumType" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation>Map an enumerator to RSS.</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingEnumType"> <xsd:attribute name="typeId" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Identifies the id for this particular kind of type mapping. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <!-- added post 1.2 --> <xsd:element name="mapIdentifierType" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation> Map a simple property to a literal (identifier) in RSS. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingIdentifierType"> <xsd:attribute name="typeId" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Identifies the id for this particular kind of type mapping. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <!-- added post 1.2 --> <xsd:element name="mapResourceType" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation> Map a property to a RESOURCE expression or statement. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingResourceType"> <xsd:attribute name="typeId" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Identifies the id for this particular kind of type mapping. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <!-- added post 1.2 --> <xsd:element name="mapArrayType" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation>Map a property or child list to an array in RSS.</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingArrayType"> <xsd:attribute name="typeId" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Identifies the id for this particular kind of type mapping. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <!-- added post 1.2 --> <xsd:element name="mapBitmaskType" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation> Map a set of boolean properties to a bitmask expression in RSS. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingBitmaskType"> <xsd:attribute name="typeId" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Identifies the id for this particular kind of type mapping. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:annotation> <xsd:documentation> Member mappings are used to map a property to a member of a resource. </xsd:documentation> </xsd:annotation> <xsd:element name="mapFixedMember" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation>Map a fixed value to an RSS member.</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingFixedType"> <xsd:attribute name="member" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>The struct member.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="true" name="suppressDefault" type="xsd:boolean" use="optional"> <xsd:annotation> <xsd:documentation> If true, do not emit the member initializer if the property matches the default specified in the STRUCT. If may be useful to set this to false if the default changes between SDK releases (to avoid branching components). </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="mapSimpleMember" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation>Map a simple value to a member.</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingSimpleType"> <xsd:attribute name="property" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>The property path providing the value.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="member" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>The struct member.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="true" name="suppressDefault" type="xsd:boolean" use="optional"> <xsd:annotation> <xsd:documentation> If true, do not emit the member initializer if the property matches the default specified in the STRUCT. If may be useful to set this to false if the default changes between SDK releases (to avoid branching components). </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="mapInstanceMember" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation>Map resources for an instance.</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingInstanceType"> <xsd:attribute name="property" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>The property path providing the value.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="member" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>The struct member.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="true" name="suppressDefault" type="xsd:boolean" use="optional"> <xsd:annotation> <xsd:documentation> If true, do not emit the member initializer if the property matches the default specified in the STRUCT. If may be useful to set this to false if the default changes between SDK releases (to avoid branching components). </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="mapReferenceMember" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation> Map a reference property to resources the instance generates. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingReferenceType"> <xsd:attribute name="property" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>The property path providing the value.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="member" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>The struct member.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="true" name="suppressDefault" type="xsd:boolean" use="optional"> <xsd:annotation> <xsd:documentation> If true, do not emit the member initializer if the property matches the default specified in the STRUCT. If may be useful to set this to false if the default changes between SDK releases (to avoid branching components). </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="mapEnumMember" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation>Map an enumerator to RSS.</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingEnumType"> <xsd:attribute name="property" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>The property path providing the value.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="member" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>The struct member.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="true" name="suppressDefault" type="xsd:boolean" use="optional"> <xsd:annotation> <xsd:documentation> If true, do not emit the member initializer if the property matches the default specified in the STRUCT. If may be useful to set this to false if the default changes between SDK releases (to avoid branching components). </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="mapIdentifierMember" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation> Map a simple property to a literal (identifier) in RSS. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingIdentifierType"> <xsd:attribute name="property" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>The property path providing the value.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="member" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>The struct member.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="true" name="suppressDefault" type="xsd:boolean" use="optional"> <xsd:annotation> <xsd:documentation> If true, do not emit the member initializer if the property matches the default specified in the STRUCT. If may be useful to set this to false if the default changes between SDK releases (to avoid branching components). </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="mapResourceMember" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation> Map a property to a RESOURCE expression or statement. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingResourceType"> <xsd:attribute name="property" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>The property path providing the value.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="member" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>The struct member.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="true" name="suppressDefault" type="xsd:boolean" use="optional"> <xsd:annotation> <xsd:documentation> If true, do not emit the member initializer if the property matches the default specified in the STRUCT. If may be useful to set this to false if the default changes between SDK releases (to avoid branching components). </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="mapArrayMember" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation>Map a property or child list to an array in RSS.</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingArrayType"> <xsd:attribute name="property" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>The property path providing the value.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="member" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>The struct member.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="true" name="suppressDefault" type="xsd:boolean" use="optional"> <xsd:annotation> <xsd:documentation> If true, do not emit the member initializer if the property matches the default specified in the STRUCT. If may be useful to set this to false if the default changes between SDK releases (to avoid branching components). </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="mapBitmaskMember" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation> Map a set of boolean properties to a bitmask expression in RSS. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingBitmaskType"> <xsd:attribute name="property" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>The property path providing the value.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="member" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>The struct member.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="true" name="suppressDefault" type="xsd:boolean" use="optional"> <xsd:annotation> <xsd:documentation> If true, do not emit the member initializer if the property matches the default specified in the STRUCT. If may be useful to set this to false if the default changes between SDK releases (to avoid branching components). </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <!-- added post 1.2 --> <xsd:element name="mapMemberFromType" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation> Map RSS from the type declaration attached to the given property. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="twoWayMappingType"> <xsd:attribute name="property" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>The property path providing the value.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="member" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>The struct member.</xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="true" name="suppressDefault" type="xsd:boolean" use="optional"> <xsd:annotation> <xsd:documentation> If true, do not emit the member initializer if the property matches the default specified in the STRUCT. If may be useful to set this to false if the default changes between SDK releases (to avoid branching components). </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="typeId" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> This attribute tells which of a set of type mappings to use from the given type (as named in the id="..." attributes on the mapXXXType children of sourceTypeMapping). </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <!-- Array element mappings --> <xsd:element name="mapSimpleElement" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation>Map a simple value to an array element.</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingSimpleType"/> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="mapFixedElement" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation>Map a fixed value to an array element.</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingFixedType"/> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="mapInstanceElement" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation>Map an instance's resources to an array element.</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingInstanceType"/> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="mapReferenceElement" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation>Map a reference property to an array element.</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingReferenceType"/> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="mapEnumElement" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation>Map an enumerator to an array element.</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingEnumType"/> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="mapIdentifierElement" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation> Map a simple value to a literal (identifier) in an array element. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingIdentifierType"/> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="mapResourceElement" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation> Map a compound property or instance to resources in an array element. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingResourceType"> <xsd:attribute name="instanceIdentifyingMember" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> This attribute provides a means to distinguish resource elements that come from different instances. It tells which resource member to use as a key, so that the array mapper can match up elements to instances when importing, to allow unknown items to be inserted (or for known items to be reordered, ideally). If not set, the array is assumed to contain entries whose positions uniquely identify them (as is the case with arrays of integers, references, etc.). </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="mapBitmaskElement" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation> Map a set of boolean properties to an expression in an array element. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingBitmaskType"/> </xsd:complexContent> </xsd:complexType> </xsd:element> <!-- no mapArrayElement: no sub-arrays! --> <!-- added post 1.2 --> <xsd:element name="mapElementFromType" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation> Map RSS from the type declaration attached to the current element. You may need to use <mapProperty> to descend into a child of the current element for this to work. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="twoWayMappingType"> <xsd:attribute name="typeId" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> This attribute tells which of a set of type mappings to use from the given type (as named in the id="..." attributes on the mapXXXType children of sourceTypeMapping). </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <!-- added post 1.2 --> <xsd:element name="mapIntoProperty" substitutionGroup="twoWayMapping"> <xsd:annotation> <xsd:documentation> Delve into a property path without generating any resources. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="twoWayMappingType"> <xsd:sequence> <xsd:element ref="twoWayMapping"/> </xsd:sequence> <xsd:attribute name="property" type="xsd:string" use="required"> <xsd:annotation> <xsd:documentation>The property path providing the value.</xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <xsd:element name="sourceMapping"> <xsd:annotation> <xsd:documentation> The sourceMapping element defines a particular style of source generation which consists of automatic generation of source by structurally mapping a component instance to a source definition. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:choice maxOccurs="unbounded" minOccurs="0"> <xsd:element ref="mapResource"/> <xsd:element ref="select"/> </xsd:choice> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:simpleType name="standaloneType"> <xsd:annotation> <xsd:documentation> The selector for controlling standalone resource mapping. </xsd:documentation> </xsd:annotation> <xsd:restriction base="xsd:string"> <xsd:enumeration value="false"> <xsd:annotation> <xsd:documentation>Deprecated value corresponding to "default".</xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="true"> <xsd:annotation> <xsd:documentation>Depecated value corresponding to "always".</xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="never"> <xsd:annotation> <xsd:documentation> Never emit the resource by itself. Only emit it if another resource references it. By using this, a component may generate two forms of resource (with different resource ids) and let a container or reference select which resource it wants, without also generating the unused variant. </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="default"> <xsd:annotation> <xsd:documentation> Emit the resource by itself if it is not generated as an expression or by a LINK or LLINK. </xsd:documentation> </xsd:annotation> </xsd:enumeration> <xsd:enumeration value="always"> <xsd:annotation> <xsd:documentation> Always emit the resource by itself, even if already generated as an expression. </xsd:documentation> </xsd:annotation> </xsd:enumeration> </xsd:restriction> </xsd:simpleType> <xsd:element name="mapResource"> <xsd:annotation> <xsd:documentation>Map an instance to a RESOURCE.</xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:complexContent> <xsd:extension base="mappingResourceType"> <xsd:attribute default="false" name="unnamed" type="xsd:boolean" use="optional"> <xsd:annotation> <xsd:documentation> This tells whether to emit the resource without a name </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute default="default" name="standalone" type="standaloneType" use="optional"> <xsd:annotation> <xsd:documentation> This tells whether the resource must be emitted as a standalone resource statement (always), regardless of whether it is also generated as a resource expression, or whether it will never be emitted unless referenced by another resource (never). The default behavior is to emit it if not generated as an expression. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="baseName" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Force the base name of the resource. If unspecified, resources are named after the instance and member or element being mapped. </xsd:documentation> </xsd:annotation> </xsd:attribute> <xsd:attribute name="rssFile" type="xsd:string" use="optional"> <xsd:annotation> <xsd:documentation> Force the RSS filename (but not directory). This is used to redirect resources to a top-level RSS file. </xsd:documentation> </xsd:annotation> </xsd:attribute> </xsd:extension> </xsd:complexContent> </xsd:complexType> </xsd:element> <!-- added post 1.2 --> <xsd:element name="sourceTypeMapping"> <xsd:annotation> <xsd:documentation> The sourceTypeMapping element mirrors sourceMapping but provides stored source mapping data for use by compound or enum types. </xsd:documentation> </xsd:annotation> <xsd:complexType> <xsd:sequence> <xsd:choice maxOccurs="unbounded" minOccurs="0"> <xsd:element ref="mapResourceType"/> <xsd:element ref="mapEnumType"/> <xsd:element ref="mapSimpleType"/> <xsd:element ref="mapFixedType"/> <xsd:element ref="mapBitmaskType"/> <xsd:element ref="mapIdentifierType"/> <xsd:element ref="mapReferenceType"/> <xsd:element ref="mapArrayType"/> <xsd:element ref="select"/> </xsd:choice> </xsd:sequence> </xsd:complexType> </xsd:element> </xsd:schema>