1<?xml version="1.0" encoding="UTF-8"?> 2<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> 3 <xs:attributeGroup name="Nameable"> 4 <xs:attribute name="Name" type="xs:NMTOKEN" use="required"/> 5 <xs:attribute name="Description" type="xs:string" use="optional"/> 6 </xs:attributeGroup> 7 <xs:attributeGroup name="TypedNameable"> 8 <xs:attributeGroup ref="Nameable"/> 9 <xs:attribute name="Type" type="xs:NMTOKEN" use="required"/> 10 </xs:attributeGroup> 11 <xs:complexType name="ComponentInstance"> 12 <xs:attributeGroup ref="TypedNameable"/> 13 <xs:attributeGroup ref="ArrayLengthAttribute"/> 14 <xs:attribute name="Mapping" use="optional" type="xs:string"/> 15 </xs:complexType> 16 <xs:simpleType name="SizeType"> 17 <xs:restriction base="xs:positiveInteger"> 18 <xs:pattern value="8|16|32"/> 19 </xs:restriction> 20 </xs:simpleType> 21 <xs:simpleType name="SizeType64"> 22 <xs:restriction base="xs:positiveInteger"> 23 <xs:pattern value="8|16|32|64"/> 24 </xs:restriction> 25 </xs:simpleType> 26 <xs:attributeGroup name="IntegerParameterAttributes"> 27 <xs:attribute name="Size" type="SizeType" use="required"/> 28 <xs:attribute name="Min" type="xs:integer" use="optional"/> 29 <xs:attribute name="Max" type="xs:integer" use="optional"/> 30 <xs:attribute name="Signed" type="xs:boolean" use="optional" default="false"/> 31 </xs:attributeGroup> 32 <xs:attributeGroup name="ArrayLengthAttribute"> 33 <xs:attribute name="ArrayLength" type="xs:nonNegativeInteger" use="optional" default="0"/> 34 </xs:attributeGroup> 35 <xs:complexType name="Adaptation"> 36 <xs:attribute name="Offset" type="xs:integer" default="0"/> 37 </xs:complexType> 38 <xs:complexType name="LinearAdaptationType"> 39 <xs:complexContent> 40 <xs:extension base="Adaptation"> 41 <xs:attribute name="SlopeNumerator" type="xs:double" default="1"/> 42 <xs:attribute name="SlopeDenominator" type="xs:double" default="1"/> 43 </xs:extension> 44 </xs:complexContent> 45 </xs:complexType> 46 <xs:element name="LinearAdaptation" type="LinearAdaptationType"/> 47 <xs:element name="LogarithmicAdaptation"> 48 <xs:complexType> 49 <xs:complexContent> 50 <xs:extension base="LinearAdaptationType"> 51 <xs:attribute name="LogarithmBase" type="xs:double" default="10"/> 52 <xs:attribute name="FloorValue" type="xs:double" default="-INF"/> 53 </xs:extension> 54 </xs:complexContent> 55 </xs:complexType> 56 </xs:element> 57 <xs:complexType name="Parameter" abstract="true"> 58 <xs:attributeGroup ref="Nameable"/> 59 <xs:attribute name="Mapping" type="xs:string" use="optional"/> 60 <xs:attributeGroup ref="ArrayLengthAttribute"/> 61 </xs:complexType> 62 <xs:element name="BooleanParameter"> 63 <xs:complexType> 64 <xs:complexContent> 65 <xs:extension base="Parameter"> 66 <xs:attribute name="Size" fixed="8" type="SizeType"/> 67 </xs:extension> 68 </xs:complexContent> 69 </xs:complexType> 70 </xs:element> 71 <xs:complexType name="IntegerParameterType"> 72 <xs:complexContent> 73 <xs:extension base="Parameter"> 74 <xs:choice minOccurs="0"> 75 <xs:element ref="LinearAdaptation"/> 76 <xs:element ref="LogarithmicAdaptation"/> 77 </xs:choice> 78 <xs:attributeGroup ref="IntegerParameterAttributes"/> 79 <xs:attribute name="Unit" type="xs:token" use="optional"/> 80 </xs:extension> 81 </xs:complexContent> 82 </xs:complexType> 83 <xs:element name="IntegerParameter" type="IntegerParameterType"/> 84 <xs:complexType name="EnumParameterType"> 85 <xs:complexContent> 86 <xs:extension base="Parameter"> 87 <xs:sequence> 88 <xs:element name="ValuePair" maxOccurs="unbounded"> 89 <xs:complexType> 90 <xs:attribute name="Literal" type="xs:string" use="required"/> 91 <xs:attribute name="Numerical" use="required"> 92 <xs:simpleType> 93 <xs:restriction base="xs:string"> 94 <xs:pattern value="0|[+-]?[1-9][0-9]*"/> 95 <xs:pattern value="0x[0-9a-fA-F]+"/> 96 </xs:restriction> 97 </xs:simpleType> 98 </xs:attribute> 99 </xs:complexType> 100 </xs:element> 101 </xs:sequence> 102 <xs:attribute name="Size" type="SizeType" use="required"/> 103 </xs:extension> 104 </xs:complexContent> 105 </xs:complexType> 106 <xs:element name="EnumParameter" type="EnumParameterType"> 107 <xs:unique name="LiteralUniqueness"> 108 <xs:selector xpath="ValuePair"/> 109 <xs:field xpath="@Literal"/> 110 </xs:unique> 111 <xs:unique name="NumericalUniqueness"> 112 <xs:selector xpath="ValuePair"/> 113 <xs:field xpath="@Numerical"/> 114 </xs:unique> 115 </xs:element> 116 <xs:simpleType name="PointBound"> 117 <xs:restriction base="xs:string"> 118 <xs:pattern value="(0|[+-]?0\.[0-9]+|(([+-]?[1-9][0-9]*)(\.[0-9]+)?))([Ee][+-]?[0-9]+)?"/> 119 </xs:restriction> 120 </xs:simpleType> 121 <xs:complexType name="PointParameterType"> 122 <xs:complexContent> 123 <xs:extension base="Parameter"> 124 <xs:attribute name="Unit" type="xs:token" use="optional"/> 125 </xs:extension> 126 </xs:complexContent> 127 </xs:complexType> 128 <xs:complexType name="FixedPointParameterType"> 129 <xs:complexContent> 130 <xs:extension base="PointParameterType"> 131 <xs:attribute name="Size" type="SizeType" use="required"/> 132 <xs:attribute name="Integral" type="xs:nonNegativeInteger" use="required"/> 133 <xs:attribute name="Fractional" type="xs:nonNegativeInteger" use="required"/> 134 </xs:extension> 135 </xs:complexContent> 136 </xs:complexType> 137 <xs:element name="FixedPointParameter" type="FixedPointParameterType"/> 138 <xs:complexType name="FloatingPointParameterType"> 139 <xs:complexContent> 140 <xs:extension base="PointParameterType"> 141 <xs:attribute name="Size" fixed="32" type="SizeType"/> 142 <xs:attribute name="Min" type="PointBound" use="optional"/> 143 <xs:attribute name="Max" type="PointBound" use="optional"/> 144 </xs:extension> 145 </xs:complexContent> 146 </xs:complexType> 147 <xs:element name="FloatingPointParameter" type="FloatingPointParameterType"/> 148 <xs:complexType name="BitParameterType"> 149 <xs:attributeGroup ref="Nameable"/> 150 <xs:attribute name="Size" use="required"> 151 <xs:simpleType> 152 <xs:restriction base="xs:positiveInteger"> 153 <xs:maxInclusive value="64"/> 154 </xs:restriction> 155 </xs:simpleType> 156 </xs:attribute> 157 <xs:attribute name="Pos" use="required"> 158 <xs:simpleType> 159 <xs:restriction base="xs:nonNegativeInteger"> 160 <xs:maxInclusive value="63"/> 161 </xs:restriction> 162 </xs:simpleType> 163 </xs:attribute> 164 <xs:attribute name="Max" type="xs:integer" use="optional"/> 165 </xs:complexType> 166 <xs:element name="BitParameterBlock"> 167 <xs:complexType> 168 <xs:sequence> 169 <xs:element name="BitParameter" type="BitParameterType" maxOccurs="unbounded"/> 170 </xs:sequence> 171 <xs:attributeGroup ref="Nameable"/> 172 <xs:attribute name="Size" type="SizeType64" use="required"/> 173 <xs:attribute name="Mapping" type="xs:string" use="optional"/> 174 </xs:complexType> 175 <xs:unique name="BitParameterBlockSubElementsUniqueness"> 176 <xs:selector xpath="*"/> 177 <xs:field xpath="@Name"/> 178 </xs:unique> 179 </xs:element> 180 <xs:element name="StringParameter"> 181 <xs:complexType> 182 <xs:attributeGroup ref="Nameable"/> 183 <xs:attribute name="Mapping" type="xs:string" use="optional"/> 184 <xs:attribute name="MaxLength" type="xs:nonNegativeInteger" use="required"/> 185 </xs:complexType> 186 </xs:element> 187 <xs:group name="ParameterBlockGroup"> 188 <xs:choice> 189 <xs:element ref="BooleanParameter"/> 190 <xs:element ref="IntegerParameter"/> 191 <xs:element ref="EnumParameter"/> 192 <xs:element ref="FixedPointParameter"/> 193 <xs:element ref="FloatingPointParameter"/> 194 <xs:element ref="BitParameterBlock"/> 195 <xs:element ref="StringParameter"/> 196 <xs:element name="Component" type="ComponentInstance"/> 197 <xs:element name="ParameterBlock" type="ParameterBlockType"> 198 <xs:unique name="ParameterBlockSubElementsUniqueness"> 199 <xs:selector xpath="*"/> 200 <xs:field xpath="@Name"/> 201 </xs:unique> 202 </xs:element> 203 </xs:choice> 204 </xs:group> 205 <xs:complexType name="ParameterBlockType"> 206 <xs:sequence> 207 <xs:group ref="ParameterBlockGroup" maxOccurs="unbounded"/> 208 </xs:sequence> 209 <xs:attributeGroup ref="Nameable"/> 210 <xs:attributeGroup ref="ArrayLengthAttribute"/> 211 <xs:attribute name="Mapping" type="xs:string" use="optional"/> 212 </xs:complexType> 213</xs:schema> 214