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