diff options
| author | Patrick Benavoli <patrickx.benavoli@intel.com> | 2011-11-07 20:32:51 +0100 | 
|---|---|---|
| committer | David Wagner <david.wagner@intel.com> | 2014-02-10 17:14:59 +0100 | 
| commit | 95ac034b72580306e9246f7efa3f7ba709a02183 (patch) | |
| tree | 9dc36b32d1ff881132b3424d761aa3b06c06717d /Schemas | |
| parent | 99041c5b5ed90dd66c65fa1903a74f5f3f9a8fdc (diff) | |
| download | external_parameter-framework-95ac034b72580306e9246f7efa3f7ba709a02183.zip external_parameter-framework-95ac034b72580306e9246f7efa3f7ba709a02183.tar.gz external_parameter-framework-95ac034b72580306e9246f7efa3f7ba709a02183.tar.bz2  | |
PFW: file organization
BZ: 12888, 12925, 13285, 13289
- Removed hard coded paths from source files
- Separated test related resources and programs into a test subfolder
- Schemas folder at root containing the schemas, a symbolic link to that folder
might be a good way to enable schema aware editing
- Now global configuration file path is passed from the hosting platform
instead of the class name.
- Global configuration path contains only the relevant class related
descriptions (plugin paths, structure, settings)
- .user environment file eclipsed through git-ignore (and removed from
projects)
- Removed system class configuration obsolete files
Change-Id: I99b783ba22bca05238a760b2127939a91e976be8
Signed-off-by: Patrick Benavoli <patrickx.benavoli@intel.com>
Reviewed-on: http://android.intel.com:8080/25404
Reviewed-by: Barthes, FabienX <fabienx.barthes@intel.com>
Tested-by: Barthes, FabienX <fabienx.barthes@intel.com>
Reviewed-by: buildbot <buildbot@intel.com>
Tested-by: buildbot <buildbot@intel.com>
Diffstat (limited to 'Schemas')
| -rw-r--r-- | Schemas/ConfigurableDomains.xsd | 147 | ||||
| -rw-r--r-- | Schemas/FileIncluder.xsd | 15 | ||||
| -rw-r--r-- | Schemas/Parameter.xsd | 149 | ||||
| -rw-r--r-- | Schemas/ParameterFrameworkConfiguration.xsd | 32 | ||||
| -rw-r--r-- | Schemas/ParameterSettings.xsd | 92 | ||||
| -rw-r--r-- | Schemas/Subsystem.xsd | 82 | ||||
| -rw-r--r-- | Schemas/SystemClass.xsd | 17 | 
7 files changed, 534 insertions, 0 deletions
diff --git a/Schemas/ConfigurableDomains.xsd b/Schemas/ConfigurableDomains.xsd new file mode 100644 index 0000000..d306c64 --- /dev/null +++ b/Schemas/ConfigurableDomains.xsd @@ -0,0 +1,147 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> +	<xs:include schemaLocation="ParameterSettings.xsd"/> +	<xs:complexType name="SelectionCriterionRuleType"> +		<xs:attribute name="SelectionCriterion" type="xs:NMTOKEN" use="required"/> +        <xs:attribute name="MatchesWhen" use="required"> +            <xs:simpleType> +                <xs:restriction base="xs:NMTOKEN"> +                	<xs:enumeration value="Is"/> +                	<xs:enumeration value="IsNot"/> +                	<xs:enumeration value="Includes"/> +                	<xs:enumeration value="Excludes"/> +                </xs:restriction> +            </xs:simpleType> +        </xs:attribute> +        <xs:attribute name="Value" use="required"/> +    </xs:complexType> +    <xs:group name="RuleGroup"> +        <xs:choice> +        	<xs:element name="CompoundRule" type="CompoundRuleType"/> +            <xs:element name="SelectionCriterionRule" type="SelectionCriterionRuleType"/> +        </xs:choice> +    </xs:group> +	<xs:complexType name="CompoundRuleType"> +        <xs:sequence> +            <xs:group ref="RuleGroup" minOccurs="0" maxOccurs="unbounded"/> +        </xs:sequence> +        <xs:attribute name="Type"> +            <xs:simpleType> +                <xs:restriction base="xs:NMTOKEN"> +                    <xs:enumeration value="Any"/> +                    <xs:enumeration value="All"/> +                </xs:restriction> +            </xs:simpleType> +        </xs:attribute> +    </xs:complexType> +    <xs:complexType name="ConfigurationsType"> +        <xs:sequence> +            <xs:element maxOccurs="unbounded" name="Configuration"> +                <xs:complexType> +                    <xs:sequence> +                    	<xs:element name="CompoundRule" type="CompoundRuleType" minOccurs="0" maxOccurs="1"/> +                    </xs:sequence> +                    <xs:attribute name="Name" use="required" type="xs:NCName"/> +                </xs:complexType> +            </xs:element> +        </xs:sequence> +    </xs:complexType> +	<xs:group name="ComponentGroup"> +		<xs:choice> +			<xs:group ref="ParameterBlockGroup"/> +			<xs:element name="Component" type="ComponentType"/> +		</xs:choice> +	</xs:group> +	<xs:complexType name="ComponentType"> +		<xs:sequence> +			<xs:choice> +				<xs:group ref="ComponentGroup" maxOccurs="unbounded"/> +				<xs:element name="Subsystem" type="ComponentType" maxOccurs="unbounded"/> +			</xs:choice> +		</xs:sequence> +		<xs:attribute name="Name" use="required" type="xs:NCName"/> +	</xs:complexType> +	<xs:complexType name="ConfigurableElementsType"> +		<xs:sequence> +			<xs:element maxOccurs="unbounded" minOccurs="0" name="ConfigurableElement"> +				<xs:complexType> +					<xs:attribute name="Path" use="required"> +						<xs:simpleType> +							<xs:restriction base="xs:anyURI"> +								<xs:pattern value="/.*[^/]"/> +							</xs:restriction> +						</xs:simpleType> +					</xs:attribute>               +				</xs:complexType> +			</xs:element> +		</xs:sequence> +	</xs:complexType> +	<xs:complexType name="ConfigurableElementSettingsType"> +		<xs:group ref="ComponentGroup"/> +		<xs:attribute name="Path" use="required"> +			<xs:simpleType> +				<xs:restriction base="xs:anyURI"> +					<xs:pattern value="/.*[^/]"/> +				</xs:restriction> +			</xs:simpleType> +		</xs:attribute>               +	</xs:complexType> +	<xs:complexType name="SettingsType"> +		<xs:sequence> +			<xs:element maxOccurs="unbounded" minOccurs="0" name="Configuration"> +				<xs:complexType> +					<xs:sequence> +						<xs:element name="ConfigurableElement" minOccurs="0" maxOccurs="unbounded" type="ConfigurableElementSettingsType"/> +					</xs:sequence> +					<xs:attribute name="Name" use="required" type="xs:NCName"/> +				</xs:complexType> +				<xs:unique name="ConfigurableElementUniqueness"> +					<xs:selector xpath="ConfigurableElement"/> +					<xs:field xpath="@Path"/> +				</xs:unique> +			</xs:element> +		</xs:sequence> +	</xs:complexType> +	<xs:complexType name="ConfigurableDomainType"> +        <xs:sequence> +            <xs:element name="Configurations" type="ConfigurationsType"/> +        	<xs:element name="ConfigurableElements" type="ConfigurableElementsType"/> +        	<xs:element name="Settings" type="SettingsType" minOccurs="0"/> +        </xs:sequence> +        <xs:attribute name="Name" use="required" type="xs:NCName"/> +		<xs:attribute name="SequenceAware" use="optional" type="xs:boolean" default="false"/> +    </xs:complexType> +    <xs:element name="ConfigurableDomains"> +        <xs:complexType> +            <xs:sequence> +                <xs:element maxOccurs="unbounded" name="ConfigurableDomain" type="ConfigurableDomainType"> +                	<xs:key name="ConfigurableElementKey"> +                		<xs:selector xpath="ConfigurableElements/ConfigurableElement"/> +                		<xs:field xpath="@Path"/> +                	</xs:key> +                	<xs:keyref refer="ConfigurableElementKey" name="ConfigurableDomainReference"> +                		<xs:selector xpath="Settings/Configuration/ConfigurableElement"/> +                		<xs:field xpath="@Path"/> +                	</xs:keyref> +                	<xs:key name="ConfigurationKey"> +                		<xs:selector xpath="Configurations/Configuration"/> +                		<xs:field xpath="@Name"/> +                	</xs:key> +                	<xs:keyref refer="ConfigurationKey" name="ConfigurationReference2"> +                		<xs:selector xpath="ConfigurableElements/ConfigurableElement/Configuration"/> +                		<xs:field xpath="@Name"/> +                	</xs:keyref> +                	<xs:keyref refer="ConfigurationKey" name="ConfigurationReference"> +                		<xs:selector xpath="Settings/Configuration"/> +                		<xs:field xpath="@Name"/> +                	</xs:keyref>             	 +                </xs:element> +            </xs:sequence> +            <xs:attribute name="SystemClassName" use="required" type="xs:NCName"/> +        </xs:complexType> +    	<xs:unique name="ConfigurableDomainUniqueness"> +    		<xs:selector xpath="ConfigurableDomain"/> +    		<xs:field xpath="@Name"/> +    	</xs:unique> +    </xs:element> +</xs:schema> diff --git a/Schemas/FileIncluder.xsd b/Schemas/FileIncluder.xsd new file mode 100644 index 0000000..3278aea --- /dev/null +++ b/Schemas/FileIncluder.xsd @@ -0,0 +1,15 @@ +<?xml version="1.0" encoding="UTF-8"?>
 +<!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by Samuel Gravez (Siemens VDO S.A.S.) -->
 +<xs:schema  xmlns:html="http://www.w3.org/1999/xhtml" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
 +	<xs:complexType name="FileIncluderType">
 +		<xs:annotation>
 +			<xs:documentation>Element type used to import a root element from a file.</xs:documentation>
 +		</xs:annotation>
 +		<xs:attribute name="Path" type="xs:anyURI" use="required">
 +			<xs:annotation>
 +				<xs:documentation>Path to the file to import.
 +This path may be absolute or relative to the path of the includer file.</xs:documentation>
 +			</xs:annotation>
 +		</xs:attribute>
 +	</xs:complexType>
 +</xs:schema>
 diff --git a/Schemas/Parameter.xsd b/Schemas/Parameter.xsd new file mode 100644 index 0000000..17d256a --- /dev/null +++ b/Schemas/Parameter.xsd @@ -0,0 +1,149 @@ +<?xml version="1.0" encoding="UTF-8"?>
 +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
 +	<xs:attributeGroup name="Nameable">
 +		<xs:attribute name="Name" type="xs:NCName" use="required"/>
 +		<xs:attribute name="Description" type="xs:string" use="optional"/>
 +	</xs:attributeGroup>
 +	<xs:simpleType name="SizeType">
 +		<xs:restriction base="xs:positiveInteger">
 +			<xs:pattern value="8|16|32"/>
 +		</xs:restriction>
 +	</xs:simpleType>
 +	<xs:attributeGroup name="IntegerParameterAttributes">
 +		<xs:attribute name="Size" type="SizeType" use="required"/>
 +		<xs:attribute name="Min" type="xs:integer" use="optional"/>
 +		<xs:attribute name="Max" type="xs:integer" use="optional"/>
 +		<xs:attribute name="Signed" type="xs:boolean" use="optional" default="false"/>
 +	</xs:attributeGroup>
 +	<xs:attributeGroup name="ArrayLengthAttribute">
 +		<xs:attribute name="ArrayLength" type="xs:nonNegativeInteger" use="optional" default="0"/>
 +	</xs:attributeGroup>
 +	<xs:complexType name="Parameter" abstract="true">
 +		<xs:attributeGroup ref="Nameable"/>
 +		<xs:attribute name="Mapping" type="xs:string" use="optional"/>
 +		<xs:attributeGroup ref="ArrayLengthAttribute"/>
 +	</xs:complexType>
 +	<xs:element name="BooleanParameter">
 +		<xs:complexType>
 +			<xs:complexContent>
 +				<xs:extension base="Parameter">
 +					<xs:attribute name="Size" fixed="8"/>
 +				</xs:extension>
 +			</xs:complexContent>
 +		</xs:complexType>
 +	</xs:element>
 +	<xs:complexType name="IntegerParameterType">
 +		<xs:complexContent>
 +			<xs:extension base="Parameter">
 +				<xs:attributeGroup ref="IntegerParameterAttributes"/>
 +				<xs:attribute name="Unit" type="xs:token" use="optional"/>
 +			</xs:extension>
 +		</xs:complexContent>
 +	</xs:complexType>
 +	<xs:element name="IntegerParameter" type="IntegerParameterType"/>
 +	<xs:complexType name="EnumParameterType">
 +		<xs:complexContent>
 +			<xs:extension base="Parameter">
 +				<xs:sequence>
 +					<xs:element name="ValuePair" maxOccurs="unbounded">
 +						<xs:complexType>
 +							<xs:attribute name="Literal" type="xs:NMTOKEN" use="required"/>
 +							<xs:attribute name="Numerical" use="required">					
 +								<xs:simpleType>
 +									<xs:restriction base="xs:string">
 +										<xs:pattern value="0|[+-]?[1-9][0-9]*"/>
 +										<xs:pattern value="0x[0-9a-fA-F]+"/>
 +									</xs:restriction>
 +								</xs:simpleType>
 +							</xs:attribute>
 +						</xs:complexType>
 +					</xs:element>
 +				</xs:sequence>
 +				<xs:attribute name="Size" type="SizeType" use="required"/>
 +			</xs:extension>
 +		</xs:complexContent>
 +	</xs:complexType>
 +	<xs:element name="EnumParameter" type="EnumParameterType">
 +		<xs:unique name="LiteralUniqueness">
 +			<xs:selector xpath="ValuePair"/>
 +			<xs:field xpath="@Literal"/>
 +		</xs:unique>
 +		<xs:unique name="NumericalUniqueness">
 +			<xs:selector xpath="ValuePair"/>
 +			<xs:field xpath="@Numerical"/>
 +		</xs:unique>		
 +	</xs:element>
 +	<xs:complexType name="FixedPointParameterType">
 +		<xs:complexContent>
 +			<xs:extension base="Parameter">
 +				<xs:attribute name="Size" type="SizeType" use="required"/>
 +				<xs:attribute name="Integral" type="xs:nonNegativeInteger" use="required"/>
 +				<xs:attribute name="Fractional" type="xs:nonNegativeInteger" use="required"/>
 +				<xs:attribute name="Unit" type="xs:token" use="optional"/>
 +			</xs:extension>
 +		</xs:complexContent>
 +	</xs:complexType>
 +	<xs:element name="FixedPointParameter" type="FixedPointParameterType"/>
 +	<xs:complexType name="BitParameterType">
 +		<xs:attributeGroup ref="Nameable"/>
 +		<xs:attribute name="Size" use="required">
 +			<xs:simpleType>
 +				<xs:restriction base="xs:positiveInteger">
 +					<xs:maxInclusive value="32"/>
 +				</xs:restriction>
 +			</xs:simpleType>
 +		</xs:attribute>
 +		<xs:attribute name="Pos" use="required">
 +			<xs:simpleType>
 +				<xs:restriction base="xs:nonNegativeInteger">
 +					<xs:maxInclusive value="31"/>
 +				</xs:restriction>
 +			</xs:simpleType>
 +		</xs:attribute>
 +	</xs:complexType>
 +	<xs:element name="BitParameterBlock">
 +		<xs:complexType>
 +			<xs:sequence>
 +				<xs:element name="BitParameter" type="BitParameterType" maxOccurs="unbounded"/>
 +			</xs:sequence>
 +			<xs:attributeGroup ref="Nameable"/>
 +			<xs:attribute name="Size" type="SizeType" use="required"/>
 +			<xs:attribute name="Mapping" type="xs:string" use="optional"/>
 +		</xs:complexType>
 +		<xs:unique name="BitParameterBlockSubElementsUniqueness">
 +			<xs:selector xpath="*"/>
 +			<xs:field xpath="@Name"/>
 +		</xs:unique>
 +	</xs:element>
 +	<xs:element name="StringParameter">
 +		<xs:complexType>
 +			<xs:attributeGroup ref="Nameable"/>
 +			<xs:attribute name="Mapping" type="xs:string" use="optional"/>
 +			<xs:attribute name="MaxLength" type="xs:nonNegativeInteger" use="required"/>
 +		</xs:complexType>
 +	</xs:element>
 +	<xs:group name="ParameterBlockGroup">
 +		<xs:choice>
 +			<xs:element ref="BooleanParameter"/>
 +			<xs:element ref="IntegerParameter"/>
 +			<xs:element ref="EnumParameter"/>
 +			<xs:element ref="FixedPointParameter"/>
 +			<xs:element ref="BitParameterBlock"/>
 +			<xs:element ref="StringParameter"/>
 +			<xs:element name="ParameterBlock" type="ParameterBlockType">
 +				<xs:unique name="ParameterBlockSubElementsUniqueness">
 +					<xs:selector xpath="*"/>
 +					<xs:field xpath="@Name"/>
 +				</xs:unique>
 +			</xs:element>
 +		</xs:choice>
 +	</xs:group>
 +	<xs:complexType name="ParameterBlockType">
 +		<xs:sequence>
 +			<xs:group ref="ParameterBlockGroup" maxOccurs="unbounded"/>
 +		</xs:sequence>
 +		<xs:attributeGroup ref="Nameable"/>
 +		<xs:attributeGroup ref="ArrayLengthAttribute"/>
 +		<xs:attribute name="Mapping" type="xs:string" use="optional"/>
 +	</xs:complexType>
 +</xs:schema>
 diff --git a/Schemas/ParameterFrameworkConfiguration.xsd b/Schemas/ParameterFrameworkConfiguration.xsd new file mode 100644 index 0000000..d84d108 --- /dev/null +++ b/Schemas/ParameterFrameworkConfiguration.xsd @@ -0,0 +1,32 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!--W3C Schema generated by XMLSpy v2011 sp1 (http://www.altova.com)--> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> +    <xs:complexType name="ConfigurationFilePath"> +        <xs:attribute name="Path" type="xs:anyURI" use="required"/> +    </xs:complexType> +	<xs:element name="SubsystemPluginFolders"> +        <xs:complexType> +            <xs:sequence> +                <xs:element name="PluginFolderLocation" type="ConfigurationFilePath" maxOccurs="unbounded"/> +            </xs:sequence> +        </xs:complexType> +    </xs:element> +    <xs:complexType name="SettingsConfigurationType"> +        <xs:sequence> +            <xs:element name="ConfigurableDomainsFileLocation" type="ConfigurationFilePath"/> +        	<xs:element name="BinarySettingsFileLocation" type="ConfigurationFilePath" minOccurs="0"/> +        </xs:sequence> +    </xs:complexType> +    <xs:element name="ParameterFrameworkConfiguration"> +        <xs:complexType> +            <xs:sequence> +            	<xs:element ref="SubsystemPluginFolders"/> +            	<xs:element name="StructureDescriptionFileLocation" type="ConfigurationFilePath"/> +            	<xs:element name="SettingsConfiguration" type="SettingsConfigurationType" minOccurs="0"/> +            </xs:sequence> +        	<xs:attribute name="SystemClassName" use="required" type="xs:NMTOKEN"/> +        	<xs:attribute name="ServerPort" use="required" type="xs:positiveInteger"/> +        	<xs:attribute name="TuningAllowed" use="required" type="xs:boolean"/> +        </xs:complexType> +    </xs:element> +</xs:schema> diff --git a/Schemas/ParameterSettings.xsd b/Schemas/ParameterSettings.xsd new file mode 100644 index 0000000..d0a14fe --- /dev/null +++ b/Schemas/ParameterSettings.xsd @@ -0,0 +1,92 @@ +<?xml version="1.0" encoding="UTF-8"?>
 +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
 +	<xs:complexType name="ParameterType" abstract="true">
 +		<xs:simpleContent>
 +			<xs:extension base="xs:string">
 +				<xs:attribute name="Name" type="xs:NMTOKEN" use="required"/>
 +				<xs:attribute name="ValueSpace" use="optional">
 +					<xs:simpleType>
 +						<xs:restriction base="xs:string">
 +							<xs:enumeration value="Raw"/>
 +							<xs:enumeration value="Real"/>
 +						</xs:restriction>
 +					</xs:simpleType>
 +				</xs:attribute>
 +			</xs:extension>
 +		</xs:simpleContent>
 +	</xs:complexType>
 +	<xs:complexType name="BooleanParameterType">
 +		<xs:simpleContent>
 +			<xs:restriction base="ParameterType">
 +				<xs:pattern value="([01][\s]*)+"/>
 +				<xs:pattern value="((0x0|0x1)[\s]*)+"/>
 +				<xs:attribute name="ValueSpace" use="prohibited"/>
 +			</xs:restriction>
 +		</xs:simpleContent>
 +	</xs:complexType>
 +	<xs:complexType name="IntegerParameterType">
 +		<xs:simpleContent>
 +			<xs:restriction base="ParameterType">
 +				<xs:pattern value="(0|[+-]?[1-9][0-9]*[\s]*)+"/>
 +				<xs:pattern value="(0x[0-9a-fA-F]+\s*)+"/>
 +				<xs:attribute name="ValueSpace" use="prohibited"/>
 +			</xs:restriction>
 +		</xs:simpleContent>
 +	</xs:complexType>
 +	<xs:complexType name="EnumParameterType">
 +		<xs:simpleContent>
 +			<xs:restriction base="ParameterType">
 +				<xs:attribute name="ValueSpace" use="prohibited"/>
 +			</xs:restriction>
 +		</xs:simpleContent>
 +	</xs:complexType>
 +	<xs:complexType name="FixedPointParameterType">
 +		<xs:simpleContent>
 +			<xs:restriction base="ParameterType">
 +				<xs:pattern value="((0|[+-]?[1-9][0-9]*)\s*)+"/>
 +				<xs:pattern value="(0\.0|[+-]?([1-9][0-9]*|0)(\.[0-9]+)?\s*)+"/>
 +				<xs:pattern value="(0x[0-9a-fA-F]+\s*)+"/>
 +			</xs:restriction>
 +		</xs:simpleContent>
 +	</xs:complexType>
 +	<xs:complexType name="BitParameterBlockType">
 +		<xs:sequence>
 +			<xs:element name="BitParameter" maxOccurs="unbounded" type="IntegerParameterType"/>
 +		</xs:sequence>
 +		<xs:attribute name="Name" type="xs:NMTOKEN" use="required"/>
 +	</xs:complexType>
 +	<xs:complexType name="StringParameterType">
 +		<xs:simpleContent>
 +			<xs:extension base="xs:string">
 +				<xs:attribute name="Name" type="xs:NMTOKEN" use="required"/>
 +			</xs:extension>
 +		</xs:simpleContent>
 +	</xs:complexType>
 +	<xs:group name="ParameterBlockGroup">
 +		<xs:choice>
 +			<xs:element name="BooleanParameter" type="BooleanParameterType"/>
 +			<xs:element name="IntegerParameter" type="IntegerParameterType"/>
 +			<xs:element name="EnumParameter" type="EnumParameterType"/>
 +			<xs:element name="FixedPointParameter" type="FixedPointParameterType"/>
 +			<xs:element name="BitParameterBlock" type="BitParameterBlockType">
 +				<xs:unique name="BitParameterBlockSubElementsUniqueness">
 +					<xs:selector xpath="*"/>
 +					<xs:field xpath="@Name"/>
 +				</xs:unique>
 +			</xs:element>
 +			<xs:element name="StringParameter" type="StringParameterType"/>
 +			<xs:element name="ParameterBlock" type="ParameterBlockType">
 +				<xs:unique name="ParameterBlockSubElementsUniqueness">
 +					<xs:selector xpath="*"/>
 +					<xs:field xpath="@Name"/>
 +				</xs:unique>
 +			</xs:element>
 +		</xs:choice>
 +	</xs:group>
 +	<xs:complexType name="ParameterBlockType">
 +		<xs:sequence>
 +			<xs:group ref="ParameterBlockGroup" maxOccurs="unbounded"/>
 +		</xs:sequence>
 +		<xs:attribute name="Name" type="xs:NMTOKEN" use="required"/>
 +	</xs:complexType>
 +</xs:schema>
 diff --git a/Schemas/Subsystem.xsd b/Schemas/Subsystem.xsd new file mode 100644 index 0000000..bd2e091 --- /dev/null +++ b/Schemas/Subsystem.xsd @@ -0,0 +1,82 @@ +<?xml version="1.0" encoding="UTF-8"?>
 +<!--W3C Schema generated by XMLSpy v2007 (http://www.altova.com)-->
 +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
 +	<xs:include schemaLocation="Parameter.xsd"/>
 +	<xs:attributeGroup name="TypedNameable">
 +		<xs:attributeGroup ref="Nameable"/>
 +		<xs:attribute name="Type" type="xs:NMTOKEN" use="required"/>
 +	</xs:attributeGroup>
 +	<xs:complexType name="ComponentInstance">
 +		<xs:attributeGroup ref="TypedNameable"/>
 +		<xs:attribute name="Mapping" use="optional"/>
 +	</xs:complexType>
 +	<xs:complexType name="ComponentType">
 +		<xs:sequence>
 +			<xs:choice maxOccurs="unbounded">
 +				<xs:group ref="ParameterBlockGroup"/>
 +				<xs:element name="Component" type="ComponentInstance"/>
 +			</xs:choice>
 +		</xs:sequence>
 +		<xs:attributeGroup ref="Nameable"/>
 +		<xs:attribute name="Extends" use="optional"/>
 +		<xs:attribute name="Mapping" use="optional"/>
 +	</xs:complexType>
 +	<xs:complexType name="SubsystemType">
 +		<xs:sequence>
 +			<xs:element name="ComponentLibrary">
 +				<xs:complexType>
 +					<xs:sequence>
 +						<xs:element name="ComponentType" type="ComponentType" minOccurs="0" maxOccurs="unbounded">
 +							<xs:unique name="ComponentTypeSubElementsUniqueness">
 +								<xs:selector xpath="*"/>
 +								<xs:field xpath="@Name"/>
 +							</xs:unique>
 +						</xs:element>
 +					</xs:sequence>
 +				</xs:complexType>
 +			</xs:element>
 +			<xs:element name="InstanceDefinition">
 +				<xs:complexType>
 +					<xs:sequence>
 +						<xs:choice maxOccurs="unbounded">
 +							<xs:group ref="ParameterBlockGroup"/>
 +							<xs:element name="Component" type="ComponentInstance"/>
 +						</xs:choice>
 +					</xs:sequence>
 +				</xs:complexType>
 +				<xs:unique name="InstanceDefintionSubElementsUniqueness">
 +					<xs:selector xpath="*"/>
 +					<xs:field xpath="@Name"/>
 +				</xs:unique>
 +			</xs:element>
 +		</xs:sequence>
 +		<xs:attributeGroup ref="Nameable"/>
 +		<xs:attribute name="Endianness" use="required">
 +			<xs:simpleType>
 +				<xs:restriction base="xs:NMTOKEN">
 +					<xs:enumeration value="Little"/>
 +					<xs:enumeration value="Big"/>
 +				</xs:restriction>
 +			</xs:simpleType>
 +		</xs:attribute>
 +		<xs:attribute name="Type" use="required"/>
 +	</xs:complexType>
 +	<xs:element name="Subsystem" type="SubsystemType">
 +		<xs:key name="ComponentTypeUniqueness">
 +			<xs:selector xpath="ComponentLibrary/ComponentType"/>
 +			<xs:field xpath="@Name"/>
 +		</xs:key>
 +		<xs:keyref name="InstanceDefinitionComponentTypeNotFound" refer="ComponentTypeUniqueness">
 +			<xs:selector xpath="InstanceDefinition/Component"/>
 +			<xs:field xpath="@Type"/>
 +		</xs:keyref>		
 +		<xs:keyref name="ComponentTypeNotFound" refer="ComponentTypeUniqueness">
 +			<xs:selector xpath="ComponentLibrary/ComponentType/Component"/>
 +			<xs:field xpath="@Type"/>
 +		</xs:keyref>		
 +		<!--xs:keyref name="ExtendedComponentTypeNotFound" refer="ComponentTypeUniqueness">
 +			<xs:selector xpath="ComponentLibrary/ComponentType"/>
 +			<xs:field xpath="@Extends"/>
 +		</xs:keyref-->		
 +	</xs:element>
 +</xs:schema>
 diff --git a/Schemas/SystemClass.xsd b/Schemas/SystemClass.xsd new file mode 100644 index 0000000..daf3cd7 --- /dev/null +++ b/Schemas/SystemClass.xsd @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?>
 +<!--W3C Schema generated by XMLSpy v2007 (http://www.altova.com)-->
 +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
 +	<xs:include schemaLocation="FileIncluder.xsd"/>
 +	<xs:include schemaLocation="Subsystem.xsd"/>
 +	<xs:element name="SystemClass">
 +		<xs:complexType>
 +			<xs:sequence>
 +				<xs:choice maxOccurs="unbounded">
 +					<xs:element name="SubsystemInclude" type="FileIncluderType"/>
 +					<xs:element ref="Subsystem"/>
 +				</xs:choice>
 +			</xs:sequence>
 +			<xs:attribute name="Name" type="xs:NMTOKEN" use="required"/>
 +		</xs:complexType>
 +	</xs:element>
 +</xs:schema>
  | 
