1<?xml version="1.0" encoding="UTF-8"?> 2<schema xmlns="http://www.w3.org/2001/XMLSchema" 3 targetNamespace="http://nouveau.freedesktop.org/" 4 xmlns:rng="http://nouveau.freedesktop.org/" 5 elementFormDefault="qualified"> 6 7 <annotation> 8 <documentation> 9 An updated version of the old rules.xml file from the 10 RivaTV project. Specifications by Pekka Paalanen, 11 preliminary attempt by KoalaBR, 12 first working version by Jakob Bornecrantz. 13 For specifications, see the file rules-ng-format.txt 14 in Nouveau CVS module 'rules-ng'. 15 </documentation> 16 <documentation>Version 0.1</documentation> 17 </annotation> 18 19 20 <!-- Elements --> 21 22 <element name="database" type="rng:databaseType" /> 23 <element name="import" type="rng:importType" /> 24 <element name="copyright" type="rng:copyrightType" /> 25 <element name="domain" type="rng:domainType" /> 26 <element name="array" type="rng:arrayType" /> 27 <element name="stripe" type="rng:stripeType" /> 28 <element name="reg64" type="rng:registerType" /> 29 <element name="reg32" type="rng:registerType" /> 30 <element name="bitset" type="rng:bitsetType" /> 31 <element name="bitfield" type="rng:bitfieldType" /> 32 <element name="enum" type="rng:enumType" /> 33 <element name="value" type="rng:valueType" /> 34 35 <!-- Copyright elements --> 36 <element name="author" type="rng:authorType" /> 37 <element name="nick" type="rng:nickType" /> 38 <element name="license" type="rng:docType" /> 39 40 <!-- Documentation elements --> 41 42 <!-- FIXME: allowed only one per parent element --> 43 <element name="brief" type="rng:briefType" /> 44 45 <element name="doc" type="rng:docType" /> 46 <element name="b" type="rng:textformatType" /> 47 <element name="i" type="rng:textformatType" /> 48 <element name="u" type="rng:textformatType" /> 49 <element name="code" type="rng:textcodeType" /> 50 <element name="ul" type="rng:listType" /> 51 <element name="ol" type="rng:listType" /> 52 <element name="li" type="rng:listitemType" /> 53 54 <!-- Copyright element types --> 55 56 <complexType name="authorType" mixed="true"> 57 <annotation> 58 <documentation> 59 register database author 60 </documentation> 61 </annotation> 62 <choice minOccurs="0" maxOccurs="unbounded"> 63 <element ref="rng:nick" /> 64 </choice> 65 <attribute name="name" type="string" use="required" /> 66 <attribute name="email" type="string" use="required" /> 67 </complexType> 68 69 <complexType name="nickType"> 70 <annotation> 71 <documentation>nickType</documentation> 72 </annotation> 73 <attribute name="name" type="string" use="required" /> 74 </complexType> 75 76 <!-- Database element types --> 77 78 <complexType name="databaseType"> 79 <annotation> 80 <documentation>databaseType</documentation> 81 </annotation> 82 <choice minOccurs="0" maxOccurs="unbounded"> 83 <group ref="rng:docGroup" /> 84 <group ref="rng:topGroup" /> 85 </choice> 86 </complexType> 87 88 <complexType name="importType"> 89 <annotation> 90 <documentation>importType</documentation> 91 </annotation> 92 <attribute name="file" type="string" use="required" /> 93 </complexType> 94 95 <complexType name="copyrightType"> 96 <annotation> 97 <documentation>copyrightType</documentation> 98 </annotation> 99 <choice minOccurs="0" maxOccurs="unbounded"> 100 <group ref="rng:docGroup" /> 101 <group ref="rng:topGroup" /> 102 <element ref="rng:author" /> 103 <element ref="rng:license" /> 104 </choice> 105 <attribute name="year" type="nonNegativeInteger" use="optional" /> 106 </complexType> 107 108 <complexType name="domainType"> 109 <annotation> 110 <documentation>domainType</documentation> 111 </annotation> 112 <choice minOccurs="0" maxOccurs="unbounded"> 113 <group ref="rng:docGroup" /> 114 <group ref="rng:topGroup" /> 115 <group ref="rng:regarrayGroup" /> 116 </choice> 117 <attribute name="name" type="NMTOKEN" use="required" /> 118 <attribute name="prefix" type="NMTOKENS" use="optional" /> 119 <attribute name="width" type="rng:DomainWidth" use="optional" /> 120 <attribute name="varset" type="NMTOKEN" use="optional" /> 121 <attribute name="variants" type="string" use="optional" /> 122 </complexType> 123 124 <complexType name="arrayType"> 125 <annotation> 126 <documentation>arrayType</documentation> 127 </annotation> 128 <choice minOccurs="0" maxOccurs="unbounded"> 129 <group ref="rng:docGroup" /> 130 <group ref="rng:topGroup" /> 131 <group ref="rng:regarrayGroup" /> 132 </choice> 133 <attribute name="name" type="NMTOKEN" use="optional" /> 134 <attribute name="offset" type="rng:HexOrNumber" use="optional" /> 135 <attribute name="offsets" type="string" use="optional"/> 136 <attribute name="doffsets" type="string" use="optional"/> 137 <attribute name="index" type="NMTOKENS" use="optional"/> 138 <attribute name="stride" type="rng:HexOrNumber" use="required" /> 139 <attribute name="length" type="rng:HexOrNumber" use="required" /> 140 <attribute name="varset" type="NMTOKEN" use="optional" /> 141 <attribute name="variants" type="string" use="optional" /> 142 <attribute name="usage" type="string" use="optional" /> 143 </complexType> 144 145 <complexType name="stripeType"> 146 <annotation> 147 <documentation>stripeType</documentation> 148 </annotation> 149 <choice minOccurs="0" maxOccurs="unbounded"> 150 <group ref="rng:docGroup" /> 151 <group ref="rng:topGroup" /> 152 <group ref="rng:regarrayGroup" minOccurs="0" /> 153 </choice> 154 <attribute name="varset" type="NMTOKEN" use="optional" /> 155 <attribute name="variants" type="string" use="optional" /> 156 <attribute name="prefix" type="NMTOKENS" use="optional" /> 157 </complexType> 158 159 <complexType name="registerType"> 160 <annotation> 161 <documentation> 162 registerType used by reg32, reg64 163 </documentation> 164 </annotation> 165 <choice minOccurs="0" maxOccurs="unbounded"> 166 <group ref="rng:docGroup" /> 167 <group ref="rng:topGroup" /> 168 <element ref="rng:value" /> 169 <element ref="rng:bitfield" /> 170 </choice> 171 <attribute name="name" type="NMTOKEN" use="required" /> 172 <attribute name="offset" type="rng:HexOrNumber" use="required" /> 173 <attribute name="type" type="NMTOKENS" use="optional" /> 174 <attribute name="shr" type="nonNegativeInteger" use="optional" /> 175 <attribute name="varset" type="NMTOKEN" use="optional" /> 176 <attribute name="variants" type="string" use="optional" /> 177 <attribute name="stride" type="rng:HexOrNumber" use="optional" /> 178 <attribute name="length" type="rng:HexOrNumber" use="optional" /> 179 <attribute name="high" type="nonNegativeInteger" use="optional" /> 180 <attribute name="low" type="nonNegativeInteger" use="optional" /> 181 <attribute name="pos" type="nonNegativeInteger" use="optional" /> 182 <attribute name="align" type="nonNegativeInteger" use="optional" /> 183 <attribute name="radix" type="nonNegativeInteger" use="optional" /> 184 <attribute name="usage" type="string" use="optional" /> 185 </complexType> 186 187 <complexType name="bitsetType"> 188 <annotation> 189 <documentation>bitsetType</documentation> 190 </annotation> 191 <choice maxOccurs="unbounded"> 192 <element ref="rng:bitfield" /> 193 <group ref="rng:docGroup" /> 194 <group ref="rng:topGroup" /> 195 </choice> 196 <attribute name="name" type="NMTOKEN" use="required" /> 197 <attribute name="inline" type="rng:Boolean" use="optional" /> 198 <attribute name="varset" type="NMTOKEN" use="optional" /> 199 </complexType> 200 201 <complexType name="bitfieldType"> 202 <annotation> 203 <documentation>bitfieldType</documentation> 204 </annotation> 205 <choice minOccurs="0" maxOccurs="unbounded"> 206 <element ref="rng:value" maxOccurs="unbounded" /> 207 <group ref="rng:docGroup" /> 208 <group ref="rng:topGroup" /> 209 </choice> 210 <attribute name="name" type="NMTOKEN" use="required" /> 211 <attribute name="high" type="nonNegativeInteger" use="optional" /> 212 <attribute name="low" type="nonNegativeInteger" use="optional" /> 213 <attribute name="pos" type="nonNegativeInteger" use="optional" /> 214 <attribute name="radix" type="nonNegativeInteger" use="optional" /> 215 <attribute name="type" type="NMTOKENS" use="optional" /> 216 <attribute name="varset" type="NMTOKEN" use="optional" /> 217 <attribute name="variants" type="string" use="optional" /> 218 <attribute name="addvariant" type="rng:Boolean" use="optional" /> 219 <attribute name="shr" type="nonNegativeInteger" use="optional" /> 220 </complexType> 221 222 <complexType name="enumType"> 223 <annotation> 224 <documentation>enumType</documentation> 225 </annotation> 226 <choice maxOccurs="unbounded"> 227 <element ref="rng:value" /> 228 <group ref="rng:docGroup" /> 229 <group ref="rng:topGroup" /> 230 </choice> 231 <attribute name="name" type="NMTOKEN" use="required" /> 232 <attribute name="bare" type="rng:Boolean" use="optional" /> 233 <attribute name="prefix" type="NMTOKENS" use="optional" /> 234 <attribute name="varset" type="NMTOKEN" use="optional" /> 235 </complexType> 236 237 <complexType name="valueType"> 238 <annotation> 239 <documentation>valueType</documentation> 240 </annotation> 241 <choice minOccurs="0" maxOccurs="unbounded"> 242 <group ref="rng:docGroup" /> 243 <group ref="rng:topGroup" /> 244 </choice> 245 <attribute name="name" type="NMTOKEN" use="required" /> 246 <attribute name="value" type="string" use="optional" /> 247 <attribute name="varset" type="NMTOKEN" use="optional" /> 248 <attribute name="variants" type="string" use="optional" /> 249 </complexType> 250 251 <!-- Documentation element types --> 252 253 <complexType name="briefType"> 254 <annotation> 255 <documentation> 256 brief documentation, no markup 257 </documentation> 258 </annotation> 259 <simpleContent> 260 <extension base="string" /> 261 </simpleContent> 262 </complexType> 263 264 <complexType name="docType" mixed="true"> 265 <annotation> 266 <documentation> 267 root element of documentation sub-tree 268 </documentation> 269 </annotation> 270 <choice minOccurs="0" maxOccurs="unbounded"> 271 <group ref="rng:textformatGroup" /> 272 <group ref="rng:listGroup" /> 273 <element ref="rng:code" /> 274 </choice> 275 </complexType> 276 277 <complexType name="textformatType" mixed="true"> 278 <annotation> 279 <documentation> 280 for bold, underline, italics 281 </documentation> 282 </annotation> 283 <choice minOccurs="0" maxOccurs="unbounded"> 284 <group ref="rng:textformatGroup" /> 285 </choice> 286 </complexType> 287 288 <complexType name="textcodeType"> 289 <simpleContent> 290 <extension base="string"> 291 <attribute name="title" type="string" /> 292 </extension> 293 </simpleContent> 294 </complexType> 295 296 <complexType name="listType"> 297 <annotation> 298 <documentation> 299 definition of a list, ordered or unordered 300 </documentation> 301 </annotation> 302 <choice minOccurs="0" maxOccurs="unbounded"> 303 <element ref="rng:li" /> 304 </choice> 305 </complexType> 306 307 <complexType name="listitemType" mixed="true"> 308 <annotation> 309 <documentation> 310 items of a list 311 </documentation> 312 </annotation> 313 <choice minOccurs="0" maxOccurs="unbounded"> 314 <group ref="rng:textformatGroup" /> 315 <group ref="rng:listGroup" /> 316 <element ref="rng:code" /> 317 </choice> 318 </complexType> 319 320 321 322 <!-- Attribute value types --> 323 324 <simpleType name="Hexadecimal"> 325 <restriction base="string"> 326 <pattern value="0x[0-9a-f]+" /> 327 <pattern value="0x[0-9A-F]+" /> 328 <pattern value="[0-9]" /> 329 </restriction> 330 </simpleType> 331 332 <simpleType name="HexOrNumber"> 333 <annotation> 334 <documentation>HexOrNumber</documentation> 335 </annotation> 336 <union memberTypes="rng:Hexadecimal nonNegativeInteger" /> 337 </simpleType> 338 339 <simpleType name="Boolean"> 340 <restriction base="string"> 341 <enumeration value="true" /> 342 <enumeration value="1" /> 343 <enumeration value="yes" /> 344 <enumeration value="false" /> 345 <enumeration value="0" /> 346 <enumeration value="no" /> 347 </restriction> 348 </simpleType> 349 350 <simpleType name="DomainWidth"> 351 <annotation> 352 <documentation>DomainWidth</documentation> 353 </annotation> 354 <restriction base="string"> 355 <enumeration value="32" /> 356 </restriction> 357 </simpleType> 358 359 360 361 <!-- Element groups --> 362 363 <group name="topGroup"> 364 <choice> 365 <element ref="rng:copyright" /> 366 <element ref="rng:domain" /> 367 <element ref="rng:enum" /> 368 <element ref="rng:bitset" /> 369 <element ref="rng:import" /> 370 </choice> 371 </group> 372 373 <group name="regarrayGroup"> 374 <choice> 375 <element ref="rng:reg64" /> 376 <element ref="rng:reg32" /> 377 <element ref="rng:array" /> 378 <element ref="rng:stripe" /> 379 </choice> 380 </group> 381 382 <group name="docGroup"> 383 <choice> 384 <element ref="rng:brief" /> 385 <element ref="rng:doc" /> 386 </choice> 387 </group> 388 389 <group name="textformatGroup"> 390 <choice> 391 <element ref="rng:b" /> 392 <element ref="rng:i" /> 393 <element ref="rng:u" /> 394 </choice> 395 </group> 396 397 <group name="listGroup"> 398 <choice> 399 <element ref="rng:ul" /> 400 <element ref="rng:ol" /> 401 </choice> 402 </group> 403 404</schema> 405