summaryrefslogtreecommitdiffstats
path: root/Schemas/ConfigurableDomain.xsd
blob: 868319269e66e8c134a6cc4796b446386f1000db (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
<?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:sequence>
			<xs:group ref="ParameterBlockGroup"/>
		</xs:sequence>
	</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:choice>
			<xs:element name="BitParameter" type="IntegerParameterType"/>
			<xs:group ref="ComponentGroup"/>
		</xs:choice>
		<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="ConfigurableDomain" type="ConfigurableDomainType"/>
</xs:schema>