uidesigner/com.nokia.sdt.component.symbian/component.xsd
changeset 0 fb279309251b
equal deleted inserted replaced
-1:000000000000 0:fb279309251b
       
     1 <?xml version="1.0" encoding="UTF-8"?>
       
     2 <!-- Copyright (C) 2006 Nokia Corporation. All rights reserved. -->
       
     3 
       
     4 <!-- Entities for parts of the definitions we're forced to repeat due to
       
     5 the lack of multiple inheritance in EMF -->
       
     6 <!DOCTYPE xsd:schema [
       
     7 	<!ENTITY MapMemberAttributes '
       
     8 			<xsd:attribute name="member" type="xsd:string" use="required">
       
     9 				<xsd:annotation><xsd:documentation>
       
    10 				The struct member.
       
    11 				</xsd:documentation></xsd:annotation>	
       
    12 			</xsd:attribute>
       
    13 					
       
    14 			<xsd:attribute default="true" name="suppressDefault" type="xsd:boolean" use="optional">
       
    15 				<xsd:annotation><xsd:documentation>
       
    16 				If true, do not emit the member initializer if the property matches the default
       
    17 				specified in the STRUCT.  If may be useful to set this to false if the
       
    18 				default changes between SDK releases (to avoid branching components).
       
    19 				</xsd:documentation></xsd:annotation>	
       
    20 			</xsd:attribute>
       
    21 			'
       
    22 	>
       
    23 	
       
    24 	<!ENTITY MapPropertyAttribute '
       
    25 					<xsd:attribute name="property" type="xsd:string" use="required">
       
    26 						<xsd:annotation><xsd:documentation>
       
    27 						The property path providing the value.
       
    28 						</xsd:documentation></xsd:annotation>	
       
    29 					</xsd:attribute>
       
    30 	
       
    31 			'
       
    32 	>
       
    33 	
       
    34 	<!ENTITY MapTypeIdAttribute '
       
    35 					<xsd:attribute name="typeId" type="xsd:string" use="optional">
       
    36 						<xsd:annotation><xsd:documentation>
       
    37 						Identifies the id for this particular kind of type mapping.
       
    38 						</xsd:documentation></xsd:annotation>	
       
    39 					</xsd:attribute>
       
    40 	
       
    41 			'
       
    42 	>
       
    43 ]>
       
    44 
       
    45 <xsd:schema xmlns="http://www.nokia.com/sdt/emf/component" 
       
    46    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" 
       
    47    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
       
    48    elementFormDefault="qualified" 
       
    49    targetNamespace="http://www.nokia.com/sdt/emf/component">
       
    50 
       
    51 	<xsd:element name="componentDefinition">
       
    52 		<xsd:annotation>
       
    53 			<xsd:documentation>componentDefinition must be the root element of a component definition document.
       
    54 			
       
    55 			It includes zero or more compound property declarations, zero or more enum declarations and zero or one
       
    56 			component declarations.
       
    57 			
       
    58 			Displayable strings can either be included literally within the XML or referenced in the 
       
    59 			component.properties file by prefixing the string with %. For example, "%foo" references the 
       
    60 			value of the "foo" property in component.properties. To obtain the string "%foo" 
       
    61 			use a double %, e.g. "%%foo".
       
    62 			</xsd:documentation>
       
    63 		</xsd:annotation>
       
    64 		<xsd:complexType>
       
    65 			<xsd:sequence>
       
    66 				<xsd:element maxOccurs="unbounded" minOccurs="0" ref="compoundPropertyDeclaration"/>
       
    67 				<xsd:element maxOccurs="unbounded" minOccurs="0" ref="enumPropertyDeclaration"/>
       
    68 				<xsd:element minOccurs="0" ref="component"/>
       
    69 			</xsd:sequence>
       
    70 		</xsd:complexType>
       
    71 	</xsd:element>
       
    72 	<xsd:element name="component">
       
    73         <xsd:annotation><xsd:documentation>
       
    74         This is the container element for all the information about a single component.
       
    75         </xsd:documentation></xsd:annotation>
       
    76         <xsd:complexType>
       
    77 			<xsd:sequence>
       
    78 				<xsd:element minOccurs="0" ref="documentation"/>
       
    79 				<xsd:element minOccurs="0" ref="symbian"/>
       
    80 				<xsd:element minOccurs="0" ref="designerImages"/>
       
    81 				<xsd:element minOccurs="0" ref="attributes"/>
       
    82 				<xsd:element minOccurs="0" ref="properties"/>
       
    83 				<xsd:element minOccurs="0" maxOccurs="unbounded" ref="extensionProperties"/>
       
    84 				<xsd:element minOccurs="0" ref="propertyOverrides"/>
       
    85 				<xsd:element minOccurs="0" ref="events"/>
       
    86 				<xsd:element minOccurs="0" ref="sourceGen"/>
       
    87 				<xsd:element minOccurs="0" ref="sourceMapping"/>
       
    88 				<xsd:element minOccurs="0" ref="implementations"/>
       
    89 			</xsd:sequence>
       
    90 			<xsd:attribute name="qualifiedName" type="xsd:string" use="required">
       
    91 				<xsd:annotation><xsd:documentation>A globally unique name for a component. By convention these use dotted names, such as
       
    92 				com.example.MyComponent. Different versions of a component, in different files, can share the same qualified name. These values
       
    93 				should not be localized.
       
    94 				</xsd:documentation></xsd:annotation>
       
    95 			</xsd:attribute>
       
    96 			<xsd:attribute name="friendlyName" type="xsd:string" use="required">
       
    97 				<xsd:annotation><xsd:documentation>A short name displayed in the user interface. These values should be localized.
       
    98 				</xsd:documentation></xsd:annotation>
       
    99 			</xsd:attribute>
       
   100 			<xsd:attribute name="instanceNameRoot" type="xsd:string">
       
   101 				<xsd:annotation><xsd:documentation>The root part of the name used in assigned unique names to component instances. For example,
       
   102 			if the root is "label" then names will be assigned in sequence "label1", "label2", and so forth. These values should not be localized.
       
   103 				</xsd:documentation></xsd:annotation>
       
   104 			</xsd:attribute>
       
   105 			<xsd:attribute name="version" type="xsd:string">
       
   106 				<xsd:annotation><xsd:documentation>Identifies the version of the component specified by this document. Uses OSGI style version strings, composed
       
   107 			of up to 3 integers and a text qualifier, of the form &lt;major version&gt;.&lt;minor version&gt;.&lt;micro version&gt;.&lt;qualifier&gt;.
       
   108 			See http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/osgi/org/osgi/framework/Version.html for further information.
       
   109 				</xsd:documentation></xsd:annotation>
       
   110 			</xsd:attribute>
       
   111 			<xsd:attribute name="baseComponent" type="xsd:string">
       
   112 				<xsd:annotation><xsd:documentation>The fully qualifed name of the base component. The version of the base component
       
   113 			cannot be specified, it will be whichever is selected via SDK matching.
       
   114 				</xsd:documentation></xsd:annotation>
       
   115 			</xsd:attribute>
       
   116 			<xsd:attribute name="category" type="xsd:string">
       
   117 				<xsd:annotation><xsd:documentation>Specifies the grouping for the editor's component palette. If this string matches the key
       
   118 				of a known group then the localized name is looked up within the Symbian component provider. Otherwise it is treated like a
       
   119 				potentially localized string, i.e. if it is %-prefixed a string is looked up in the properties file.
       
   120 				</xsd:documentation></xsd:annotation>
       
   121 			</xsd:attribute>
       
   122 			<xsd:attribute name="abstract" type="xsd:boolean">
       
   123 				<xsd:annotation><xsd:documentation>Specify true to define a component intended to be used as a basis for deriving other components.
       
   124 				Abstract components are filtered out of the component palette.
       
   125 				</xsd:documentation></xsd:annotation>
       
   126 			</xsd:attribute>
       
   127 		</xsd:complexType>
       
   128 	</xsd:element>
       
   129 	
       
   130 	<xsd:element name="documentation">
       
   131 		<xsd:annotation>
       
   132 				<xsd:documentation>The optional documentation element provides brief description information about the component and a link to more detailed documentation
       
   133 				</xsd:documentation>
       
   134 			</xsd:annotation>
       
   135 		<xsd:complexType>
       
   136 			<xsd:sequence>
       
   137 				<xsd:element name="information" type="xsd:string">
       
   138 					<xsd:annotation><xsd:documentation>Brief description of the component, shown in a tooltip. This value should be localized.
       
   139 					</xsd:documentation></xsd:annotation>
       
   140 				</xsd:element>
       
   141 				<xsd:element name="helpTopic" type="xsd:string">
       
   142 					<xsd:annotation><xsd:documentation>A link to help information for this component.
       
   143 					</xsd:documentation></xsd:annotation>
       
   144 				</xsd:element>
       
   145 				<xsd:element name="wizardDescription" type="xsd:string">
       
   146 					<xsd:annotation><xsd:documentation>Text displayed in the UI design wizard. Applies only to containers and top-level content. This
       
   147 					value should be localized.
       
   148 					</xsd:documentation></xsd:annotation>
       
   149 				</xsd:element>
       
   150 			</xsd:sequence>
       
   151 		</xsd:complexType>
       
   152 	</xsd:element>
       
   153 
       
   154 	<xsd:element name="symbian">
       
   155 		<xsd:annotation>
       
   156 			<xsd:documentation>The optional Symbian element provides SDK compatibility information and information about the related 
       
   157 	C++ classes and resource structures. When this element is omitted the component will be considered incompatible
       
   158 	with all Symbian SDKs.
       
   159 			</xsd:documentation>
       
   160 		</xsd:annotation>		
       
   161 		<xsd:complexType>
       
   162 			<xsd:attribute name="sdkName" use="required">
       
   163 				<xsd:annotation><xsd:documentation>This value identifies the Symbian OS variant with which the component is compatible.
       
   164 				Currently the only supported value is "com.nokia.serie60".
       
   165 				</xsd:documentation></xsd:annotation>
       
   166 			</xsd:attribute>
       
   167 			<xsd:attribute name="minSDKVersion" type="xsd:string" use="required">
       
   168 				<xsd:annotation><xsd:documentation>A version number indicating the lowest SDK version with which the component is
       
   169 				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.
       
   170 				Uses OSGI style version strings, composed of up to 3 integers and a text qualifier, of the form &lt;major version&gt;.&lt;minor version&gt;.&lt;micro version&gt;.&lt;qualifier&gt;.
       
   171 			    See http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/osgi/org/osgi/framework/Version.html for further information.
       
   172 				</xsd:documentation></xsd:annotation>
       
   173 			</xsd:attribute>
       
   174 			<xsd:attribute name="maxSDKVersion" type="xsd:string">
       
   175 			<xsd:annotation><xsd:documentation>A version number indicating the maximum SDK version with which the component is
       
   176 				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.
       
   177 				Uses OSGI style version strings, composed of up to 3 integers and a text qualifier, of the form &lt;major version&gt;.&lt;minor version&gt;.&lt;micro version&gt;.&lt;qualifier&gt;.
       
   178 			    See http://help.eclipse.org/help31/topic/org.eclipse.platform.doc.isv/reference/osgi/org/osgi/framework/Version.html for further information.
       
   179 			</xsd:documentation></xsd:annotation>
       
   180 			</xsd:attribute>
       
   181 			<xsd:attribute name="className" type="xsd:string">
       
   182 				<xsd:annotation><xsd:documentation>The C++ class name corresponding to this component, if any. Not used for source code generation,
       
   183 				but is displayed in the component palette.
       
   184 				</xsd:documentation></xsd:annotation>
       
   185 			</xsd:attribute>
       
   186 			<xsd:attribute name="classHelpTopic" type="xsd:string">
       
   187 				<xsd:annotation><xsd:documentation>A link to help information for this C++ class
       
   188 				</xsd:documentation></xsd:annotation>
       
   189 			</xsd:attribute>
       
   190 			<xsd:attribute name="resourceType" type="xsd:string">
       
   191 				<xsd:annotation><xsd:documentation>The Symbian RSS resource type for this component, if any
       
   192 				</xsd:documentation></xsd:annotation>
       
   193 			</xsd:attribute>
       
   194 			<xsd:attribute name="resourceHelpTopic" type="xsd:string">
       
   195 				<xsd:annotation><xsd:documentation>A link to help information for the resource
       
   196 				</xsd:documentation></xsd:annotation>
       
   197 			</xsd:attribute>
       
   198 		</xsd:complexType>
       
   199 	</xsd:element>
       
   200 	<xsd:element name="designerImages">
       
   201 		<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.
       
   202 		if a component never appears in the UI design wizard or palette then it doesn't need those images.
       
   203 		</xsd:documentation></xsd:annotation>
       
   204 		<xsd:complexType>
       
   205 			<xsd:attribute name="smallIconFile" type="xsd:string">
       
   206 				<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.
       
   207 				</xsd:documentation></xsd:annotation>
       
   208 			</xsd:attribute>
       
   209 			<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.
       
   210 				<xsd:annotation><xsd:documentation>
       
   211 				</xsd:documentation></xsd:annotation>
       
   212 			</xsd:attribute>
       
   213 			<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.
       
   214 				<xsd:annotation><xsd:documentation>
       
   215 				</xsd:documentation></xsd:annotation>
       
   216 			</xsd:attribute>
       
   217 			<xsd:attribute name="thumbnailFile" type="xsd:string">
       
   218 				<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
       
   219 				layout area if the component does not provide rendering code.
       
   220 				</xsd:documentation></xsd:annotation>
       
   221 			</xsd:attribute>
       
   222 		</xsd:complexType>
       
   223 	</xsd:element>
       
   224 	
       
   225 	<xsd:element name="attributes">
       
   226 		<xsd:annotation>
       
   227 			<xsd:documentation>
       
   228 Attribute elements can hold any static character data that is common to all instances of a component. Attributes are inherited from their base components.
       
   229 			</xsd:documentation>
       
   230 		</xsd:annotation>
       
   231 		<xsd:complexType>
       
   232 			<xsd:sequence>
       
   233 				<xsd:element maxOccurs="unbounded" ref="attribute"/>
       
   234 			</xsd:sequence>
       
   235 		</xsd:complexType>
       
   236 	</xsd:element>
       
   237 	<xsd:element name="attribute">
       
   238 		<xsd:complexType>
       
   239 			<xsd:simpleContent>
       
   240 				<xsd:extension base="xsd:string">
       
   241 					<xsd:attribute name="key" type="xsd:string" use="required">
       
   242 						<xsd:annotation><xsd:documentation>
       
   243 						</xsd:documentation></xsd:annotation>
       
   244 					</xsd:attribute>
       
   245 				</xsd:extension>
       
   246 			</xsd:simpleContent>
       
   247 		</xsd:complexType>
       
   248 	</xsd:element>
       
   249 	
       
   250 	<xsd:element name="properties">
       
   251 		<xsd:annotation><xsd:documentation>The list of properties defined for this component. Components also inherit the properties of their base
       
   252 		components, and can have properties added dynamically, see extensionProperties.
       
   253 		</xsd:documentation></xsd:annotation>
       
   254 		<xsd:complexType>
       
   255 			<xsd:sequence>
       
   256 				<xsd:element maxOccurs="unbounded" minOccurs="0" ref="abstractProperty"/>
       
   257 			</xsd:sequence>
       
   258 		</xsd:complexType>
       
   259 	</xsd:element>
       
   260 	
       
   261 	<xsd:element name="extensionProperties">
       
   262 		<xsd:annotation><xsd:documentation>Extension properties may be dynamically added, based on the state of an instance of this
       
   263 		component, its container, or other objects. There may be more than one set of extension properties defined in a component.
       
   264 		See the com.nokia.sdt.datamodel.adapter.IPropertyExtenders interface.
       
   265 		</xsd:documentation></xsd:annotation>
       
   266 		<xsd:complexType>
       
   267 			<xsd:sequence>
       
   268 				<xsd:element maxOccurs="unbounded" minOccurs="0" ref="abstractProperty"/>
       
   269 			</xsd:sequence>
       
   270 			<xsd:attribute name="name" type="xsd:string" use="required">
       
   271 				<xsd:annotation><xsd:documentation>The unique name of this extension property set. Used to select properties
       
   272 				to add at runtime.
       
   273 				</xsd:documentation></xsd:annotation>
       
   274 			</xsd:attribute>
       
   275 		</xsd:complexType>
       
   276 	</xsd:element>
       
   277 	<xsd:simpleType name="propertyDataType">
       
   278 		<xsd:annotation><xsd:documentation>Simple, predefined property types.
       
   279 		</xsd:documentation></xsd:annotation>
       
   280 		<xsd:restriction base="xsd:string">
       
   281 			<xsd:enumeration value="void">
       
   282 				<xsd:annotation><xsd:documentation>The empty type. Do not use for real properties.
       
   283 				</xsd:documentation></xsd:annotation>
       
   284 			</xsd:enumeration>
       
   285 			<xsd:enumeration value="boolean">
       
   286 				<xsd:annotation><xsd:documentation>
       
   287 				</xsd:documentation></xsd:annotation>True/False values.
       
   288 			</xsd:enumeration>
       
   289 			<xsd:enumeration value="integer">
       
   290 				<xsd:annotation><xsd:documentation>Four byte integer properties. Ranges may be constrained on property declarations.
       
   291 				</xsd:documentation></xsd:annotation>
       
   292 			</xsd:enumeration>
       
   293 			<xsd:enumeration value="float">
       
   294 				<xsd:annotation><xsd:documentation>Floating point values. Ranges may be constrained on property declarations.
       
   295 				</xsd:documentation></xsd:annotation>
       
   296 			</xsd:enumeration>
       
   297 			<xsd:enumeration value="string">
       
   298 				<xsd:annotation><xsd:documentation>Non-localized string literals
       
   299 				</xsd:documentation></xsd:annotation>
       
   300 			</xsd:enumeration>
       
   301 			<xsd:enumeration value="localizedString">
       
   302 				<xsd:annotation><xsd:documentation>Localized string literals. Users may enter different values for each language.
       
   303 				</xsd:documentation></xsd:annotation>
       
   304 			</xsd:enumeration>
       
   305 			<xsd:enumeration value="uniqueName">
       
   306 				<xsd:annotation><xsd:documentation>Unique, non-localized string. Values are forced to be unique across the data model.
       
   307 				</xsd:documentation></xsd:annotation>
       
   308 			</xsd:enumeration>
       
   309 		</xsd:restriction>
       
   310 	</xsd:simpleType>
       
   311 	
       
   312 	<xsd:element abstract="true" name="abstractProperty" type="abstractPropertyType"/>
       
   313 	<xsd:element name="property" substitutionGroup="abstractProperty" type="simplePropertyType"/>
       
   314 	<xsd:element name="compoundProperty" substitutionGroup="abstractProperty" type="compoundPropertyType"/>
       
   315 	<xsd:element name="enumProperty" substitutionGroup="abstractProperty" type="enumPropertyType"/>
       
   316 	<xsd:element name="arrayProperty" substitutionGroup="abstractProperty" type="arrayPropertyType"/>
       
   317 	<xsd:element name="componentReferenceProperty" substitutionGroup="abstractProperty" type="componentReferencePropertyType"/>
       
   318 	<xsd:complexType name="abstractPropertyType">
       
   319 			<xsd:annotation><xsd:documentation>A base schema type for further property type declarations. Not used directly in components.
       
   320 			</xsd:documentation></xsd:annotation>
       
   321 		<xsd:attribute name="name" type="xsd:string" use="required">
       
   322 			<xsd:annotation><xsd:documentation>The internal name for the property. It must be unique within the component and its base
       
   323 			components. Since it may be used as an identifier in scripts it should be a legal JavaScript identifier.
       
   324 			</xsd:documentation></xsd:annotation>
       
   325 		</xsd:attribute>
       
   326 		<xsd:attribute name="displayName" type="xsd:string">
       
   327 			<xsd:annotation><xsd:documentation>The property name to be display in the user interface. Can contain spaces and other characters.
       
   328 			This value should be localized.
       
   329 			</xsd:documentation></xsd:annotation>
       
   330 		</xsd:attribute>
       
   331 		<xsd:attribute name="category" type="xsd:string">
       
   332 			<xsd:annotation><xsd:documentation>The category grouping to be used in the property sheet. 
       
   333 			 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
       
   334 			 potentially localized string, i.e. if it is %-prefixed a string is looked up in the properties file.
       
   335 			 The special value of "hidden" will cause the property to be filtered from the property sheet.
       
   336 			</xsd:documentation></xsd:annotation>
       
   337 		</xsd:attribute>
       
   338 		<xsd:attribute default="false" name="readOnly" type="xsd:boolean">
       
   339 			<xsd:annotation><xsd:documentation>If true the property will be read-only in the property sheet.
       
   340 			</xsd:documentation></xsd:annotation>
       
   341 		</xsd:attribute>
       
   342 		<xsd:attribute default="true" name="resettable" type="xsd:boolean">
       
   343 			<xsd:annotation><xsd:documentation>If false the reset button will be disabled, inhibiting the user from reverting to the default value
       
   344 			</xsd:documentation></xsd:annotation>
       
   345 		</xsd:attribute>
       
   346 		<xsd:attribute name="descriptionKey" type="xsd:string">
       
   347 			<xsd:annotation><xsd:documentation>A property key to descriptive text for the property to be displayed in the status bar
       
   348 			when the property is selected in the property sheet.
       
   349 			</xsd:documentation></xsd:annotation>
       
   350 		</xsd:attribute>
       
   351 		<xsd:attribute name="helpKey" type="xsd:string">
       
   352 			<xsd:annotation><xsd:documentation>A key to more detailed help for the property.
       
   353 			</xsd:documentation></xsd:annotation>
       
   354 		</xsd:attribute>
       
   355 		<xsd:attribute name="editorClass" type="xsd:string">
       
   356 			<xsd:annotation><xsd:documentation>The fully qualified name of a class implementing com.nokia.sdt.component.property.IPropertyEditorFactory.
       
   357 			This allows Java code to provide a label provider, cell editor, and validator for the property.
       
   358 			</xsd:documentation></xsd:annotation>
       
   359 		</xsd:attribute>
       
   360 	</xsd:complexType>
       
   361 	
       
   362 	<xsd:complexType name="simplePropertyType">
       
   363 			<xsd:annotation><xsd:documentation>Concrete type used for basic properties.
       
   364 			</xsd:documentation></xsd:annotation>
       
   365 		<xsd:complexContent>
       
   366 			<xsd:extension base="abstractPropertyType">
       
   367 				<xsd:attribute name="type" type="propertyDataType" use="required">
       
   368 					<xsd:annotation><xsd:documentation>Selects the data type of the property.
       
   369 					</xsd:documentation></xsd:annotation>
       
   370 				</xsd:attribute>
       
   371 				<xsd:attribute name="default" type="xsd:string">
       
   372 					<xsd:annotation><xsd:documentation>A default value for the property. Must be a string convertible to the
       
   373 					particular property type.
       
   374 					</xsd:documentation></xsd:annotation>
       
   375 				</xsd:attribute>
       
   376 				<xsd:attribute name="minValue" type="xsd:string">
       
   377 					<xsd:annotation><xsd:documentation>Optional minimum value constraint. Applies only to integers and floats.
       
   378 					</xsd:documentation></xsd:annotation>
       
   379 				</xsd:attribute>
       
   380 				<xsd:attribute name="maxValue" type="xsd:string">
       
   381 					<xsd:annotation><xsd:documentation>Optional maximum value constraint. Applies only to integers and floats.
       
   382 					</xsd:documentation></xsd:annotation>
       
   383 				</xsd:attribute>
       
   384 				<xsd:attribute name="extendWithEnum" type="xsd:string">
       
   385 					<xsd:annotation><xsd:documentation>Optional extension of the enum with the enums provided by an enimPropertyDeclaration.
       
   386 					If the value of the property matches any in an extension enumProperty's 'value' attribute, the 'displayValue' will be shown
       
   387 					as the current value in the property sheet.  Additionally, the editor for the value (if not overridden with
       
   388 					a custom editorClass) will be a combo that allows typing in the literal value or selecting one of 
       
   389 					the extended enums.
       
   390 					<p>
       
   391 					The 'value' of each of the extending enums must match the type being extended, or else the attempt to set the value
       
   392 					to that enum will fail.  Note that this means that it is useless to extend booleans (since all extensions
       
   393 					must map to 'true' or 'false'). 							
       
   394 					</p>
       
   395 					</xsd:documentation></xsd:annotation>
       
   396 				</xsd:attribute>
       
   397 				
       
   398 			</xsd:extension>
       
   399 		</xsd:complexContent>
       
   400 	</xsd:complexType>
       
   401 	
       
   402 	<xsd:complexType name="compoundPropertyType">
       
   403 			<xsd:annotation><xsd:documentation>Concrete type used for structured properties.
       
   404 			</xsd:documentation></xsd:annotation>
       
   405 		<xsd:complexContent>
       
   406 			<xsd:extension base="abstractPropertyType">
       
   407 				<xsd:attribute name="type" type="xsd:string" use="required">
       
   408 					<xsd:annotation><xsd:documentation>The fully qualified name of the compound property type declaration. It can be
       
   409 					any type accessible from the current or any other component definitions. See compoundPropertyDeclaration for
       
   410 					further information.
       
   411 					</xsd:documentation></xsd:annotation>
       
   412 				</xsd:attribute>
       
   413 				<xsd:attribute name="default" type="xsd:string">
       
   414 					<xsd:annotation><xsd:documentation>An optional default value for the property. The compoundPropertyDeclaration must
       
   415 					have a converterType specified for this default value to be used.
       
   416 					</xsd:documentation></xsd:annotation>
       
   417 				</xsd:attribute>
       
   418 			</xsd:extension>
       
   419 		</xsd:complexContent>
       
   420 	</xsd:complexType>
       
   421 	
       
   422 	<xsd:complexType name="enumPropertyType">
       
   423 		<xsd:annotation><xsd:documentation>Concrete type used for enumerated value properties.
       
   424 		</xsd:documentation></xsd:annotation>
       
   425 	<xsd:complexContent>
       
   426 			<xsd:extension base="abstractPropertyType">
       
   427 				<xsd:attribute name="type" type="xsd:string" use="required">
       
   428 					<xsd:annotation><xsd:documentation>The fully qualifed name of the enumerated property type. See
       
   429 					enumPropertyDeclaration.
       
   430 					</xsd:documentation></xsd:annotation>
       
   431 				</xsd:attribute>
       
   432 				<xsd:attribute name="default" type="xsd:string">
       
   433 					<xsd:annotation><xsd:documentation>The default enumerated value, in case it needs to be different from 
       
   434 					the default declared in the enumeratedPropertyDeclaration.
       
   435 					</xsd:documentation></xsd:annotation>
       
   436 				</xsd:attribute>
       
   437 				<xsd:attribute name="extendWithEnum" type="xsd:string">
       
   438 					<xsd:annotation><xsd:documentation>Optional extension of the simple values with the enums provided by an enimPropertyDeclaration.
       
   439 					If the value of the property matches any in an enumProperty's 'value' attribute, the 'displayValue' will be shown
       
   440 					as the current value in the property sheet.  Additionally, the editor for the value (if not overridden with
       
   441 					a custom editorClass) will be a combo that allows typing in the literal value or selecting one of the
       
   442 					union of base and extended enums.
       
   443 					<p> 
       
   444 					The extending enum may provide 'value' elements which are different from the base enum (even integers, say),
       
   445 					if appropriate.  These values are exposed to script, source mapping, and source gen, so ensure that all
       
   446 					those clients are prepared to deal with the extra values.
       
   447 					</p>
       
   448 					</xsd:documentation></xsd:annotation>
       
   449 				</xsd:attribute>
       
   450 			</xsd:extension>
       
   451 		</xsd:complexContent>
       
   452 	</xsd:complexType>
       
   453 
       
   454 	<xsd:simpleType name="referenceScopeType">
       
   455 		<xsd:annotation><xsd:documentation>Enumeration used for scoping references within the model
       
   456 		</xsd:documentation></xsd:annotation>
       
   457 		<xsd:restriction base="xsd:string">
       
   458 			<xsd:enumeration value="model">
       
   459 				<xsd:annotation><xsd:documentation>Property can reference any valid instance in the model
       
   460 				</xsd:documentation></xsd:annotation>
       
   461 			</xsd:enumeration>
       
   462 			<xsd:enumeration value="children">
       
   463 				<xsd:annotation><xsd:documentation>Property can reference any children of the referencing instance
       
   464 				</xsd:documentation></xsd:annotation>True/False values.
       
   465 			</xsd:enumeration>
       
   466 			<xsd:enumeration value="siblings">
       
   467 				<xsd:annotation><xsd:documentation>Property can reference any siblings or children of the referencing instance
       
   468 				</xsd:documentation></xsd:annotation>True/False values.
       
   469 			</xsd:enumeration>
       
   470 		</xsd:restriction>
       
   471 	</xsd:simpleType>
       
   472 
       
   473 	<xsd:complexType name="componentReferencePropertyType">
       
   474 			<xsd:annotation><xsd:documentation>A concrete property type that maintains a reference to a component
       
   475 			instance in the same model. The reference is kept by name, and is maintained across renames of the target
       
   476 			instance. It is cleared automatically if the target instance is removed.
       
   477 			</xsd:documentation></xsd:annotation>
       
   478 		<xsd:complexContent>
       
   479 			<xsd:extension base="abstractPropertyType">
       
   480 				<xsd:attribute name="scope" type="referenceScopeType" use="required">
       
   481 					<xsd:annotation><xsd:documentation>Enumeration defining the scope for permissable values.
       
   482 					</xsd:documentation></xsd:annotation>
       
   483 				</xsd:attribute>
       
   484 				<xsd:attribute name="constraint" type="xsd:string">
       
   485 					<xsd:annotation><xsd:documentation>If specified, this must be the fully qualified name of a component type. Values
       
   486 					are then constrained to be instances of this type, and the property sheet user interface displays a list of eligible
       
   487 					instances.
       
   488 					</xsd:documentation></xsd:annotation>
       
   489 				</xsd:attribute>
       
   490 				<xsd:attribute name="creationKeys" type="xsd:string">
       
   491 					<xsd:annotation><xsd:documentation>An optional comma-delimited string containing a list of keys. When
       
   492 					present these keys are used to add "create new xxx" items to the dropdown menu for the property, in addition to
       
   493 					the "None" and existing instances populated into the menu. A component using this feature must also provide
       
   494 					an ISetValueCommandExtender implementation to handle the creation of these items.
       
   495 					Each key is used for two purposes:
       
   496 					- As a resource key for the dropdown menu item. The resource string should be the full command, e.g. "Create new Foo".
       
   497 					- When selected, the key is provided as a parameter to a com.nokia.sdt.component.NewComponentReferenceParameter instance. 
       
   498 					This instance is then available from the SetValueCommand passed to ISetValueCommandExtender.getExtendedCommand. 
       
   499 					The implementation should retrieve the key, and return a Command object that will create the appropriate new instance 
       
   500 					and set the target value to the new instance.
       
   501 					</xsd:documentation></xsd:annotation>
       
   502 				</xsd:attribute>
       
   503 				<xsd:attribute name="promoteReferenceProperties" type="xsd:boolean">
       
   504 					<xsd:annotation><xsd:documentation>If specified, the properties of the instance referenced by this property are promoted
       
   505 					into this property source, excluding the 'name' property and other properties that already exist in this component.  
       
   506 					This property and the referenced component instance's properties will be at the same level.
       
   507 					</xsd:documentation></xsd:annotation>
       
   508 				</xsd:attribute>
       
   509 			</xsd:extension>
       
   510 		</xsd:complexContent>
       
   511 	</xsd:complexType>
       
   512 	
       
   513 	<xsd:complexType name="arrayPropertyType">
       
   514 			<xsd:annotation><xsd:documentation>A concrete property type that is a dynamic array of property values. All values
       
   515 			are of the same type, which can be either a simple or compound property type.
       
   516 			</xsd:documentation></xsd:annotation>
       
   517 		<xsd:complexContent>
       
   518 			<xsd:extension base="abstractPropertyType">
       
   519 				<xsd:attribute name="type" type="xsd:string" use="required">
       
   520 					<xsd:annotation><xsd:documentation>The element type. It must be either a propertyDataType value, such as "integer" 
       
   521 					or "localizedString", or the fully qualified name of a compound property type.
       
   522 					</xsd:documentation></xsd:annotation>
       
   523 				</xsd:attribute>
       
   524 			</xsd:extension>
       
   525 		</xsd:complexContent>
       
   526 	</xsd:complexType>
       
   527 	
       
   528 	<xsd:element name="compoundPropertyDeclaration">
       
   529 		<xsd:annotation><xsd:documentation>
       
   530 			Declares a compound type that may be referenced from one or more
       
   531 			compound property declarations in this or other component documents. All compound property declarations are in a global 
       
   532 			namespace and must be declared as global elements.
       
   533 		</xsd:documentation></xsd:annotation>
       
   534 		<xsd:complexType>
       
   535 			<xsd:sequence>
       
   536 				<xsd:element maxOccurs="unbounded" minOccurs="0" ref="abstractProperty">
       
   537 					<xsd:annotation><xsd:documentation>Any property type may be used here, i.e. simple, compound, array, reference.
       
   538 					</xsd:documentation></xsd:annotation>
       
   539 				</xsd:element>
       
   540 
       
   541 				<xsd:element maxOccurs="1" minOccurs="0" ref="sourceTypeMapping">
       
   542 					<xsd:annotation><xsd:documentation>
       
   543 					This element provides source mapping for the type, for use by
       
   544 					map*FromType elements.  Added post 1.2.
       
   545 					</xsd:documentation></xsd:annotation>
       
   546 				</xsd:element>
       
   547 				
       
   548 			</xsd:sequence>
       
   549 			<xsd:attribute name="qualifiedName" type="xsd:string" use="required">
       
   550 				<xsd:annotation><xsd:documentation>A globally unique name for the property. By convention this is a dotted name, e.g.
       
   551 				com.example.MyPropertyType. This identifier is used in compound property declarations.
       
   552 				</xsd:documentation></xsd:annotation>
       
   553 			</xsd:attribute>
       
   554 			<xsd:attribute default="" name="editableType" type="xsd:string">
       
   555 				<xsd:annotation><xsd:documentation>The property type of the editable value. In addition to editing each
       
   556 				child value, the user may be able to edit the property as a whole. For example, an RGB color value may be
       
   557 				editable as a string. This value can be a propertyDataType value such as "integer" or "string", or can be
       
   558 				the name of an enumPropertyDeclaration.
       
   559 				</xsd:documentation></xsd:annotation>
       
   560 			</xsd:attribute>
       
   561 			<xsd:attribute name="converterClass" type="xsd:string">
       
   562 				<xsd:annotation><xsd:documentation>If specified, this must be the fully qualified name of an implementation of
       
   563 				com.nokia.sdt.component.property.ICompoundPropertyValueConverter. It is used to convert back and forth between
       
   564 				the editable value and the compound value. The editable value is a single value, display as the parent value in the
       
   565 				property sheet and used with cell editors.
       
   566 				</xsd:documentation></xsd:annotation>
       
   567 			</xsd:attribute>
       
   568 		<xsd:attribute name="editorClass" type="xsd:string">
       
   569 			<xsd:annotation><xsd:documentation>The fully qualified name of a class implementing 
       
   570 			com.nokia.sdt.component.property.IPropertyEditorFactory.
       
   571 			This allows Java code to provide a label provider, cell editor, and validator for the property.
       
   572 			Specify a factory class here provides a default for all compound properties of this type. The factory
       
   573 			may be overriden by a compound property declaration
       
   574 			</xsd:documentation></xsd:annotation>
       
   575 		</xsd:attribute>
       
   576 		</xsd:complexType>
       
   577 	</xsd:element>
       
   578 	
       
   579 	<xsd:element name="enumPropertyDeclaration">
       
   580 		<xsd:annotation><xsd:documentation>
       
   581 			Declares an enumerated type that may be referenced from one or more
       
   582 			enumerated property declarations in this or other component documents. All enum property declarations are in a global 
       
   583 			namespace and must be declared as global elements.
       
   584 		</xsd:documentation></xsd:annotation>
       
   585 		<xsd:complexType>
       
   586 			<xsd:sequence>
       
   587 				<xsd:element maxOccurs="unbounded" name="enumElement">
       
   588 						<xsd:annotation><xsd:documentation>This sequence is the list of values comprising the enumerated type. Each
       
   589 						value consists of an internal string value and a displayable string value.
       
   590 						</xsd:documentation></xsd:annotation>
       
   591 						<xsd:complexType>
       
   592 						<xsd:attribute name="value" use="required">
       
   593 							<xsd:annotation><xsd:documentation>The internal value, which is not localizable.
       
   594 							</xsd:documentation></xsd:annotation>
       
   595 						</xsd:attribute>
       
   596 						<xsd:attribute name="displayValue" use="optional">
       
   597 							<xsd:annotation><xsd:documentation>The displayable value, which should be localized.
       
   598 							</xsd:documentation></xsd:annotation>
       
   599 						</xsd:attribute>
       
   600 					</xsd:complexType>
       
   601 				</xsd:element>
       
   602 				<xsd:element maxOccurs="1" minOccurs="0" ref="sourceTypeMapping">
       
   603 					<xsd:annotation><xsd:documentation>
       
   604 					This element provides source mapping for the type, for use by
       
   605 					map*FromType elements.  Added post 1.2
       
   606 					</xsd:documentation></xsd:annotation>
       
   607 				</xsd:element>
       
   608 			</xsd:sequence>
       
   609 			<xsd:attribute name="qualifiedName" type="xsd:string" use="required">
       
   610 				<xsd:annotation><xsd:documentation>The globally unique name for this type. By convention this is a dotted name, e.g. com.example.MyEnumType.
       
   611 				This value is used in enumPropertyDeclaration.
       
   612 				</xsd:documentation></xsd:annotation>
       
   613 			</xsd:attribute>
       
   614 			<xsd:attribute name="defaultValue" type="xsd:string">
       
   615 				<xsd:annotation><xsd:documentation>A default internal value for the enumeration. It can be overriden in property declarations.
       
   616 				</xsd:documentation></xsd:annotation>
       
   617 			</xsd:attribute>
       
   618 		</xsd:complexType>
       
   619 	</xsd:element>
       
   620 	
       
   621 	<xsd:element name="propertyOverrides">
       
   622 		<xsd:annotation><xsd:documentation>A list of property overrides defined for this component. Components also
       
   623 		inherit the property overrides of their base components, with changes applied by the most derived component taking
       
   624 		precedence. 
       
   625 		
       
   626 		Property overrides allow certain characteristics of a property to be modified, such as changing a modifiable property
       
   627 		to read-only.
       
   628 		</xsd:documentation></xsd:annotation>
       
   629 		<xsd:complexType>
       
   630 			<xsd:sequence>
       
   631 				<xsd:element name="propertyOverride" maxOccurs="unbounded" minOccurs="0">
       
   632 					<xsd:complexType>
       
   633 						<xsd:attribute name="name" type="xsd:string" use="required">
       
   634 							<xsd:annotation><xsd:documentation>The internal name for the property being overriden. It is legal for
       
   635 							this to reference a name that does not exist. This allows overrides of extension properties, which are
       
   636 							only conditionaly defined.
       
   637 							</xsd:documentation></xsd:annotation>
       
   638 						</xsd:attribute>			
       
   639 						<xsd:attribute name="category" type="xsd:string">
       
   640 							<xsd:annotation><xsd:documentation>Override of the property category. See the description
       
   641 							in &lt;abstractPropertyType&gt;
       
   642 							</xsd:documentation></xsd:annotation>
       
   643 						</xsd:attribute>			
       
   644 						<xsd:attribute name="readOnly" type="xsd:boolean">
       
   645 							<xsd:annotation><xsd:documentation>Override of the readOnly state. See the description
       
   646 							in &lt;abstractPropertyType&gt;
       
   647 							</xsd:documentation></xsd:annotation>
       
   648 						</xsd:attribute>			
       
   649 						<xsd:attribute name="default" type="xsd:string">
       
   650 							<xsd:annotation><xsd:documentation>Override of the default value. Default values can only
       
   651 							be overriden on properties supporting default values, i.e simple properties, enums, and compound 
       
   652 							properties. See the description in &lt;abstractPropertyType&gt; for more information.
       
   653 							</xsd:documentation></xsd:annotation>
       
   654 						</xsd:attribute>			
       
   655 					</xsd:complexType>
       
   656 				</xsd:element>
       
   657 			</xsd:sequence>
       
   658 		</xsd:complexType>
       
   659 	</xsd:element>
       
   660 
       
   661 	<xsd:element name="events">
       
   662 			<xsd:annotation><xsd:documentation>The list of events defined for this component. Components also inherit the events of
       
   663 			their base components. Events are named notifications or hooks to which code can be attached. The data here is
       
   664 			used to drive the user interface. The details of source code generation are part of the source code generation templates.
       
   665 			
       
   666 			The set of available events, and default event, may be overriden via code or script. See the 
       
   667 			com.nokia.sdt.datamodel.adapter.IComponentEventInfo interface for more information.
       
   668 			</xsd:documentation></xsd:annotation>
       
   669 			<xsd:complexType>
       
   670 			<xsd:sequence>
       
   671 				<xsd:element maxOccurs="unbounded" minOccurs="0" ref="event"/>
       
   672 			</xsd:sequence>
       
   673 			<xsd:attribute name="defaultEventName" type="xsd:string">
       
   674 				<xsd:annotation><xsd:documentation>If defined, the default event will be identified in a component instance's context
       
   675 				menu. In the case of inheritance the most derived definition of the default event is used.
       
   676 				</xsd:documentation></xsd:annotation>
       
   677 			</xsd:attribute>
       
   678 		</xsd:complexType>
       
   679 	</xsd:element>
       
   680 	
       
   681 	<xsd:element name="event">
       
   682 		<xsd:annotation><xsd:documentation>The definition of a single event.
       
   683 		</xsd:documentation></xsd:annotation>
       
   684 		<xsd:complexType>
       
   685 			<xsd:attribute name="name" type="xsd:string" use="required">
       
   686 				<xsd:annotation><xsd:documentation>The internal name for the event. This does not need to be a dotted name, but it must
       
   687 				be unique within the component and its base components.
       
   688 				</xsd:documentation></xsd:annotation>
       
   689 			</xsd:attribute>
       
   690 			<xsd:attribute name="displayName" type="xsd:string">
       
   691 				<xsd:annotation><xsd:documentation>This displayable name for the event. This value should be localized.
       
   692 				</xsd:documentation></xsd:annotation>
       
   693 			</xsd:attribute>
       
   694 			<xsd:attribute name="category" type="xsd:string">
       
   695 				<xsd:annotation><xsd:documentation>Categories are used for grouping events in the Events view. As with property categories,
       
   696 				this can be a key to a category localized by the component provider, or it can be a pre-localized or literal string.
       
   697 				</xsd:documentation></xsd:annotation>
       
   698 			</xsd:attribute>
       
   699 			<xsd:attribute name="descriptionKey" type="xsd:string">
       
   700 				<xsd:annotation><xsd:documentation>A key for descriptive information about the event.
       
   701 				</xsd:documentation></xsd:annotation>
       
   702 			</xsd:attribute>
       
   703 			<xsd:attribute name="helpKey" type="xsd:string">
       
   704 				<xsd:annotation><xsd:documentation>A help topic for online help for the event.
       
   705 				</xsd:documentation></xsd:annotation>
       
   706 			</xsd:attribute>
       
   707 			<xsd:attribute name="handlerNameTemplate" type="xsd:string" use="required">
       
   708 				<xsd:annotation><xsd:documentation>A template which is expanded to the proposed default name for the
       
   709 				event handler function. An example of such a template is "Handle{title(name)}StateChangedL".
       
   710 				The {} marks template variables. A variable may contain a simple property value, but generally only the 'name' property
       
   711 				should be used. The pseudo-functions "lower", "upper", and "title" may be used to transform the property value.
       
   712 				</xsd:documentation></xsd:annotation>
       
   713 			</xsd:attribute>
       
   714 			<xsd:attribute name="group" type="xsd:string">
       
   715 				<xsd:annotation><xsd:documentation>This is a grouping, separate from categories, used in event filtering. Events
       
   716 				may only make sense for specific containers. The interface com.nokia.sdt.datamodel.adapter.IComponentEventInfo is
       
   717 				used to filter applicable events from the complete set of declared events. When deriving from an existing base
       
   718 				component it is not generally necessary to implement this interface. Instead, just use the groups defined by
       
   719 				the base component in your own events. For example to make events visible in a CCoeControl container, The CCoeControlBase
       
   720 				component uses the filter group "Control". 
       
   721 				</xsd:documentation></xsd:annotation>
       
   722 			</xsd:attribute>
       
   723 		</xsd:complexType>
       
   724 	</xsd:element>
       
   725 
       
   726 	<xsd:element name="implementations">
       
   727 		<xsd:annotation>
       
   728 			<xsd:documentation>Implementation elements declare code or script implementations of interfaces by name.
       
   729 			</xsd:documentation>
       
   730 		</xsd:annotation>
       
   731 		<xsd:complexType>
       
   732 			<xsd:sequence>
       
   733 				<xsd:element maxOccurs="unbounded" ref="implementation"/>
       
   734 			</xsd:sequence>
       
   735 		</xsd:complexType>
       
   736 	</xsd:element>
       
   737 	<xsd:element name="implementation">
       
   738 		<xsd:complexType>
       
   739 			<xsd:sequence>
       
   740 				<xsd:sequence>
       
   741 					<xsd:element maxOccurs="unbounded" name="interface">
       
   742 						<xsd:complexType>
       
   743 							<xsd:attribute name="id" type="xsd:string" use="required"/>
       
   744 						</xsd:complexType>
       
   745 					</xsd:element>
       
   746 				</xsd:sequence>
       
   747 				<xsd:choice>
       
   748 					<xsd:element ref="code"/>
       
   749 					<xsd:element ref="script"/>
       
   750 				</xsd:choice>
       
   751 			</xsd:sequence>
       
   752 		</xsd:complexType>
       
   753 	</xsd:element>
       
   754 	<xsd:element name="code">
       
   755 		<xsd:annotation><xsd:documentation>
       
   756 		Define a reference to an interface implemented in Java.
       
   757 		</xsd:documentation></xsd:annotation>
       
   758 		<xsd:complexType>
       
   759 			<xsd:attribute name="plugin" type="xsd:string" use="optional">
       
   760 				<xsd:annotation><xsd:documentation>
       
   761 				Plugin id
       
   762 				</xsd:documentation></xsd:annotation>
       
   763 			</xsd:attribute>
       
   764 			
       
   765 			<xsd:attribute name="class" type="xsd:string" use="required">
       
   766 				<xsd:annotation><xsd:documentation>
       
   767 				Class in plugin.
       
   768 				</xsd:documentation></xsd:annotation>
       
   769 			</xsd:attribute>
       
   770 		</xsd:complexType>
       
   771 	</xsd:element>
       
   772 	<xsd:element name="script">
       
   773 		<xsd:annotation><xsd:documentation>
       
   774 		Define a reference to an interface implemented in Javascript.
       
   775 		</xsd:documentation></xsd:annotation>
       
   776 		<xsd:complexType>
       
   777 			<xsd:attribute name="file" type="xsd:string" use="required"/>
       
   778 			<xsd:attribute name="prototype" type="xsd:string" use="required"/>
       
   779 		</xsd:complexType>
       
   780 	</xsd:element>
       
   781 	<xsd:element name="sourceGen">
       
   782 		<xsd:annotation><xsd:documentation>
       
   783 		This section controls C/C++ source generation (with the potential to support 
       
   784 		other one-way languages).  In a sourceGen element, all the elements in linear 
       
   785 		order comprise the component's contributions.  
       
   786 		
       
   787 		Conditional sourcegen is implemented by using the "form" attribute on 
       
   788 		templates or templateGroups, or explicitly checking the regex "form" in inline code.  
       
   789 		
       
   790 		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.
       
   791 		</xsd:documentation></xsd:annotation>
       
   792 		<xsd:complexType>
       
   793 			<xsd:sequence>
       
   794 				<xsd:choice maxOccurs="unbounded" minOccurs="0">
       
   795 					<xsd:element ref="defineLocation"/>
       
   796 					<xsd:element ref="template"/>
       
   797 					<xsd:element ref="templateGroup"/>
       
   798 					<xsd:element ref="useTemplate"/>
       
   799 					<xsd:element ref="useTemplateGroup"/>
       
   800 					<xsd:element ref="inline"/>
       
   801 					<xsd:element ref="script"/>
       
   802 					<xsd:element ref="defineMacro"/>
       
   803 					<xsd:element ref="expandMacro"/>
       
   804 				</xsd:choice>
       
   805 			</xsd:sequence>
       
   806 			<!-- IGNORED -->
       
   807 			<xsd:attribute name="forms" type="xsd:string" use="optional"/>
       
   808 			<xsd:attribute default="false" name="debug" type="xsd:boolean" use="optional"/>
       
   809 		</xsd:complexType>
       
   810 	</xsd:element>
       
   811 
       
   812 	<xsd:simpleType name="listOfStrings">
       
   813 		<xsd:list itemType="xsd:string"/>
       
   814 	</xsd:simpleType>
       
   815 
       
   816 	<xsd:attributeGroup name="ConditionalSourceGenAttributes">
       
   817 		<xsd:annotation><xsd:documentation>
       
   818 		Base for sourcegen elements which may be conditionally skipped.
       
   819 		Such skipping applies to the save-time behavior and not
       
   820 		the load-time or validation-time behavior.
       
   821 		</xsd:documentation></xsd:annotation>
       
   822 		<xsd:attribute name="forms" type="listOfStrings" use="optional">
       
   823 			<xsd:annotation><xsd:documentation>
       
   824 			Added post 1.1 to inline.
       
   825 
       
   826 			A list of tokens used to select a particular kind of source for a parent.
       
   827 			The namespace is determined implicitly by what a parent requests.
       
   828 			
       
   829 			For instance, a parent may have special sourcegen, and pass
       
   830 			the form "SpecialCase" to its children.  Elements specifying
       
   831 			form="SpecialCase" will be selected.  Other parents will not see
       
   832 			such elements if they do not specify that form.
       
   833 			
       
   834 			If the form does not match, the element is not invoked.
       
   835 			</xsd:documentation></xsd:annotation>	
       
   836 		</xsd:attribute>
       
   837 		<xsd:attribute name="ifEvents" type="listOfStrings" use="optional">
       
   838 			<xsd:annotation><xsd:documentation>
       
   839 			Added post 1.1 to inline.
       
   840 			If defined, a list of events, any of which must be bound for the
       
   841 			element to be invoked.
       
   842 			</xsd:documentation></xsd:annotation>
       
   843 		</xsd:attribute>
       
   844 		<xsd:attribute name="ifExpr" type="xsd:string" use="optional">
       
   845 			<xsd:annotation><xsd:documentation>
       
   846 			Added post 1.1.
       
   847 			If defined, a Javascript expression which must evaluate to
       
   848 			true (or non-zero) for the element to be invoked.
       
   849 			</xsd:documentation></xsd:annotation>
       
   850 		</xsd:attribute>
       
   851 	</xsd:attributeGroup>
       
   852 
       
   853 	<xsd:complexType name="ConditionalSourceGen" abstract="true">
       
   854 			<xsd:attributeGroup ref="ConditionalSourceGenAttributes"/>
       
   855 	</xsd:complexType>
       
   856 	
       
   857 	<!-- I'm really annoyed schema doesn't support multiple inheritance.
       
   858 	 ConditionalSourceGenString should be an extension 
       
   859 	 of ConditionalSourceGen too. -->
       
   860 	<xsd:complexType name="ConditionalSourceGenString" abstract="true">
       
   861 		<xsd:annotation><xsd:documentation>
       
   862 		Base for sourcegen elements which may be conditionally skipped
       
   863 		(and which contain text).
       
   864 		Such skipping applies to the save-time behavior and not
       
   865 		the load-time or validation-time behavior.
       
   866 		</xsd:documentation></xsd:annotation>
       
   867 		<xsd:simpleContent>
       
   868 			<xsd:extension base="xsd:string">
       
   869 				<xsd:attributeGroup ref="ConditionalSourceGenAttributes"/>
       
   870 			</xsd:extension>
       
   871 		</xsd:simpleContent>
       
   872 	</xsd:complexType>
       
   873 
       
   874 	<xsd:element name="inline">
       
   875 		<xsd:annotation><xsd:documentation>
       
   876 		Provide Javascript in-line with templates and other sourceGen elements.
       
   877 		Be sure to supply a "forms" attribute, otherwise the code may execute multiple times
       
   878 		during the source generation contribution-gathering phase.
       
   879 		</xsd:documentation></xsd:annotation>
       
   880 		<xsd:complexType>
       
   881 			<xsd:simpleContent>
       
   882 				<xsd:extension base="ConditionalSourceGenString">
       
   883 					<xsd:attribute default="function" name="scope" type="xsd:string" use="optional">
       
   884 						<xsd:annotation><xsd:documentation>
       
   885 						Tells where the inline code appears.  By default, it appears
       
   886 						in the primary function into which templates are generated, thus is
       
   887 						executed in line with them.  
       
   888 						
       
   889 						Specifying "file" or "prototype" means the content is intended to modify the 
       
   890 						Javascript prototype, thus it is placed at the top level of the file.  
       
   891 						${jsObject}.prototype may be used to access the prototype.
       
   892 						
       
   893 						Note: include() and includeFrom() calls should be placed in the prototype scope,
       
   894 						or their contents will not be visible to derived components.
       
   895 
       
   896 						Added post 1.1: "file" is a synonym for "prototype".
       
   897 						</xsd:documentation></xsd:annotation>
       
   898 					</xsd:attribute>
       
   899 					<xsd:attribute name="id" type="xsd:string" use="optional">
       
   900 						<xsd:annotation><xsd:documentation>
       
   901 						Added post 1.1: the identifier for the inline section,
       
   902 						which makes it inheritable.  Inline sections are inherited as templates,
       
   903 						accessible with "useTemplate" of the same id.
       
   904 						If unspecified, a default id is assigned.  Use a blank id to avoid inheriting.
       
   905 						</xsd:documentation></xsd:annotation>
       
   906 					</xsd:attribute>
       
   907 				</xsd:extension>
       
   908 			</xsd:simpleContent>
       
   909 		</xsd:complexType>
       
   910 	</xsd:element>
       
   911 
       
   912 	<xsd:element name="defineLocation">
       
   913 		<xsd:annotation><xsd:documentation>
       
   914 		This element defines a location in source, such as a function in the main 
       
   915 		file or a region of text in a class declaration.  
       
   916 		This is a slight misnomer as this element does not by its presence realize
       
   917 		the location.  Only when a contribution references
       
   918 		location id (or post 1.1: when realize="true" is used)
       
   919 		will the location be added to source.
       
   920 		</xsd:documentation></xsd:annotation>
       
   921 		<xsd:complexType>
       
   922 			<xsd:sequence>
       
   923 				<xsd:choice maxOccurs="unbounded" minOccurs="0">
       
   924 					<xsd:element ref="template"/>
       
   925 					<xsd:element ref="inline"/>
       
   926 					<xsd:element ref="script"/>
       
   927 					<xsd:element ref="expandMacro"/>
       
   928 				</xsd:choice>
       
   929 			</xsd:sequence>
       
   930 			<xsd:attribute name="baseLocation" type="xsd:string" use="optional">
       
   931 				<xsd:annotation><xsd:documentation>
       
   932 				If defined, the location id this location lives inside.  (E.g. a class inside a file,
       
   933 				an enum declaration inside a class, etc.)
       
   934 				</xsd:documentation></xsd:annotation>
       
   935 			</xsd:attribute>
       
   936 			<xsd:attribute name="domain" type="xsd:string" use="optional">
       
   937 				<xsd:annotation><xsd:documentation>
       
   938 				The source domain which controls how locations are interpreted and instantiated.  
       
   939 				Only "cpp" is supported currently.
       
   940 				</xsd:documentation></xsd:annotation>
       
   941 			</xsd:attribute>
       
   942 			<xsd:attribute name="id" type="xsd:string" use="required">
       
   943 				<xsd:annotation><xsd:documentation>
       
   944 				The location identifier.  This must be unique in a component.  A derived component
       
   945 				may redefine a location.
       
   946 				</xsd:documentation></xsd:annotation>
       
   947 			</xsd:attribute>
       
   948 			<xsd:attribute name="dir" type="xsd:string" use="optional">
       
   949 				<xsd:annotation><xsd:documentation>
       
   950 				For a top-level location, where baseLocation is null, this is a
       
   951 				template-expanded reference to the project-relative directory to
       
   952 				use.  Predefined variables ${src}, ${inc}, ${resource}, ${build}
       
   953 				are provided.
       
   954 				</xsd:documentation></xsd:annotation>
       
   955 			</xsd:attribute>
       
   956 			<xsd:attribute name="file" type="xsd:string" use="optional">
       
   957 				<xsd:annotation><xsd:documentation>
       
   958 				For a top-level location, where baseLocation is null, this is a
       
   959 				template-expanded filename relative to the directory specified by "dir".
       
   960 				</xsd:documentation></xsd:annotation>
       
   961 			</xsd:attribute>
       
   962 			<xsd:attribute name="location" type="xsd:string" use="required">
       
   963 				<xsd:annotation><xsd:documentation>
       
   964 				This describes the location relative to its base (use "" for a
       
   965 				top-level file location).  
       
   966 				
       
   967 A location segment in the cpp domain is a string
       
   968 representing a node in a C/C++ parse tree.  Each takes the syntax “&lt;name&gt;
       
   969 ‘(‘ &lt;arguments…&gt; ‘)’�?.  Certain nodes may only appear within certain
       
   970 others.  This list defines top-level nodes:
       
   971 
       
   972 class(&lt;name&gt;): 
       
   973 reference the class declaration for the class ‘name’, which may include namespaces (e.g.
       
   974 “class(MyClass)�? or “class(${className})�?)
       
   975 
       
   976 function(&lt;name&gt;(&lt;arguments…)):
       
   977 reference a function with the given signature.  ‘name’ may include namespaces
       
   978 or represent a destructor.  ‘arguments’ is a comma-separated list of types. 
       
   979 This list of arguments is currently not parsed and only the number of
       
   980 arguments matters.  The arguments list may end in ellipsis (“…�?) to indicate
       
   981 that any zero or more arguments are matched.  Again, the &lt;template&gt;
       
   982 inside a &lt;defineLocation&gt; really defines the function.  (E.g.
       
   983 “function(main(int,char**))�? or “function(${className}::method(void*)�?.)
       
   984 
       
   985 region(&lt;name&gt;): 
       
   986 a region defines a commented block of text with no other syntactical clues.  The
       
   987 block comments and the name are used to identify the block.  Thus, names should
       
   988 be unique across a component.  (E.g. “region(Generated Includes)�?.)
       
   989 
       
   990 enum(&lt;name&gt;): 
       
   991 a enum declaration with the given name.  Name must be non-empty (locations are
       
   992 used to look up source, so anonymous enums cannot be unambiguously
       
   993 identified).  (E.g. “enum(T${className}Ids)�?.)
       
   994 
       
   995 namespace(&lt;name&gt;):
       
   996 a namespace declaration with the given name, which may contain colons.  (E.g.
       
   997 “namespace(std::tr1)�?)
       
   998 
       
   999 to-file(): 
       
  1000 resolve to the current file of a location, i.e. get back to the root location. 
       
  1001 
       
  1002 Inside a class(), namespace() is not allowed, and this
       
  1003 additional segment is allowed:
       
  1004 
       
  1005 bases(): 
       
  1006 references the base-class-list within a class declaration.  If the class’ defining text
       
  1007 already includes a base, then the defining text for the bases() location may be
       
  1008 omitted.  If a class’ defining text does not include a base, the bases()
       
  1009 location must include the leading colon in its defining text.  Otherwise,
       
  1010 contributions are individual class references with leading commas.
       
  1011 
       
  1012 In a function(), only class(), region(), enum(), and to-file() are allowed.
       
  1013 
       
  1014 In an enum(), bases() or region(), only region() and to-file() are allowed.
       
  1015 
       
  1016 				
       
  1017 				</xsd:documentation></xsd:annotation>
       
  1018 			</xsd:attribute>
       
  1019 			<xsd:attribute default="true" name="owned" type="xsd:string" use="optional">
       
  1020 				<xsd:annotation><xsd:documentation>
       
  1021 				Note: a string for macro use only; must resolve to "true" or "false".
       
  1022 				If true, the location is marked generated in source and will be
       
  1023 				regenerated from scratch on every save.  Otherwise, the location
       
  1024 				is generated only when missing.
       
  1025 				</xsd:documentation></xsd:annotation>
       
  1026 			</xsd:attribute>
       
  1027 			<xsd:attribute default="default" name="filter" type="xsd:string" use="optional">
       
  1028 				<xsd:annotation><xsd:documentation>
       
  1029 				Defines a filter on contributions added to the location.
       
  1030 				Available filters:
       
  1031 				* unique-includes (can be applied anywhere, but scans files)
       
  1032 				* unique-prototypes (can be applied in "class()" or children, but scans the class)
       
  1033 				* unique-bases (can be applied to "bases()" or children, but scans the base class list)
       
  1034 				</xsd:documentation></xsd:annotation>
       
  1035 			</xsd:attribute>
       
  1036 			<xsd:attribute name="isEventHandler" type="xsd:string" use="optional">
       
  1037 				<xsd:annotation><xsd:documentation>
       
  1038 				Note: a string for macro use only; must resolve to "true" or "false".
       
  1039 				When "ifEvents" is non-empty, this flag tells the designer which particular
       
  1040 				function is the user-editable event handler.  So this usually is applied
       
  1041 				to a function() location.
       
  1042 				</xsd:documentation></xsd:annotation>
       
  1043 			</xsd:attribute>
       
  1044 			<xsd:attribute name="realize" type="xsd:string" use="optional" default="false">
       
  1045 				<xsd:annotation><xsd:documentation>
       
  1046 				Added post 1.1.  
       
  1047 				Note: a string for macro use only; must resolve to "true" or "false".
       
  1048 				If true, a template for this location is automatically added when this location is defined.
       
  1049 				Otherwise, the location is a placeholder and is not "realized" in actual source unless a template references it.
       
  1050 				</xsd:documentation></xsd:annotation>
       
  1051 			</xsd:attribute>
       
  1052 			<xsd:attribute name="ifEvents" type="listOfStrings" use="optional">
       
  1053 				<xsd:annotation><xsd:documentation>
       
  1054 				If defined, a list of events, any of which must be bound for the
       
  1055 				location to be declared.  Otherwise, its id is not available and 
       
  1056 				the location is undefined.
       
  1057 				</xsd:documentation></xsd:annotation>
       
  1058 			</xsd:attribute>
       
  1059 		</xsd:complexType>
       
  1060 		
       
  1061 	</xsd:element>
       
  1062 
       
  1063 
       
  1064 	<xsd:element name="template">
       
  1065 		<xsd:annotation><xsd:documentation>
       
  1066 		This defines a contribution.  The text element is template-expanded 
       
  1067 		with ${ ... } expression escapes and may contain Javascript in &lt;% ... %&gt; sections.
       
  1068 		</xsd:documentation></xsd:annotation>	
       
  1069 		<xsd:complexType>
       
  1070 			<xsd:complexContent>
       
  1071 				<xsd:extension base="ConditionalSourceGenString">
       
  1072 					<xsd:attribute name="location" type="xsd:string" use="optional">
       
  1073 						<xsd:annotation><xsd:documentation>
       
  1074 						The location id the contribution goes to.  May not be specified when "phase" is set.
       
  1075 						</xsd:documentation></xsd:annotation>	
       
  1076 					</xsd:attribute>
       
  1077 					
       
  1078 					<xsd:attribute name="phase" type="xsd:string" use="optional">
       
  1079 						<xsd:annotation><xsd:documentation>
       
  1080 						The phase the contribution goes to.  A parent component must realize the
       
  1081 						phase into an actual location id.
       
  1082 						</xsd:documentation></xsd:annotation>	
       
  1083 					</xsd:attribute>
       
  1084 					<xsd:attribute name="mode" type="xsd:string" use="optional">
       
  1085 						<xsd:annotation><xsd:documentation>
       
  1086 						Unused currently.
       
  1087 						</xsd:documentation></xsd:annotation>	
       
  1088 					</xsd:attribute>
       
  1089 					<!-- form and forms are the same, semantically -->
       
  1090 					
       
  1091 					<!-- form is obsolescent, use forms instead -->
       
  1092 					<xsd:attribute name="form" type="xsd:string" use="optional">
       
  1093 						<xsd:annotation><xsd:documentation>
       
  1094 						A token used to select a particular kind of source for a parent.
       
  1095 						The namespace is determined implicitly by what a parent requests.
       
  1096 						
       
  1097 						For instance, a parent may have special sourcegen, and pass
       
  1098 						the form "SpecialCase" to its children.  Templates specifying
       
  1099 						form="SpecialCase" will be selected.  Other parents will not see
       
  1100 						such templates if they do not specify that form.
       
  1101 						
       
  1102 						If the form does not match, the template is not instantiated.
       
  1103 						</xsd:documentation></xsd:annotation>	
       
  1104 					</xsd:attribute>
       
  1105 					
       
  1106 					<xsd:attribute name="id" type="xsd:string" use="optional">
       
  1107 						<xsd:annotation><xsd:documentation>
       
  1108 						Unique id for the template within a component or
       
  1109 						within a templateGroup.  Ids may be shared for different
       
  1110 						forms.  Derived components may redefine ids or inherit
       
  1111 						templates by id.
       
  1112 						Added post 1.1: if the id is unspecified in a templateGroup, 
       
  1113 						a default id is assigned.  To avoid inheriting, supply an empty id.
       
  1114 						</xsd:documentation></xsd:annotation>	
       
  1115 					</xsd:attribute>
       
  1116 				</xsd:extension>
       
  1117 			</xsd:complexContent>
       
  1118 		</xsd:complexType>
       
  1119 	</xsd:element>
       
  1120 	<xsd:element name="templateGroup">
       
  1121 		<xsd:annotation><xsd:documentation>
       
  1122 		A logical grouping of templates and locations.  Attributes
       
  1123 		present on the group are automatically applied to children.
       
  1124 		Groups may not be nested.
       
  1125 		</xsd:documentation></xsd:annotation>	
       
  1126 		<xsd:complexType>
       
  1127 			<xsd:complexContent>
       
  1128 				<xsd:extension base="ConditionalSourceGen">
       
  1129 					<xsd:sequence>
       
  1130 						<xsd:choice maxOccurs="unbounded" minOccurs="0">
       
  1131 							<xsd:element ref="defineLocation"/>
       
  1132 							<xsd:element ref="template"/>
       
  1133 							<!-- added post 1.1 -->
       
  1134 							<xsd:element ref="inline"/>
       
  1135 							<!-- added post 1.1 -->
       
  1136 							<xsd:element ref="useTemplate"/>
       
  1137 							<!-- added post 1.1 -->
       
  1138 							<xsd:element ref="useTemplateGroup"/>
       
  1139 							<!-- added post 1.1 -->
       
  1140 							<xsd:element ref="expandMacro"/>
       
  1141 						</xsd:choice>
       
  1142 					</xsd:sequence>
       
  1143 					<xsd:attribute name="location" type="xsd:string" use="optional"/>
       
  1144 					<xsd:attribute name="mode" type="xsd:string" use="optional"/>
       
  1145 					<xsd:attribute name="phase" type="xsd:string" use="optional"/>
       
  1146 					<xsd:attribute name="id" type="xsd:string" use="optional"/>
       
  1147 					<!-- form is obsolescent -->
       
  1148 					<xsd:attribute name="form" type="xsd:string" use="optional"/>
       
  1149 				</xsd:extension>	
       
  1150 			</xsd:complexContent>		
       
  1151 		</xsd:complexType>
       
  1152 	</xsd:element>
       
  1153 	<xsd:element name="useTemplate">
       
  1154 		<xsd:annotation><xsd:documentation>
       
  1155 		In a derived component, selects a template from the base by id.
       
  1156 		</xsd:documentation></xsd:annotation>	
       
  1157 	
       
  1158 		<xsd:complexType>
       
  1159 			<xsd:attribute name="ids" type="xsd:string" use="required"/>
       
  1160 		</xsd:complexType>
       
  1161 	</xsd:element>
       
  1162 	<xsd:element name="useTemplateGroup">
       
  1163 		<xsd:annotation><xsd:documentation>
       
  1164 		In a derived component, selects a template group from the base by id.
       
  1165 		If no subelements are specified, all the named templates (those with ids)
       
  1166 		are inherited.  No templates without ids are inherited.
       
  1167 		
       
  1168 		If subelements are specified, these describe the specific templates
       
  1169 		to inherit from the group.  The id "*" may be used to bring in all
       
  1170 		named templates.
       
  1171 		</xsd:documentation></xsd:annotation>	
       
  1172 		<xsd:complexType>
       
  1173 			<xsd:sequence>
       
  1174 				<xsd:element maxOccurs="unbounded" minOccurs="0" ref="useTemplate"/>
       
  1175 			</xsd:sequence>
       
  1176 			<xsd:attribute name="ids" type="xsd:string" use="required"/>
       
  1177 		</xsd:complexType>
       
  1178 	</xsd:element>
       
  1179 
       
  1180 	<xsd:element name="defineMacro">
       
  1181 		<xsd:annotation><xsd:documentation>
       
  1182 		Added post 1.1.  
       
  1183 		This element defines a macro consisting of a set of templates 
       
  1184 		and inlines which may be variable-substituted.
       
  1185 			
       
  1186 		If a given defineMacro imports multiple arguments
       
  1187 		of the same name, then they must be explicitly redefined,
       
  1188 		to resolve any ambiguities about the default value.  
       
  1189 		</xsd:documentation></xsd:annotation>
       
  1190 		<xsd:complexType>
       
  1191 			<xsd:sequence>
       
  1192 				<xsd:element ref="importArguments" maxOccurs="unbounded" minOccurs="0"/>
       
  1193 				<xsd:element ref="macroArgument" maxOccurs="unbounded" minOccurs="0"/>
       
  1194 				<xsd:choice maxOccurs="unbounded" minOccurs="0">
       
  1195 					<xsd:element ref="template"/>
       
  1196 					<xsd:element ref="inline"/>
       
  1197 					<xsd:element ref="defineLocation"/>
       
  1198 					<xsd:element ref="expandMacro"/>
       
  1199 				</xsd:choice>
       
  1200 			</xsd:sequence>
       
  1201 			
       
  1202 			<xsd:attribute name="id" type="xsd:string" use="optional">
       
  1203 				<xsd:annotation><xsd:documentation>
       
  1204 				Unique id for the macro within a component.  
       
  1205 				Ids may be shared for different
       
  1206 				forms.  Derived components inherit macros automatically
       
  1207 				but may redefine a macro with the same id.
       
  1208 				</xsd:documentation></xsd:annotation>	
       
  1209 			</xsd:attribute>
       
  1210 			
       
  1211 			<xsd:attribute name="help" type="xsd:string" use="optional">
       
  1212 				<xsd:annotation><xsd:documentation>
       
  1213 				Help/usage text for a documentation generating tool.
       
  1214 				</xsd:documentation></xsd:annotation>
       
  1215 			</xsd:attribute>
       
  1216 
       
  1217 		</xsd:complexType>
       
  1218 	</xsd:element>
       
  1219 	
       
  1220 	<xsd:element name="macroArgument">
       
  1221 		<xsd:annotation><xsd:documentation>
       
  1222 		Added post 1.1.
       
  1223 		Defines an argument for use with the macro.
       
  1224 		The default value may be specified in the 'default' attribute or in the text of the element.
       
  1225 		The text supercedes the attribute.  
       
  1226 		</xsd:documentation></xsd:annotation>
       
  1227 		<xsd:complexType>
       
  1228 			<xsd:simpleContent>
       
  1229 				<xsd:extension base="xsd:string">
       
  1230 					<xsd:attribute name="name" type="xsd:string" use="required">
       
  1231 						<xsd:annotation><xsd:documentation>
       
  1232 						The name of the argument.  This must be a legal Javascript identifier
       
  1233 						and unique within the macro.
       
  1234 						</xsd:documentation></xsd:annotation>	
       
  1235 					</xsd:attribute>
       
  1236 					<xsd:attribute name="optional" type="xsd:boolean" use="optional">
       
  1237 						<xsd:annotation><xsd:documentation>
       
  1238 						Tells whether the argument may be omitted from an expandMacro use.
       
  1239 						If true, and no default is provided, the variable's value is null.
       
  1240 						</xsd:documentation></xsd:annotation>	
       
  1241 					</xsd:attribute>
       
  1242 					<xsd:attribute name="default" type="xsd:string" use="optional">
       
  1243 						<xsd:annotation><xsd:documentation>
       
  1244 						The default value of the argument if unspecified.  Alternately, the
       
  1245 						text of this element may be supplied as the default, if formatting
       
  1246 						or newlines are used.
       
  1247 						</xsd:documentation></xsd:annotation>	
       
  1248 					</xsd:attribute>
       
  1249 					<xsd:attribute name="help" type="xsd:string" use="optional">
       
  1250 						<xsd:annotation><xsd:documentation>
       
  1251 						Help/usage text for a documentation generating tool.
       
  1252 						</xsd:documentation></xsd:annotation>
       
  1253 					</xsd:attribute>
       
  1254 				</xsd:extension>
       
  1255 			</xsd:simpleContent>
       
  1256 		</xsd:complexType>
       
  1257 	</xsd:element>
       
  1258 	
       
  1259 	<xsd:element name="importArguments">
       
  1260 		<xsd:annotation><xsd:documentation>
       
  1261 		Added post 1.1.  
       
  1262 		This element specifies that a list of arguments (name, type, defaults,
       
  1263 		optional flags) will be imported from another macro. 
       
  1264 		If this element is omitted, then all the arguments from the macro
       
  1265 		are imported.  
       
  1266 		</xsd:documentation></xsd:annotation>
       
  1267 		<xsd:complexType>
       
  1268 			<xsd:attribute name="macroName" type="xsd:string" use="required">
       
  1269 				<xsd:annotation><xsd:documentation>
       
  1270 				The macro whose arguments to import.
       
  1271 				</xsd:documentation></xsd:annotation>	
       
  1272 			</xsd:attribute>
       
  1273 			<xsd:attribute name="arguments" type="listOfStrings" use="required">
       
  1274 				<xsd:annotation><xsd:documentation>
       
  1275 				The list of argument names to import.  This is mutually exclusive with 'exceptArguments'.
       
  1276 				</xsd:documentation></xsd:annotation>	
       
  1277 			</xsd:attribute>
       
  1278 			<xsd:attribute name="exceptArguments" type="listOfStrings" use="required">
       
  1279 				<xsd:annotation><xsd:documentation>
       
  1280 				The list of argument names NOT to import.  All the arguments are imported
       
  1281 				except these.  This is mutually exclusive with 'arguments'.
       
  1282 				</xsd:documentation></xsd:annotation>	
       
  1283 			</xsd:attribute>
       
  1284 			<xsd:attribute name="help" type="xsd:string" use="optional">
       
  1285 				<xsd:annotation><xsd:documentation>
       
  1286 				Help/usage text for a documentation generating tool.
       
  1287 				</xsd:documentation></xsd:annotation>
       
  1288 			</xsd:attribute>
       
  1289 		</xsd:complexType>
       
  1290 	</xsd:element>
       
  1291 		
       
  1292 	<xsd:element name="expandMacro">
       
  1293 		<xsd:annotation><xsd:documentation>
       
  1294 		<p>
       
  1295 		Added post 1.1.
       
  1296 		Expands a given macro into the sourceGen of the caller.  
       
  1297 		This has the same effect as inserting the same templates and inlines 
       
  1298 		from the macro's definition at the point of call.  
       
  1299 		Variable references from those templates and inlines
       
  1300 		are substituted with the values provided in attributes 
       
  1301 		(e.g. variableName="value") or expandArgument child elements.  
       
  1302 		The latter may be preferred for cases where code is substituted,
       
  1303 		so the formatting may be retained.
       
  1304 		</p>
       
  1305 		<p>
       
  1306 		As a special case, variable references may have modifiers to
       
  1307 		modify the formatting of a variable when it is expanded.  
       
  1308 		Modifiers are appended
       
  1309 		to the variable name as in: $(varName::modifier).  
       
  1310 		</p>
       
  1311 		<p>
       
  1312 		Currently supported modifiers are all for tweaking canonical
       
  1313 		function argument lists, which match the format of 
       
  1314 		declaration, with spaces, argument names, default values, etc:
       
  1315 		</p>
       
  1316 		<ul>
       
  1317 			<li>as-function-declaration-args: identity
       
  1318 			</li>
       
  1319 			<li>as-function-definition-args: removes default argument values
       
  1320 			</li>
       
  1321 			<li>as-function-location-args: removes argument names, default arguments, and spaces
       
  1322 			</li>
       
  1323 		</ul>
       
  1324 		</xsd:documentation></xsd:annotation>
       
  1325 		<xsd:complexType>
       
  1326 			<xsd:complexContent>
       
  1327 				<xsd:extension base="ConditionalSourceGen" >
       
  1328 					<xsd:sequence>
       
  1329 						<xsd:element ref="expandArgument" maxOccurs="unbounded" minOccurs="0"/>
       
  1330 					</xsd:sequence>
       
  1331 					<xsd:attribute name="name" type="xsd:string" use="required">
       
  1332 						<xsd:annotation><xsd:documentation>
       
  1333 						The macro to invoke (matching the id from defineMacro).
       
  1334 						</xsd:documentation></xsd:annotation>
       
  1335 					</xsd:attribute>
       
  1336 					<xsd:attribute name="passArguments" type="listOfStrings" use="optional">
       
  1337 						<xsd:annotation><xsd:documentation>
       
  1338 						A list of arguments defined in the current calling macro to
       
  1339 						pass unchanged to the called macro, excluding any arguments
       
  1340 						that are not defined in the current call.
       
  1341 						
       
  1342 						This attribute is only valid in expandMacro called from
       
  1343 						a defineMacro.  
       
  1344 						
       
  1345 						Passing arguments is different from adding attributes
       
  1346 						argName="$(argName)" because it avoids defining otherwise 
       
  1347 						undefined arguments.  (A missing optional argument is null,
       
  1348 						not the empty string.  The '::is-defined' modifier can be
       
  1349 						used to check this.)
       
  1350 						
       
  1351 						Elements in the list of strings are names of arguments, or
       
  1352 						renames of the form targetArgumentName=hostArgumentName which
       
  1353 						passes hostArgumentName from the hosting macro with the name
       
  1354 						targetArgumentName (again, only if the argument is actually
       
  1355 						defined in the call).
       
  1356 							
       
  1357 						If this argument is not specified, all the arguments in the
       
  1358 						invoked macro are passed (zero or more may have defaults which
       
  1359 						are overridden in this macro). 
       
  1360 						</xsd:documentation></xsd:annotation>
       
  1361 					</xsd:attribute>
       
  1362 					
       
  1363 					<xsd:attribute name="dontPassArguments" type="listOfStrings" use="optional">
       
  1364 						<xsd:annotation><xsd:documentation>
       
  1365 						This is primarily used when passArguments is not specified.
       
  1366 						It specifies which arguments not to pass to the invoked macro,
       
  1367 						which become undefined in the expansion of that macro.
       
  1368 						This is useful when this macro takes over the work of one or more
       
  1369 						arguments from the invoked macro. 
       
  1370 						</xsd:documentation></xsd:annotation>
       
  1371 					</xsd:attribute>
       
  1372 
       
  1373 					<xsd:attribute name="help" type="xsd:string" use="optional">
       
  1374 						<xsd:annotation><xsd:documentation>
       
  1375 						Help/usage text for a documentation generating tool.
       
  1376 						</xsd:documentation></xsd:annotation>
       
  1377 					</xsd:attribute>
       
  1378 					
       
  1379 					<xsd:anyAttribute processContents="lax">
       
  1380 						<xsd:annotation><xsd:documentation>
       
  1381 						Any attribute matching the variables used in the given named macro may appear here.
       
  1382 						</xsd:documentation></xsd:annotation>
       
  1383 					</xsd:anyAttribute>
       
  1384 				</xsd:extension>
       
  1385 			</xsd:complexContent>
       
  1386 		</xsd:complexType>
       
  1387 	</xsd:element>
       
  1388 
       
  1389 	<xsd:element name="expandArgument">
       
  1390 		<xsd:annotation><xsd:documentation>
       
  1391 		Added post 1.1.  
       
  1392 		Provides multiline text content for an argument.
       
  1393 		This is semantically identical to setting an attribute of the same
       
  1394 		name="..." value in the expandMacro element, with any standalone 
       
  1395 		leading whitespace and standalone trailing whitespace removed
       
  1396 		(as with &lt;template&gt;).
       
  1397 		</xsd:documentation></xsd:annotation>
       
  1398 		<xsd:complexType>
       
  1399 			<xsd:simpleContent>
       
  1400 				<xsd:extension base="xsd:string">
       
  1401 					<xsd:attribute name="name" type="xsd:string" use="required">
       
  1402 						<xsd:annotation><xsd:documentation>
       
  1403 						The variable to define (matching the id from macroArgument).
       
  1404 						</xsd:documentation></xsd:annotation>
       
  1405 					</xsd:attribute>
       
  1406 					<xsd:attribute name="help" type="xsd:string" use="optional">
       
  1407 						<xsd:annotation><xsd:documentation>
       
  1408 						Help/usage text for a documentation generating tool.
       
  1409 						</xsd:documentation></xsd:annotation>
       
  1410 					</xsd:attribute>
       
  1411 				</xsd:extension>
       
  1412 			</xsd:simpleContent>
       
  1413 		</xsd:complexType>
       
  1414 	</xsd:element>
       
  1415 	
       
  1416 	<xsd:element name="select">
       
  1417 		<xsd:annotation><xsd:documentation>
       
  1418 		This element encapsulates choice elements which allow conditional
       
  1419 		source mapping.  One choice must match or an error results (you can
       
  1420 		use an empty choice to match the default case if necessary).  Only
       
  1421 		the first matching choice is considered.
       
  1422 			<p>
       
  1423 				Only use one attribute (property, attribute, propertyExists, isComponentInstanceOf)
       
  1424 				 for the select statement.
       
  1425 			</p>
       
  1426 		</xsd:documentation></xsd:annotation>	
       
  1427 	
       
  1428 		<xsd:complexType>
       
  1429 			<xsd:sequence>
       
  1430 				<xsd:element maxOccurs="unbounded" minOccurs="0" ref="choice"/>
       
  1431 			</xsd:sequence>
       
  1432 			<!-- only one of these should be set -->
       
  1433 			<xsd:attribute name="property" type="xsd:string" use="optional">
       
  1434 					<xsd:annotation><xsd:documentation>
       
  1435 					Specifies the property path to test.  (E.g. "flag", "[parent].flag", ...)
       
  1436 						Results in an error if the property does not exist, else the string version of the property to test.
       
  1437 					</xsd:documentation></xsd:annotation>	
       
  1438 			</xsd:attribute>
       
  1439 			
       
  1440 			<xsd:attribute name="attribute" type="xsd:string" use="optional">
       
  1441 					<xsd:annotation><xsd:documentation>
       
  1442 					Specifies the attribute value to test.  Results in blank ("") or the value of the attribute to test.
       
  1443 					</xsd:documentation></xsd:annotation>	
       
  1444 			</xsd:attribute>
       
  1445 			
       
  1446 			<xsd:attribute name="propertyExists" type="xsd:string" use="optional">
       
  1447 					<xsd:annotation><xsd:documentation>
       
  1448 					Specifies the property path to test for existence.  (E.g. "flag", "[parent].flag", ...)
       
  1449 						Results in a 'true' or 'false' value to test. 
       
  1450 					</xsd:documentation></xsd:annotation>	
       
  1451 			</xsd:attribute>
       
  1452 
       
  1453 			<xsd:attribute name="isComponentInstanceOf" type="xsd:string" use="optional">
       
  1454 					<xsd:annotation><xsd:documentation>
       
  1455 					Specifies the property path to test for existence, e.g., whether the
       
  1456 						property may be set or queried.  This is independent of whether the
       
  1457 						property is actually set.  The attribute takes a property path (e.g. "flag", "[parent].flag", ...)
       
  1458 					Results in a 'true' or 'false' value to test. 
       
  1459 					</xsd:documentation></xsd:annotation>	
       
  1460 			</xsd:attribute>
       
  1461 			
       
  1462 		</xsd:complexType>
       
  1463 	</xsd:element>
       
  1464 	<xsd:element name="choice">
       
  1465 		<xsd:annotation><xsd:documentation>
       
  1466 		This defines a decision in the select element.  If the "value" attribute
       
  1467 		matches the value obtained in the select element, the choice is matched
       
  1468 		and its mapping elements instantiated.
       
  1469 		</xsd:documentation></xsd:annotation>	
       
  1470 		<xsd:complexType>
       
  1471 			<xsd:sequence>
       
  1472 				<xsd:choice maxOccurs="unbounded" minOccurs="0">
       
  1473 					<xsd:element ref="twoWayMapping"/>
       
  1474 					<xsd:element ref="mapResource"/>
       
  1475 					<xsd:element ref="select"/>
       
  1476 				</xsd:choice>
       
  1477 			</xsd:sequence>
       
  1478 			<xsd:attribute name="value" type="xsd:string" use="optional">
       
  1479 					<xsd:annotation><xsd:documentation>
       
  1480 					The value to match.  If unspecified, the choice always matches.
       
  1481 					</xsd:documentation></xsd:annotation>	
       
  1482 			</xsd:attribute>
       
  1483 			
       
  1484 		</xsd:complexType>
       
  1485 	</xsd:element>
       
  1486 	<xsd:complexType name="twoWayMappingType">
       
  1487 		<xsd:annotation><xsd:documentation>
       
  1488 		Base for two-way mappings.
       
  1489 		</xsd:documentation></xsd:annotation>	
       
  1490 	</xsd:complexType>	
       
  1491 	<xsd:complexType name="mappingFixedType">
       
  1492 		<xsd:annotation><xsd:documentation>
       
  1493 		Base for mapping a fixed value to RSS.
       
  1494 		</xsd:documentation></xsd:annotation>	
       
  1495 		<xsd:complexContent>
       
  1496 			<xsd:extension base="twoWayMappingType">
       
  1497 				<xsd:attribute name="value" type="xsd:string" use="required">
       
  1498 					<xsd:annotation><xsd:documentation>
       
  1499 					The literal string to emit into RSS.
       
  1500 					</xsd:documentation></xsd:annotation>	
       
  1501 			</xsd:attribute>
       
  1502 			</xsd:extension>
       
  1503 		</xsd:complexContent>
       
  1504 	</xsd:complexType>
       
  1505 	<xsd:complexType name="mappingSimpleType">
       
  1506 		<xsd:annotation><xsd:documentation>
       
  1507 		Base for mapping simple types (integers, floats, strings, booleans).
       
  1508 		</xsd:documentation></xsd:annotation>	
       
  1509 		<xsd:complexContent>
       
  1510 			<xsd:extension base="twoWayMappingType"/>
       
  1511 		</xsd:complexContent>
       
  1512 	</xsd:complexType>
       
  1513 	<xsd:complexType name="mappingInstanceType">
       
  1514 		<xsd:annotation><xsd:documentation>
       
  1515 		Base for mapping resources generated by component instances.
       
  1516 		Either a reference to the resource is emitted (for LLINK targets)
       
  1517 		or the resource expression is emitted (for STRUCT targets).
       
  1518 		</xsd:documentation></xsd:annotation>	
       
  1519 		<xsd:complexContent>
       
  1520 			<xsd:extension base="twoWayMappingType">
       
  1521 				<xsd:attribute name="rsrcId" type="xsd:string" use="optional">
       
  1522 					<xsd:annotation><xsd:documentation>
       
  1523 					If specified, which particular resource to match.
       
  1524 					</xsd:documentation></xsd:annotation>	
       
  1525 			</xsd:attribute>
       
  1526 			</xsd:extension>
       
  1527 		</xsd:complexContent>
       
  1528 	</xsd:complexType>
       
  1529 	<xsd:complexType name="mappingReferenceType">
       
  1530 		<xsd:annotation><xsd:documentation>
       
  1531 		Base for mapping references to resources generated by component instances.
       
  1532 		</xsd:documentation></xsd:annotation>	
       
  1533 		<xsd:complexContent>
       
  1534 			<xsd:extension base="twoWayMappingType">
       
  1535 				<xsd:attribute name="rsrcId" type="xsd:string" use="optional">
       
  1536 					<xsd:annotation><xsd:documentation>
       
  1537 					If defined, tells which particular generated resource to reference.
       
  1538 					</xsd:documentation></xsd:annotation>	
       
  1539 				</xsd:attribute>				
       
  1540 			</xsd:extension>
       
  1541 		</xsd:complexContent>
       
  1542 	</xsd:complexType>
       
  1543 	<xsd:complexType name="mappingEnumType">
       
  1544 		<xsd:annotation><xsd:documentation>
       
  1545 		Base for mapping enumerator properties.
       
  1546 		If any mapEnum elements specified, they completely define the list of mappings 
       
  1547 		of internal enumerator values  to external RSS values.  Otherwise, internal 
       
  1548 		values are directly emitted as RSS values.
       
  1549 		</xsd:documentation></xsd:annotation>	
       
  1550 		<xsd:complexContent>
       
  1551 			<xsd:extension base="twoWayMappingType">
       
  1552 				<xsd:sequence maxOccurs="unbounded" minOccurs="0">
       
  1553 					<xsd:element ref="mapEnum"/>
       
  1554 				</xsd:sequence>
       
  1555 				<xsd:attribute name="enumeration" type="xsd:string" use="optional">
       
  1556 					<xsd:annotation><xsd:documentation>
       
  1557 					Unused.
       
  1558 					</xsd:documentation></xsd:annotation>	
       
  1559 				</xsd:attribute>
       
  1560 				<xsd:attribute name="headers" type="listOfStrings" use="optional">
       
  1561 					<xsd:annotation><xsd:documentation>
       
  1562 					List of header files that must be included to provide the RSS enumerator symbols.
       
  1563 					</xsd:documentation></xsd:annotation>	
       
  1564 				</xsd:attribute>
       
  1565 				<xsd:attribute default="true" name="validate" type="xsd:boolean" use="optional">
       
  1566 					<xsd:annotation><xsd:documentation>
       
  1567 					If true, ensure that mapped enumerators are declared in the RSS context,
       
  1568 					emitting warnings if not.  Set this to false if mapping #defines or
       
  1569 					expressions.
       
  1570 					</xsd:documentation></xsd:annotation>	
       
  1571 				</xsd:attribute>
       
  1572 				
       
  1573 				<xsd:attribute name="nameAlgorithm" type="xsd:string" use="optional">
       
  1574 					<xsd:annotation><xsd:documentation>
       
  1575 					If defined, mapped RSS values may be generated by an algorithm based on
       
  1576 					the current instance and property.  See the com.nokia.sdt.sourceGen.nameAlgorithm
       
  1577 					extension point for details.
       
  1578 					</xsd:documentation></xsd:annotation>	
       
  1579 				</xsd:attribute>
       
  1580 				<xsd:attribute name="uniqueValue" type="xsd:string" use="optional">
       
  1581 					<xsd:annotation><xsd:documentation>
       
  1582 					When nameAlgorithm is defined, specifies that some or all mapped values
       
  1583 					are generated by the name algorithm.  If the value is "*", every value goes
       
  1584 					through the name algorithm and gets an enumerator in an *.hrh file.
       
  1585 					Otherwise, only properties matching the value are generated.
       
  1586 					</xsd:documentation></xsd:annotation>	
       
  1587 				</xsd:attribute>
       
  1588 			</xsd:extension>
       
  1589 		</xsd:complexContent>
       
  1590 	</xsd:complexType>
       
  1591 	<xsd:element name="mapEnum">
       
  1592 		<xsd:annotation><xsd:documentation>
       
  1593 		This defines the mapping of one particular property value to one
       
  1594 		particular RSS value.
       
  1595 		</xsd:documentation></xsd:annotation>	
       
  1596 		<xsd:complexType>
       
  1597 			<xsd:attribute name="value" type="xsd:string" use="required">
       
  1598 					<xsd:annotation><xsd:documentation>
       
  1599 					The property value.
       
  1600 					</xsd:documentation></xsd:annotation>	
       
  1601 			</xsd:attribute>
       
  1602 			
       
  1603 			<xsd:attribute name="enumerator" type="xsd:string" use="required">
       
  1604 					<xsd:annotation><xsd:documentation>
       
  1605 					The RSS enumerator.
       
  1606 					</xsd:documentation></xsd:annotation>	
       
  1607 			</xsd:attribute>
       
  1608 		</xsd:complexType>
       
  1609 	</xsd:element>
       
  1610 	<xsd:complexType name="mappingIdentifierType">
       
  1611 		<xsd:annotation><xsd:documentation>
       
  1612 		Base for mapping property values to RSS identifiers (rather than
       
  1613 		strings, for instance, as mappingSimpleType would do).
       
  1614 		</xsd:documentation></xsd:annotation>	
       
  1615 		<xsd:complexContent>
       
  1616 			<xsd:extension base="twoWayMappingType"/>
       
  1617 		</xsd:complexContent>
       
  1618 	</xsd:complexType>
       
  1619 	<xsd:complexType name="mappingResourceType">
       
  1620 		<xsd:annotation><xsd:documentation>
       
  1621 		Base for mapping resources in RSS.
       
  1622 		</xsd:documentation></xsd:annotation>	
       
  1623 		<xsd:complexContent>
       
  1624 			<xsd:extension base="twoWayMappingType">
       
  1625 				<xsd:sequence>
       
  1626 					<xsd:choice maxOccurs="unbounded" minOccurs="0">
       
  1627 						<xsd:element ref="mapSimpleMember"/>
       
  1628 						<xsd:element ref="mapInstanceMember"/>
       
  1629 						<xsd:element ref="mapReferenceMember"/>
       
  1630 						<xsd:element ref="mapFixedMember"/>
       
  1631 						<xsd:element ref="mapEnumMember"/>
       
  1632 						<xsd:element ref="mapIdentifierMember"/>
       
  1633 						<xsd:element ref="mapArrayMember"/>
       
  1634 						<xsd:element ref="mapResourceMember"/>
       
  1635 						<xsd:element ref="mapBitmaskMember"/>
       
  1636 						<xsd:element ref="mapMemberFromType"/>
       
  1637 						<xsd:element ref="mapIntoProperty"/>
       
  1638 						<xsd:element ref="select"/>
       
  1639 					</xsd:choice>
       
  1640 				</xsd:sequence>
       
  1641 				<xsd:attribute name="struct" type="xsd:string" use="optional">
       
  1642 					<xsd:annotation><xsd:documentation>
       
  1643 					The RSS STRUCT name to generate.
       
  1644 					</xsd:documentation></xsd:annotation>	
       
  1645 				</xsd:attribute>
       
  1646 				
       
  1647 				<xsd:attribute name="headers" type="listOfStrings" use="optional">
       
  1648 					<xsd:annotation><xsd:documentation>
       
  1649 					The list of headers required to declare the STRUCT.
       
  1650 					</xsd:documentation></xsd:annotation>	
       
  1651 				</xsd:attribute>
       
  1652 				
       
  1653 				<xsd:attribute name="id" type="xsd:string" use="optional">
       
  1654 					<xsd:annotation><xsd:documentation>
       
  1655 					The unique identifier for this resource within a component.
       
  1656 					
       
  1657 					Every mapResourceXXX must have an identifier, either implicitly
       
  1658 					or explicitly defined.
       
  1659 					
       
  1660 					If unspecified, an identifier is automatically generated for
       
  1661 					mapResourceMember or mapResourceElement elements.  Otherwise,
       
  1662 					missing identifiers are reported at errors at source mapping time.
       
  1663 					</xsd:documentation></xsd:annotation>	
       
  1664 				</xsd:attribute>
       
  1665 				
       
  1666 			</xsd:extension>
       
  1667 		</xsd:complexContent>
       
  1668 	</xsd:complexType>
       
  1669 	<xsd:complexType name="mappingBitmaskType">
       
  1670 		<xsd:annotation><xsd:documentation>
       
  1671 		Base for mapping sets of boolean properties to a single bitmask expression in RSS.
       
  1672 		
       
  1673 		When mapping this element, a working set of the includedProperties is created.
       
  1674 		Each mapBitmaskValue element is considered in turn, and if all the properties
       
  1675 		it references are present in the working set and have the value "true", 
       
  1676 		the matching value is OR'ed into the target expression, and those properties removed from the working set.
       
  1677 		Once the working set is empty, the mapping is complete.  If all mapBitmaskValues are
       
  1678 		exhausted but the working set is non-empty, this is a component error.
       
  1679 		</xsd:documentation></xsd:annotation>	
       
  1680 		<xsd:complexContent>
       
  1681 			<xsd:extension base="twoWayMappingType">
       
  1682 				<xsd:sequence maxOccurs="unbounded" minOccurs="0">
       
  1683 					<xsd:element ref="mapBitmaskValue"/>
       
  1684 				</xsd:sequence>
       
  1685 				<xsd:attribute name="includedProperties" type="listOfStrings" use="optional">
       
  1686 					<xsd:annotation><xsd:documentation>
       
  1687 					The list of properties included in the set.  If undefined, all the
       
  1688 					sibling properties (within a component or compound property) are included.
       
  1689 					Every included property must be referenced in a mapBitmaskValue element,
       
  1690 					or else the mapping is considered invalid, and an error reported.
       
  1691 					</xsd:documentation></xsd:annotation>	
       
  1692 				</xsd:attribute>
       
  1693 				
       
  1694 			</xsd:extension>
       
  1695 		</xsd:complexContent>
       
  1696 	</xsd:complexType>
       
  1697 	<xsd:element name="mapBitmaskValue">
       
  1698 		<xsd:annotation><xsd:documentation>
       
  1699 		Map a set of properties to a subexpression of the bitmask expression.  If all the given
       
  1700 		properties are "true", the given value is OR'ed into the target expression.
       
  1701 		</xsd:documentation></xsd:annotation>	
       
  1702 		<xsd:complexType>
       
  1703 			<xsd:attribute name="properties" type="listOfStrings" use="required">
       
  1704 					<xsd:annotation><xsd:documentation>
       
  1705 					List of properties to consider.  May be property paths.
       
  1706 					</xsd:documentation></xsd:annotation>	
       
  1707 			</xsd:attribute>
       
  1708 			
       
  1709 			<xsd:attribute name="value" type="xsd:string" use="required">
       
  1710 					<xsd:annotation><xsd:documentation>
       
  1711 					Value to OR into the target expression.
       
  1712 					</xsd:documentation></xsd:annotation>	
       
  1713 			</xsd:attribute>
       
  1714 			
       
  1715 		</xsd:complexType>
       
  1716 	</xsd:element>
       
  1717 
       
  1718 	<xsd:element abstract="true" name="twoWayMapping" type="twoWayMappingType"/>
       
  1719 	
       
  1720 	<xsd:complexType name="mappingArrayType">
       
  1721 		<xsd:annotation><xsd:documentation>
       
  1722 		Base for mapping arrays from sequence properties or component instance children.
       
  1723 		</xsd:documentation></xsd:annotation>	
       
  1724 		<xsd:complexContent>
       
  1725 			<xsd:extension base="twoWayMappingType">
       
  1726 				<xsd:sequence>
       
  1727 					<xsd:choice maxOccurs="1" minOccurs="0">
       
  1728 						<xsd:element ref="twoWayMapping">
       
  1729 								<xsd:annotation><xsd:documentation>
       
  1730 								This is restricted to mapXXXElement, mapElementFromType, or mapIntoProperty, but we can't represent this in XSD.
       
  1731 								</xsd:documentation></xsd:annotation>	
       
  1732 						</xsd:element>
       
  1733 						
       
  1734 						<xsd:element ref="select"/>
       
  1735 					</xsd:choice>
       
  1736 				</xsd:sequence>
       
  1737 			</xsd:extension>
       
  1738 		</xsd:complexContent>
       
  1739 	</xsd:complexType>
       
  1740 	
       
  1741 	<xsd:annotation>
       
  1742 		<xsd:documentation>
       
  1743 Type mappings are used to store mappings along with a type.  Added post 1.2		
       
  1744 		</xsd:documentation>
       
  1745 	</xsd:annotation>
       
  1746 
       
  1747 	<!-- added post 1.2 -->
       
  1748 	<xsd:element name="mapFixedType" substitutionGroup="twoWayMapping">
       
  1749 		<xsd:annotation><xsd:documentation>
       
  1750 		Map a fixed value.
       
  1751 		</xsd:documentation></xsd:annotation>	
       
  1752 		<xsd:complexType>
       
  1753 			<xsd:complexContent>
       
  1754 				<xsd:extension base="mappingFixedType" >
       
  1755 					&MapTypeIdAttribute;
       
  1756 				</xsd:extension>
       
  1757 			</xsd:complexContent>
       
  1758 		</xsd:complexType>
       
  1759 	</xsd:element>
       
  1760 
       
  1761 	<!-- added post 1.2 -->
       
  1762 	<xsd:element name="mapSimpleType" substitutionGroup="twoWayMapping">
       
  1763 		<xsd:annotation><xsd:documentation>
       
  1764 		Map a simple value.
       
  1765 		</xsd:documentation></xsd:annotation>	
       
  1766 		<xsd:complexType>
       
  1767 			<xsd:complexContent>
       
  1768 				<xsd:extension base="mappingSimpleType">
       
  1769 					&MapTypeIdAttribute;
       
  1770 				</xsd:extension>
       
  1771 			</xsd:complexContent>
       
  1772 		</xsd:complexType>
       
  1773 	</xsd:element>
       
  1774 	<!-- added post 1.2 -->
       
  1775 	<xsd:element name="mapInstanceType" substitutionGroup="twoWayMapping">
       
  1776 		<xsd:annotation><xsd:documentation>
       
  1777 		Map resources for an instance.
       
  1778 		</xsd:documentation></xsd:annotation>	
       
  1779 		<xsd:complexType>
       
  1780 			<xsd:complexContent>
       
  1781 				<xsd:extension base="mappingInstanceType">
       
  1782 					&MapTypeIdAttribute;
       
  1783 				</xsd:extension>
       
  1784 			</xsd:complexContent>
       
  1785 		</xsd:complexType>
       
  1786 	</xsd:element>
       
  1787 	<!-- added post 1.2 -->
       
  1788 	<xsd:element name="mapReferenceType" substitutionGroup="twoWayMapping">
       
  1789 		<xsd:annotation><xsd:documentation>
       
  1790 		Map a reference property to resources the instance generates.
       
  1791 		</xsd:documentation></xsd:annotation>	
       
  1792 		<xsd:complexType>
       
  1793 			<xsd:complexContent>
       
  1794 				<xsd:extension base="mappingReferenceType">
       
  1795 					&MapTypeIdAttribute;
       
  1796 				</xsd:extension>
       
  1797 			</xsd:complexContent>
       
  1798 		</xsd:complexType>
       
  1799 	</xsd:element>
       
  1800 	<!-- added post 1.2 -->
       
  1801 	<xsd:element name="mapEnumType" substitutionGroup="twoWayMapping">
       
  1802 		<xsd:annotation><xsd:documentation>
       
  1803 		Map an enumerator to RSS.
       
  1804 		</xsd:documentation></xsd:annotation>	
       
  1805 		<xsd:complexType>
       
  1806 			<xsd:complexContent>
       
  1807 				<xsd:extension base="mappingEnumType">
       
  1808 					&MapTypeIdAttribute;
       
  1809 				</xsd:extension>
       
  1810 			</xsd:complexContent>
       
  1811 		</xsd:complexType>
       
  1812 	</xsd:element>
       
  1813 	<!-- added post 1.2 -->
       
  1814 	<xsd:element name="mapIdentifierType" substitutionGroup="twoWayMapping">
       
  1815 		<xsd:annotation><xsd:documentation>
       
  1816 		Map a simple property to a literal (identifier) in RSS.
       
  1817 		</xsd:documentation></xsd:annotation>	
       
  1818 		<xsd:complexType>
       
  1819 			<xsd:complexContent>
       
  1820 				<xsd:extension base="mappingIdentifierType">
       
  1821 					&MapTypeIdAttribute;
       
  1822 				</xsd:extension>
       
  1823 			</xsd:complexContent>
       
  1824 		</xsd:complexType>
       
  1825 	</xsd:element>
       
  1826 	<!-- added post 1.2 -->
       
  1827 	<xsd:element name="mapResourceType" substitutionGroup="twoWayMapping">
       
  1828 		<xsd:annotation><xsd:documentation>
       
  1829 		Map a property to a RESOURCE expression or statement.
       
  1830 		</xsd:documentation></xsd:annotation>	
       
  1831 		<xsd:complexType>
       
  1832 			<xsd:complexContent>
       
  1833 				<xsd:extension base="mappingResourceType">
       
  1834 					&MapTypeIdAttribute;
       
  1835 				</xsd:extension>
       
  1836 			</xsd:complexContent>
       
  1837 		</xsd:complexType>
       
  1838 	</xsd:element>
       
  1839 	<!-- added post 1.2 -->
       
  1840 	<xsd:element name="mapArrayType" substitutionGroup="twoWayMapping">
       
  1841 		<xsd:annotation><xsd:documentation>
       
  1842 		Map a property or child list to an array in RSS.
       
  1843 		</xsd:documentation></xsd:annotation>	
       
  1844 		<xsd:complexType>
       
  1845 			<xsd:complexContent>
       
  1846 				<xsd:extension base="mappingArrayType">
       
  1847 					&MapTypeIdAttribute;
       
  1848 				</xsd:extension>
       
  1849 			</xsd:complexContent>
       
  1850 		</xsd:complexType>
       
  1851 	</xsd:element>
       
  1852 	<!-- added post 1.2 -->
       
  1853 	<xsd:element name="mapBitmaskType" substitutionGroup="twoWayMapping">
       
  1854 		<xsd:annotation><xsd:documentation>
       
  1855 		Map a set of boolean properties to a bitmask expression in RSS.
       
  1856 		</xsd:documentation></xsd:annotation>	
       
  1857 		<xsd:complexType>
       
  1858 			<xsd:complexContent>
       
  1859 				<xsd:extension base="mappingBitmaskType">
       
  1860 					&MapTypeIdAttribute;
       
  1861 				</xsd:extension>
       
  1862 			</xsd:complexContent>
       
  1863 		</xsd:complexType>
       
  1864 	</xsd:element>
       
  1865 	<xsd:annotation>
       
  1866 		<xsd:documentation>
       
  1867 Member mappings are used to map a property to a member of a resource.		
       
  1868 		</xsd:documentation>
       
  1869 	</xsd:annotation>
       
  1870 
       
  1871 	<xsd:element name="mapFixedMember" substitutionGroup="twoWayMapping">
       
  1872 		<xsd:annotation><xsd:documentation>
       
  1873 		Map a fixed value to an RSS member.
       
  1874 		</xsd:documentation></xsd:annotation>	
       
  1875 		<xsd:complexType>
       
  1876 			<xsd:complexContent>
       
  1877 				<xsd:extension base="mappingFixedType">
       
  1878 					&MapMemberAttributes;				
       
  1879 				</xsd:extension>
       
  1880 			</xsd:complexContent>
       
  1881 		</xsd:complexType>
       
  1882 	</xsd:element>
       
  1883 
       
  1884 	<xsd:element name="mapSimpleMember" substitutionGroup="twoWayMapping">
       
  1885 		<xsd:annotation><xsd:documentation>
       
  1886 		Map a simple value to a member.
       
  1887 		</xsd:documentation></xsd:annotation>	
       
  1888 		<xsd:complexType>
       
  1889 			<xsd:complexContent>
       
  1890 				<xsd:extension base="mappingSimpleType">
       
  1891 					&MapPropertyAttribute;
       
  1892 					&MapMemberAttributes;
       
  1893 						
       
  1894 				</xsd:extension>
       
  1895 			</xsd:complexContent>
       
  1896 		</xsd:complexType>
       
  1897 	</xsd:element>
       
  1898 	<xsd:element name="mapInstanceMember" substitutionGroup="twoWayMapping">
       
  1899 		<xsd:annotation><xsd:documentation>
       
  1900 		Map resources for an instance.
       
  1901 		</xsd:documentation></xsd:annotation>	
       
  1902 		<xsd:complexType>
       
  1903 			<xsd:complexContent>
       
  1904 				<xsd:extension base="mappingInstanceType">
       
  1905 					&MapPropertyAttribute;
       
  1906 					&MapMemberAttributes;
       
  1907 				</xsd:extension>
       
  1908 			</xsd:complexContent>
       
  1909 		</xsd:complexType>
       
  1910 	</xsd:element>
       
  1911 	<xsd:element name="mapReferenceMember" substitutionGroup="twoWayMapping">
       
  1912 		<xsd:annotation><xsd:documentation>
       
  1913 		Map a reference property to resources the instance generates.
       
  1914 		</xsd:documentation></xsd:annotation>	
       
  1915 		<xsd:complexType>
       
  1916 			<xsd:complexContent>
       
  1917 				<xsd:extension base="mappingReferenceType">
       
  1918 					&MapPropertyAttribute;
       
  1919 					&MapMemberAttributes;
       
  1920 				</xsd:extension>
       
  1921 			</xsd:complexContent>
       
  1922 		</xsd:complexType>
       
  1923 	</xsd:element>
       
  1924 	<xsd:element name="mapEnumMember" substitutionGroup="twoWayMapping">
       
  1925 		<xsd:annotation><xsd:documentation>
       
  1926 		Map an enumerator to RSS.
       
  1927 		</xsd:documentation></xsd:annotation>	
       
  1928 		<xsd:complexType>
       
  1929 			<xsd:complexContent>
       
  1930 				<xsd:extension base="mappingEnumType">
       
  1931 					&MapPropertyAttribute;
       
  1932 					&MapMemberAttributes;
       
  1933 				</xsd:extension>
       
  1934 			</xsd:complexContent>
       
  1935 		</xsd:complexType>
       
  1936 	</xsd:element>
       
  1937 	<xsd:element name="mapIdentifierMember" substitutionGroup="twoWayMapping">
       
  1938 		<xsd:annotation><xsd:documentation>
       
  1939 		Map a simple property to a literal (identifier) in RSS.
       
  1940 		</xsd:documentation></xsd:annotation>	
       
  1941 		<xsd:complexType>
       
  1942 			<xsd:complexContent>
       
  1943 				<xsd:extension base="mappingIdentifierType">
       
  1944 					&MapPropertyAttribute;
       
  1945 					&MapMemberAttributes;
       
  1946 				</xsd:extension>
       
  1947 			</xsd:complexContent>
       
  1948 		</xsd:complexType>
       
  1949 	</xsd:element>
       
  1950 	<xsd:element name="mapResourceMember" substitutionGroup="twoWayMapping">
       
  1951 		<xsd:annotation><xsd:documentation>
       
  1952 		Map a property to a RESOURCE expression or statement.
       
  1953 		</xsd:documentation></xsd:annotation>	
       
  1954 		<xsd:complexType>
       
  1955 			<xsd:complexContent>
       
  1956 				<xsd:extension base="mappingResourceType">
       
  1957 					&MapPropertyAttribute;
       
  1958 					&MapMemberAttributes;
       
  1959 				</xsd:extension>
       
  1960 			</xsd:complexContent>
       
  1961 		</xsd:complexType>
       
  1962 	</xsd:element>
       
  1963 	<xsd:element name="mapArrayMember" substitutionGroup="twoWayMapping">
       
  1964 		<xsd:annotation><xsd:documentation>
       
  1965 		Map a property or child list to an array in RSS.
       
  1966 		</xsd:documentation></xsd:annotation>	
       
  1967 		<xsd:complexType>
       
  1968 			<xsd:complexContent>
       
  1969 				<xsd:extension base="mappingArrayType">
       
  1970 					&MapPropertyAttribute;
       
  1971 					&MapMemberAttributes;
       
  1972 				</xsd:extension>
       
  1973 			</xsd:complexContent>
       
  1974 		</xsd:complexType>
       
  1975 	</xsd:element>
       
  1976 	<xsd:element name="mapBitmaskMember" substitutionGroup="twoWayMapping">
       
  1977 		<xsd:annotation><xsd:documentation>
       
  1978 		Map a set of boolean properties to a bitmask expression in RSS.
       
  1979 		</xsd:documentation></xsd:annotation>	
       
  1980 		<xsd:complexType>
       
  1981 			<xsd:complexContent>
       
  1982 				<xsd:extension base="mappingBitmaskType">
       
  1983 					&MapPropertyAttribute;
       
  1984 					&MapMemberAttributes;
       
  1985 				</xsd:extension>
       
  1986 			</xsd:complexContent>
       
  1987 		</xsd:complexType>
       
  1988 	</xsd:element>
       
  1989 	
       
  1990 	<!-- added post 1.2 -->
       
  1991 	<xsd:element name="mapMemberFromType" substitutionGroup="twoWayMapping">
       
  1992 		<xsd:annotation><xsd:documentation>
       
  1993 		Map RSS from the type declaration attached to the given property.
       
  1994 		</xsd:documentation></xsd:annotation>	
       
  1995 		<xsd:complexType>
       
  1996 			<xsd:complexContent>
       
  1997 				<xsd:extension base="twoWayMappingType">
       
  1998 					&MapPropertyAttribute;
       
  1999 					&MapMemberAttributes;
       
  2000 					
       
  2001 					<xsd:attribute name="typeId" type="xsd:string" use="optional">
       
  2002 						<xsd:annotation><xsd:documentation>
       
  2003 					This attribute tells which of a set of type mappings to use
       
  2004 					from the given type (as named in the id="..." attributes on
       
  2005 					the mapXXXType children of sourceTypeMapping).   
       
  2006 						</xsd:documentation></xsd:annotation>	
       
  2007 					</xsd:attribute>
       
  2008 					
       
  2009 				</xsd:extension>
       
  2010 			</xsd:complexContent>
       
  2011 		</xsd:complexType>
       
  2012 	</xsd:element>
       
  2013 	
       
  2014 	
       
  2015 	
       
  2016 	<!-- Array element mappings -->
       
  2017 	<xsd:element name="mapSimpleElement" substitutionGroup="twoWayMapping">
       
  2018 		<xsd:annotation><xsd:documentation>
       
  2019 		Map a simple value to an array element.
       
  2020 		</xsd:documentation></xsd:annotation>	
       
  2021 		<xsd:complexType>
       
  2022 			<xsd:complexContent>
       
  2023 				<xsd:extension base="mappingSimpleType">
       
  2024 				</xsd:extension>
       
  2025 			</xsd:complexContent>
       
  2026 		</xsd:complexType>
       
  2027 	</xsd:element>
       
  2028 	<xsd:element name="mapFixedElement" substitutionGroup="twoWayMapping">
       
  2029 		<xsd:annotation><xsd:documentation>
       
  2030 		Map a fixed value to an array element.
       
  2031 		</xsd:documentation></xsd:annotation>	
       
  2032 		<xsd:complexType>
       
  2033 			<xsd:complexContent>
       
  2034 				<xsd:extension base="mappingFixedType">
       
  2035 				</xsd:extension>
       
  2036 			</xsd:complexContent>
       
  2037 		</xsd:complexType>
       
  2038 	</xsd:element>
       
  2039 	<xsd:element name="mapInstanceElement" substitutionGroup="twoWayMapping">
       
  2040 		<xsd:annotation><xsd:documentation>
       
  2041 		Map an instance's resources to an array element.
       
  2042 		</xsd:documentation></xsd:annotation>	
       
  2043 		<xsd:complexType>
       
  2044 			<xsd:complexContent>
       
  2045 				<xsd:extension base="mappingInstanceType"/>
       
  2046 			</xsd:complexContent>
       
  2047 		</xsd:complexType>
       
  2048 	</xsd:element>
       
  2049 	<xsd:element name="mapReferenceElement" substitutionGroup="twoWayMapping">
       
  2050 		<xsd:annotation><xsd:documentation>
       
  2051 		Map a reference property to an array element.
       
  2052 		</xsd:documentation></xsd:annotation>	
       
  2053 		<xsd:complexType>
       
  2054 			<xsd:complexContent>
       
  2055 				<xsd:extension base="mappingReferenceType"/>
       
  2056 			</xsd:complexContent>
       
  2057 		</xsd:complexType>
       
  2058 	</xsd:element>
       
  2059 	<xsd:element name="mapEnumElement" substitutionGroup="twoWayMapping">
       
  2060 		<xsd:annotation><xsd:documentation>
       
  2061 		Map an enumerator to an array element.
       
  2062 		</xsd:documentation></xsd:annotation>	
       
  2063 		<xsd:complexType>
       
  2064 			<xsd:complexContent>
       
  2065 				<xsd:extension base="mappingEnumType"/>
       
  2066 			</xsd:complexContent>
       
  2067 		</xsd:complexType>
       
  2068 	</xsd:element>
       
  2069 	<xsd:element name="mapIdentifierElement" substitutionGroup="twoWayMapping">
       
  2070 		<xsd:annotation><xsd:documentation>
       
  2071 		Map a simple value to a literal (identifier) in an array element.
       
  2072 		</xsd:documentation></xsd:annotation>	
       
  2073 		<xsd:complexType>
       
  2074 			<xsd:complexContent>
       
  2075 				<xsd:extension base="mappingIdentifierType"/>
       
  2076 			</xsd:complexContent>
       
  2077 		</xsd:complexType>
       
  2078 	</xsd:element>
       
  2079 	<xsd:element name="mapResourceElement" substitutionGroup="twoWayMapping">
       
  2080 		<xsd:annotation><xsd:documentation>
       
  2081 		Map a compound property or instance to resources in an array element.
       
  2082 		</xsd:documentation></xsd:annotation>	
       
  2083 		<xsd:complexType>
       
  2084 			<xsd:complexContent>
       
  2085 				<xsd:extension base="mappingResourceType">
       
  2086 				
       
  2087 					<xsd:attribute name="instanceIdentifyingMember" type="xsd:string" use="optional">
       
  2088 						<xsd:annotation><xsd:documentation>
       
  2089 					This attribute provides a means to distinguish resource
       
  2090 					elements that come from different instances.  
       
  2091 					
       
  2092 					It tells which resource member to use as a key, so that the 
       
  2093 					array mapper can match up elements to instances when importing,
       
  2094 					to allow unknown items to be inserted (or for known items to 
       
  2095 					be reordered, ideally).
       
  2096 					
       
  2097 					If not set, the array is assumed to contain entries whose
       
  2098 					positions uniquely identify them (as is the case with
       
  2099 					arrays of integers, references, etc.).
       
  2100 						</xsd:documentation></xsd:annotation>	
       
  2101 					</xsd:attribute>
       
  2102 				</xsd:extension>
       
  2103 			</xsd:complexContent>
       
  2104 		</xsd:complexType>
       
  2105 	</xsd:element>
       
  2106 	<xsd:element name="mapBitmaskElement" substitutionGroup="twoWayMapping">
       
  2107 		<xsd:annotation><xsd:documentation>
       
  2108 		Map a set of boolean properties to an expression in an array element.
       
  2109 		</xsd:documentation></xsd:annotation>	
       
  2110 		<xsd:complexType>
       
  2111 			<xsd:complexContent>
       
  2112 				<xsd:extension base="mappingBitmaskType"/>
       
  2113 			</xsd:complexContent>
       
  2114 		</xsd:complexType>
       
  2115 	</xsd:element>
       
  2116 	<!-- no mapArrayElement: no sub-arrays! -->
       
  2117 	
       
  2118 	<!-- added post 1.2 -->
       
  2119 	<xsd:element name="mapElementFromType" substitutionGroup="twoWayMapping">
       
  2120 		<xsd:annotation><xsd:documentation>
       
  2121 		Map RSS from the type declaration attached to the current element.
       
  2122 		You may need to use &lt;mapProperty&gt; to descend into a child of the current
       
  2123 		element for this to work.
       
  2124 		</xsd:documentation></xsd:annotation>
       
  2125 		<xsd:complexType>
       
  2126 			<xsd:complexContent>
       
  2127 				<xsd:extension base="twoWayMappingType">
       
  2128 					<xsd:attribute name="typeId" type="xsd:string" use="optional">
       
  2129 						<xsd:annotation><xsd:documentation>
       
  2130 					This attribute tells which of a set of type mappings to use
       
  2131 					from the given type (as named in the id="..." attributes on
       
  2132 					the mapXXXType children of sourceTypeMapping).   
       
  2133 						</xsd:documentation></xsd:annotation>	
       
  2134 					</xsd:attribute>
       
  2135 					
       
  2136 				</xsd:extension>
       
  2137 			</xsd:complexContent>
       
  2138 		</xsd:complexType>
       
  2139 			
       
  2140 	</xsd:element>
       
  2141 
       
  2142 	<!-- added post 1.2 -->
       
  2143 	<xsd:element name="mapIntoProperty" substitutionGroup="twoWayMapping">
       
  2144 		<xsd:annotation><xsd:documentation>
       
  2145 		Delve into a property path without generating any resources.
       
  2146 		</xsd:documentation></xsd:annotation>	
       
  2147 		<xsd:complexType>
       
  2148 			<xsd:complexContent>
       
  2149 				<xsd:extension base="twoWayMappingType">
       
  2150 					<xsd:sequence>
       
  2151 						<xsd:element ref="twoWayMapping"/>
       
  2152 					</xsd:sequence>
       
  2153 					&MapPropertyAttribute;
       
  2154 				</xsd:extension>
       
  2155 				
       
  2156 			</xsd:complexContent>
       
  2157 		</xsd:complexType>
       
  2158 	</xsd:element>
       
  2159 	
       
  2160 	<xsd:element name="sourceMapping">
       
  2161 		<xsd:annotation>
       
  2162 			<xsd:documentation>
       
  2163 The sourceMapping element defines a particular style of source generation
       
  2164 which consists of automatic generation of source by structurally
       
  2165 mapping a component instance to a source definition.  
       
  2166 			</xsd:documentation>
       
  2167 		</xsd:annotation>
       
  2168 		<xsd:complexType>
       
  2169 			<xsd:sequence>
       
  2170 				<xsd:choice maxOccurs="unbounded" minOccurs="0">
       
  2171 					<xsd:element ref="mapResource"/>
       
  2172 					<xsd:element ref="select"/>
       
  2173 				</xsd:choice>
       
  2174 			</xsd:sequence>
       
  2175 		</xsd:complexType>
       
  2176 	</xsd:element>
       
  2177 	
       
  2178 	<xsd:simpleType name="standaloneType">
       
  2179 		<xsd:annotation><xsd:documentation>
       
  2180 		The selector for controlling standalone resource mapping.
       
  2181 		</xsd:documentation></xsd:annotation>
       
  2182 		<xsd:restriction base="xsd:string">
       
  2183 			<xsd:enumeration value="false">
       
  2184 				<xsd:annotation><xsd:documentation>
       
  2185 				Deprecated value corresponding to "default".
       
  2186 				</xsd:documentation></xsd:annotation>
       
  2187 			</xsd:enumeration>
       
  2188 			<xsd:enumeration value="true">
       
  2189 				<xsd:annotation><xsd:documentation>
       
  2190 				Depecated value corresponding to "always".
       
  2191 				</xsd:documentation></xsd:annotation>
       
  2192 			</xsd:enumeration>
       
  2193 			<xsd:enumeration value="never">
       
  2194 				<xsd:annotation><xsd:documentation>
       
  2195 				Never emit the resource by itself.  Only emit it if another resource
       
  2196 				references it.  By using this, a component may generate two forms of
       
  2197 				resource (with different resource ids) and let a container or reference
       
  2198 				select which resource it wants, without also generating the unused variant.
       
  2199 				</xsd:documentation></xsd:annotation>
       
  2200 			</xsd:enumeration>
       
  2201 			<xsd:enumeration value="default">
       
  2202 				<xsd:annotation><xsd:documentation>
       
  2203 				Emit the resource by itself if it is not generated as an expression or
       
  2204 				by a LINK or LLINK.
       
  2205 				</xsd:documentation></xsd:annotation>
       
  2206 			</xsd:enumeration>
       
  2207 			<xsd:enumeration value="always">
       
  2208 				<xsd:annotation><xsd:documentation>
       
  2209 				Always emit the resource by itself, even if already generated as an expression.
       
  2210 				</xsd:documentation></xsd:annotation>
       
  2211 			</xsd:enumeration>
       
  2212 		</xsd:restriction>
       
  2213 	</xsd:simpleType>
       
  2214 	
       
  2215 	<xsd:element name="mapResource">
       
  2216 		<xsd:annotation><xsd:documentation>
       
  2217 		Map an instance to a RESOURCE.
       
  2218 		</xsd:documentation></xsd:annotation>	
       
  2219 		<xsd:complexType>
       
  2220 			<xsd:complexContent>
       
  2221 				<xsd:extension base="mappingResourceType">
       
  2222 					<xsd:attribute default="false" name="unnamed" type="xsd:boolean" use="optional">
       
  2223 						<xsd:annotation><xsd:documentation>
       
  2224 						This tells whether to emit the resource without a name
       
  2225 						</xsd:documentation></xsd:annotation>	
       
  2226 					</xsd:attribute>
       
  2227 					<xsd:attribute default="default" name="standalone" type="standaloneType" use="optional">
       
  2228 						<xsd:annotation><xsd:documentation>
       
  2229 						This tells whether the resource must be emitted as a standalone resource statement (always),
       
  2230 						regardless of whether it is also generated as a resource expression, or whether it
       
  2231 						will never be emitted unless referenced by another resource (never).  The default behavior
       
  2232 						is to emit it if not generated as an expression.
       
  2233 						</xsd:documentation></xsd:annotation>	
       
  2234 					</xsd:attribute>
       
  2235 					<xsd:attribute name="baseName" type="xsd:string" use="optional">
       
  2236 						<xsd:annotation><xsd:documentation>
       
  2237 						Force the base name of the resource.  If unspecified, resources are
       
  2238 						named after the instance and member or element being mapped.
       
  2239 						</xsd:documentation></xsd:annotation>	
       
  2240 					</xsd:attribute>
       
  2241 					<xsd:attribute name="rssFile" type="xsd:string" use="optional">
       
  2242 						<xsd:annotation><xsd:documentation>
       
  2243 						Force the RSS filename (but not directory).  This is used to redirect
       
  2244 						resources to a top-level RSS file.
       
  2245 						</xsd:documentation></xsd:annotation>	
       
  2246 					</xsd:attribute>
       
  2247 				</xsd:extension>
       
  2248 			</xsd:complexContent>
       
  2249 		</xsd:complexType>
       
  2250 	</xsd:element>
       
  2251 
       
  2252 	<!-- added post 1.2 -->
       
  2253 	<xsd:element name="sourceTypeMapping">
       
  2254 		<xsd:annotation>
       
  2255 			<xsd:documentation>
       
  2256 The sourceTypeMapping element mirrors sourceMapping but provides stored source
       
  2257 mapping data for use by compound or enum types.  
       
  2258 			</xsd:documentation>
       
  2259 		</xsd:annotation>
       
  2260 		<xsd:complexType>
       
  2261 			<xsd:sequence>
       
  2262 				<xsd:choice maxOccurs="unbounded" minOccurs="0">
       
  2263 					<xsd:element ref="mapResourceType"/>
       
  2264 					<xsd:element ref="mapEnumType"/>
       
  2265 					<xsd:element ref="mapSimpleType"/>
       
  2266 					<xsd:element ref="mapFixedType"/>
       
  2267 					<xsd:element ref="mapBitmaskType"/>
       
  2268 					<xsd:element ref="mapIdentifierType"/>
       
  2269 					<xsd:element ref="mapReferenceType"/>
       
  2270 					<xsd:element ref="mapArrayType"/>
       
  2271 					<xsd:element ref="select"/>
       
  2272 				</xsd:choice>
       
  2273 			</xsd:sequence>
       
  2274 		</xsd:complexType>
       
  2275 	</xsd:element>
       
  2276 	
       
  2277 </xsd:schema>