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="group" type="rng:groupType" /> 27 <element name="use-group" type="rng:refType" /> 28 <element name="array" type="rng:arrayType" /> 29 <element name="stripe" type="rng:stripeType" /> 30 <element name="reg64" type="rng:registerType" /> 31 <element name="reg32" type="rng:registerType" /> 32 <element name="reg16" type="rng:registerType" /> 33 <element name="reg8" type="rng:registerType" /> 34 <element name="bitset" type="rng:bitsetType" /> 35 <element name="bitfield" type="rng:bitfieldType" /> 36 <element name="enum" type="rng:enumType" /> 37 <element name="value" type="rng:valueType" /> 38 39 <!-- Copyright elements --> 40 <element name="author" type="rng:authorType" /> 41 <element name="nick" type="rng:nickType" /> 42 <element name="license" type="rng:docType" /> 43 44 <!-- Documentation elements --> 45 46 <!-- FIXME: allowed only one per parent element --> 47 <element name="brief" type="rng:briefType" /> 48 49 <element name="doc" type="rng:docType" /> 50 <element name="b" type="rng:textformatType" /> 51 <element name="i" type="rng:textformatType" /> 52 <element name="u" type="rng:textformatType" /> 53 <element name="code" type="rng:textcodeType" /> 54 <element name="ul" type="rng:listType" /> 55 <element name="ol" type="rng:listType" /> 56 <element name="li" type="rng:listitemType" /> 57 58 <!-- Copyright element types --> 59 60 <complexType name="authorType" mixed="true"> 61 <annotation> 62 <documentation> 63 register database author 64 </documentation> 65 </annotation> 66 <choice minOccurs="0" maxOccurs="unbounded"> 67 <element ref="rng:nick" /> 68 </choice> 69 <attribute name="name" type="string" use="required" /> 70 <attribute name="email" type="string" use="required" /> 71 </complexType> 72 73 <complexType name="nickType"> 74 <annotation> 75 <documentation>nickType</documentation> 76 </annotation> 77 <attribute name="name" type="string" use="required" /> 78 </complexType> 79 80 <!-- Database element types --> 81 82 <complexType name="databaseType"> 83 <annotation> 84 <documentation>databaseType</documentation> 85 </annotation> 86 <choice minOccurs="0" maxOccurs="unbounded"> 87 <group ref="rng:docGroup" /> 88 <group ref="rng:topGroup" /> 89 </choice> 90 </complexType> 91 92 <complexType name="importType"> 93 <annotation> 94 <documentation>importType</documentation> 95 </annotation> 96 <attribute name="file" type="string" use="required" /> 97 </complexType> 98 99 <complexType name="copyrightType"> 100 <annotation> 101 <documentation>copyrightType</documentation> 102 </annotation> 103 <choice minOccurs="0" maxOccurs="unbounded"> 104 <group ref="rng:docGroup" /> 105 <group ref="rng:topGroup" /> 106 <element ref="rng:author" /> 107 <element ref="rng:license" /> 108 </choice> 109 <attribute name="year" type="nonNegativeInteger" use="optional" /> 110 </complexType> 111 112 <complexType name="domainType"> 113 <annotation> 114 <documentation>domainType</documentation> 115 </annotation> 116 <choice minOccurs="0" maxOccurs="unbounded"> 117 <group ref="rng:docGroup" /> 118 <group ref="rng:topGroup" /> 119 <group ref="rng:regarrayGroup" /> 120 </choice> 121 <attribute name="name" type="NMTOKEN" use="required" /> 122 <attribute name="bare" type="rng:Boolean" use="optional" /> 123 <attribute name="prefix" type="NMTOKENS" use="optional" /> 124 <attribute name="width" type="rng:DomainWidth" use="optional" /> 125 <attribute name="size" type="rng:HexOrNumber" use="optional" /> 126 <attribute name="varset" type="NMTOKEN" use="optional" /> 127 <attribute name="variants" type="string" use="optional" /> 128 </complexType> 129 130 <complexType name="groupType"> 131 <annotation> 132 <documentation>groupType</documentation> 133 </annotation> 134 <choice minOccurs="0" maxOccurs="unbounded"> 135 <group ref="rng:docGroup" /> 136 <group ref="rng:topGroup" /> 137 <group ref="rng:regarrayGroup" /> 138 </choice> 139 <attribute name="name" type="NMTOKEN" use="required" /> 140 </complexType> 141 142 <complexType name="arrayType"> 143 <annotation> 144 <documentation>arrayType</documentation> 145 </annotation> 146 <choice minOccurs="0" maxOccurs="unbounded"> 147 <group ref="rng:docGroup" /> 148 <group ref="rng:topGroup" /> 149 <group ref="rng:regarrayGroup" /> 150 </choice> 151 <attribute name="name" type="NMTOKEN" use="optional" /> 152 <attribute name="offset" type="rng:HexOrNumber" use="optional" /> 153 <attribute name="offsets" type="string" use="optional"/> 154 <attribute name="doffsets" type="string" use="optional"/> 155 <attribute name="index" type="NMTOKENS" use="optional"/> 156 <attribute name="stride" type="rng:HexOrNumber" use="required" /> 157 <attribute name="length" type="rng:HexOrNumber" use="required" /> 158 <attribute name="varset" type="NMTOKEN" use="optional" /> 159 <attribute name="variants" type="string" use="optional" /> 160 </complexType> 161 162 <complexType name="stripeType"> 163 <annotation> 164 <documentation>stripeType</documentation> 165 </annotation> 166 <choice minOccurs="0" maxOccurs="unbounded"> 167 <group ref="rng:docGroup" /> 168 <group ref="rng:topGroup" /> 169 <group ref="rng:regarrayGroup" minOccurs="0" /> 170 </choice> 171 <attribute name="name" type="NMTOKEN" use="optional" /> 172 <attribute name="offset" type="rng:HexOrNumber" use="optional" /> 173 <attribute name="stride" type="rng:HexOrNumber" use="optional" /> 174 <attribute name="length" type="rng:HexOrNumber" use="optional" /> 175 <attribute name="varset" type="NMTOKEN" use="optional" /> 176 <attribute name="variants" type="string" use="optional" /> 177 <attribute name="prefix" type="NMTOKENS" use="optional" /> 178 </complexType> 179 180 <complexType name="registerType"> 181 <annotation> 182 <documentation> 183 registerType used by reg8, reg16, reg32, reg64 184 </documentation> 185 </annotation> 186 <choice minOccurs="0" maxOccurs="unbounded"> 187 <group ref="rng:docGroup" /> 188 <group ref="rng:topGroup" /> 189 <element ref="rng:value" /> 190 <element ref="rng:bitfield" /> 191 </choice> 192 <attribute name="name" type="NMTOKEN" use="required" /> 193 <attribute name="offset" type="rng:HexOrNumber" use="required" /> 194 <attribute name="access" type="rng:Access" default="rw" use="optional" /> 195 <attribute name="type" type="NMTOKENS" use="optional" /> 196 <attribute name="shr" type="nonNegativeInteger" use="optional" /> 197 <attribute name="varset" type="NMTOKEN" use="optional" /> 198 <attribute name="variants" type="string" use="optional" /> 199 <attribute name="stride" type="rng:HexOrNumber" use="optional" /> 200 <attribute name="length" type="rng:HexOrNumber" use="optional" /> 201 <attribute name="high" type="nonNegativeInteger" use="optional" /> 202 <attribute name="low" type="nonNegativeInteger" use="optional" /> 203 <attribute name="pos" type="nonNegativeInteger" use="optional" /> 204 <attribute name="align" type="nonNegativeInteger" use="optional" /> 205 <attribute name="radix" type="nonNegativeInteger" use="optional" /> 206 </complexType> 207 208 <complexType name="bitsetType"> 209 <annotation> 210 <documentation>bitsetType</documentation> 211 </annotation> 212 <choice maxOccurs="unbounded"> 213 <element ref="rng:bitfield" /> 214 <group ref="rng:docGroup" /> 215 <group ref="rng:topGroup" /> 216 </choice> 217 <attribute name="name" type="NMTOKEN" use="required" /> 218 <attribute name="inline" type="rng:Boolean" use="optional" /> 219 <attribute name="bare" type="rng:Boolean" use="optional" /> 220 <attribute name="prefix" type="NMTOKENS" use="optional" /> 221 </complexType> 222 223 <complexType name="bitfieldType"> 224 <annotation> 225 <documentation>bitfieldType</documentation> 226 </annotation> 227 <choice minOccurs="0" maxOccurs="unbounded"> 228 <element ref="rng:value" maxOccurs="unbounded" /> 229 <group ref="rng:docGroup" /> 230 <group ref="rng:topGroup" /> 231 </choice> 232 <attribute name="name" type="NMTOKEN" use="required" /> 233 <attribute name="high" type="nonNegativeInteger" use="optional" /> 234 <attribute name="low" type="nonNegativeInteger" use="optional" /> 235 <attribute name="pos" type="nonNegativeInteger" use="optional" /> 236 <attribute name="radix" type="nonNegativeInteger" use="optional" /> 237 <attribute name="align" type="nonNegativeInteger" use="optional" /> 238 <attribute name="type" type="NMTOKENS" use="optional" /> 239 <attribute name="varset" type="NMTOKEN" use="optional" /> 240 <attribute name="variants" type="string" use="optional" /> 241 <attribute name="addvariant" type="rng:Boolean" use="optional" /> 242 <attribute name="shr" type="nonNegativeInteger" use="optional" /> 243 </complexType> 244 245 <complexType name="enumType"> 246 <annotation> 247 <documentation>enumType</documentation> 248 </annotation> 249 <choice maxOccurs="unbounded"> 250 <element ref="rng:value" /> 251 <group ref="rng:docGroup" /> 252 <group ref="rng:topGroup" /> 253 </choice> 254 <attribute name="name" type="NMTOKEN" use="required" /> 255 <attribute name="inline" type="rng:Boolean" use="optional" /> 256 <attribute name="bare" type="rng:Boolean" use="optional" /> 257 <attribute name="prefix" type="NMTOKENS" use="optional" /> 258 </complexType> 259 260 <complexType name="valueType"> 261 <annotation> 262 <documentation>valueType</documentation> 263 </annotation> 264 <choice minOccurs="0" maxOccurs="unbounded"> 265 <group ref="rng:docGroup" /> 266 <group ref="rng:topGroup" /> 267 </choice> 268 <attribute name="name" type="NMTOKEN" use="required" /> 269 <attribute name="value" type="string" use="optional" /> 270 <attribute name="varset" type="NMTOKEN" use="optional" /> 271 <attribute name="variants" type="string" use="optional" /> 272 </complexType> 273 274 <complexType name="refType"> 275 <annotation> 276 <documentation>refType</documentation> 277 </annotation> 278 <attribute name="ref" type="NMTOKEN" use="required" /> 279 </complexType> 280 281 282 <!-- Documentation element types --> 283 284 <complexType name="briefType"> 285 <annotation> 286 <documentation> 287 brief documentation, no markup 288 </documentation> 289 </annotation> 290 <simpleContent> 291 <extension base="string" /> 292 </simpleContent> 293 </complexType> 294 295 <complexType name="docType" mixed="true"> 296 <annotation> 297 <documentation> 298 root element of documentation sub-tree 299 </documentation> 300 </annotation> 301 <choice minOccurs="0" maxOccurs="unbounded"> 302 <group ref="rng:textformatGroup" /> 303 <group ref="rng:listGroup" /> 304 <element ref="rng:code" /> 305 </choice> 306 </complexType> 307 308 <complexType name="textformatType" mixed="true"> 309 <annotation> 310 <documentation> 311 for bold, underline, italics 312 </documentation> 313 </annotation> 314 <choice minOccurs="0" maxOccurs="unbounded"> 315 <group ref="rng:textformatGroup" /> 316 </choice> 317 </complexType> 318 319 <complexType name="textcodeType"> 320 <simpleContent> 321 <extension base="string"> 322 <attribute name="title" type="string" /> 323 </extension> 324 </simpleContent> 325 </complexType> 326 327 <complexType name="listType"> 328 <annotation> 329 <documentation> 330 definition of a list, ordered or unordered 331 </documentation> 332 </annotation> 333 <choice minOccurs="0" maxOccurs="unbounded"> 334 <element ref="rng:li" /> 335 </choice> 336 </complexType> 337 338 <complexType name="listitemType" mixed="true"> 339 <annotation> 340 <documentation> 341 items of a list 342 </documentation> 343 </annotation> 344 <choice minOccurs="0" maxOccurs="unbounded"> 345 <group ref="rng:textformatGroup" /> 346 <group ref="rng:listGroup" /> 347 <element ref="rng:code" /> 348 </choice> 349 </complexType> 350 351 352 353 <!-- Attribute value types --> 354 355 <simpleType name="Hexadecimal"> 356 <restriction base="string"> 357 <pattern value="0x[0-9a-f]+" /> 358 <pattern value="0x[0-9A-F]+" /> 359 <pattern value="[0-9]" /> 360 </restriction> 361 </simpleType> 362 363 <simpleType name="HexOrNumber"> 364 <annotation> 365 <documentation>HexOrNumber</documentation> 366 </annotation> 367 <union memberTypes="rng:Hexadecimal nonNegativeInteger" /> 368 </simpleType> 369 370 <simpleType name="Boolean"> 371 <restriction base="string"> 372 <enumeration value="true" /> 373 <enumeration value="1" /> 374 <enumeration value="yes" /> 375 <enumeration value="false" /> 376 <enumeration value="0" /> 377 <enumeration value="no" /> 378 </restriction> 379 </simpleType> 380 381 <simpleType name="Access"> 382 <annotation> 383 <documentation>Access</documentation> 384 </annotation> 385 <restriction base="string"> 386 <enumeration value="r" /> 387 <enumeration value="w" /> 388 <enumeration value="rw" /> 389 </restriction> 390 </simpleType> 391 392 <simpleType name="DomainWidth"> 393 <annotation> 394 <documentation>DomainWidth</documentation> 395 </annotation> 396 <restriction base="string"> 397 <enumeration value="8" /> 398 <enumeration value="16" /> 399 <enumeration value="32" /> 400 <enumeration value="64" /> 401 </restriction> 402 </simpleType> 403 404 405 406 <!-- Element groups --> 407 408 <group name="topGroup"> 409 <choice> 410 <element ref="rng:copyright" /> 411 <element ref="rng:domain" /> 412 <element ref="rng:enum" /> 413 <element ref="rng:group" /> 414 <element ref="rng:bitset" /> 415 <element ref="rng:import" /> 416 </choice> 417 </group> 418 419 <group name="regarrayGroup"> 420 <choice> 421 <element ref="rng:reg64" /> 422 <element ref="rng:reg32" /> 423 <element ref="rng:reg16" /> 424 <element ref="rng:reg8" /> 425 <element ref="rng:array" /> 426 <element ref="rng:stripe" /> 427 <element ref="rng:use-group" /> 428 </choice> 429 </group> 430 431 <group name="docGroup"> 432 <choice> 433 <element ref="rng:brief" /> 434 <element ref="rng:doc" /> 435 </choice> 436 </group> 437 438 <group name="textformatGroup"> 439 <choice> 440 <element ref="rng:b" /> 441 <element ref="rng:i" /> 442 <element ref="rng:u" /> 443 </choice> 444 </group> 445 446 <group name="listGroup"> 447 <choice> 448 <element ref="rng:ul" /> 449 <element ref="rng:ol" /> 450 </choice> 451 </group> 452 453</schema> 454