<?xml version="1.0" encoding="UTF-8"?> | |
<schema xmlns="http://www.w3.org/2001/XMLSchema" | |
targetNamespace="http://nouveau.freedesktop.org/" | |
xmlns:rng="http://nouveau.freedesktop.org/" | |
elementFormDefault="qualified"> | |
<annotation> | |
<documentation> | |
An updated version of the old rules.xml file from the | |
RivaTV project. Specifications by Pekka Paalanen, | |
preliminary attempt by KoalaBR, | |
first working version by Jakob Bornecrantz. | |
For specifications, see the file rules-ng-format.txt | |
in Nouveau CVS module 'rules-ng'. | |
</documentation> | |
<documentation>Version 0.1</documentation> | |
</annotation> | |
<!-- Elements --> | |
<element name="database" type="rng:databaseType" /> | |
<element name="import" type="rng:importType" /> | |
<element name="domain" type="rng:domainType" /> | |
<element name="group" type="rng:groupType" /> | |
<element name="use-group" type="rng:refType" /> | |
<element name="array" type="rng:arrayType" /> | |
<element name="stripe" type="rng:stripeType" /> | |
<element name="reg64" type="rng:registerType" /> | |
<element name="reg32" type="rng:registerType" /> | |
<element name="reg16" type="rng:registerType" /> | |
<element name="reg8" type="rng:registerType" /> | |
<element name="bitset" type="rng:bitsetType" /> | |
<element name="bitfield" type="rng:bitfieldType" /> | |
<element name="enum" type="rng:enumType" /> | |
<element name="value" type="rng:valueType" /> | |
<!-- Documentation elements --> | |
<!-- FIXME: allowed only one per parent element --> | |
<element name="brief" type="rng:briefType" /> | |
<element name="doc" type="rng:docType" /> | |
<element name="b" type="rng:textformatType" /> | |
<element name="i" type="rng:textformatType" /> | |
<element name="u" type="rng:textformatType" /> | |
<element name="code" type="rng:textcodeType" /> | |
<element name="ul" type="rng:listType" /> | |
<element name="ol" type="rng:listType" /> | |
<element name="li" type="rng:listitemType" /> | |
<!-- Database element types --> | |
<complexType name="databaseType"> | |
<annotation> | |
<documentation>databaseType</documentation> | |
</annotation> | |
<choice minOccurs="0" maxOccurs="unbounded"> | |
<group ref="rng:docGroup" /> | |
<group ref="rng:topGroup" /> | |
</choice> | |
</complexType> | |
<complexType name="importType"> | |
<annotation> | |
<documentation>importType</documentation> | |
</annotation> | |
<attribute name="file" type="string" use="required" /> | |
</complexType> | |
<complexType name="domainType"> | |
<annotation> | |
<documentation>domainType</documentation> | |
</annotation> | |
<choice minOccurs="0" maxOccurs="unbounded"> | |
<group ref="rng:docGroup" /> | |
<group ref="rng:topGroup" /> | |
<group ref="rng:regarrayGroup" /> | |
</choice> | |
<attribute name="name" type="NMTOKEN" use="required" /> | |
<attribute name="bare" type="boolean" use="optional" /> | |
<attribute name="prefix" type="NMTOKENS" use="optional" /> | |
<attribute name="width" type="rng:DomainWidth" use="optional" /> | |
<attribute name="size" type="rng:Hexadecimal" use="optional" /> | |
</complexType> | |
<complexType name="groupType"> | |
<annotation> | |
<documentation>groupType</documentation> | |
</annotation> | |
<choice minOccurs="0" maxOccurs="unbounded"> | |
<group ref="rng:docGroup" /> | |
<group ref="rng:topGroup" /> | |
<group ref="rng:regarrayGroup" /> | |
</choice> | |
<attribute name="name" type="NMTOKEN" use="required" /> | |
</complexType> | |
<complexType name="arrayType"> | |
<annotation> | |
<documentation>arrayType</documentation> | |
</annotation> | |
<choice minOccurs="0" maxOccurs="unbounded"> | |
<group ref="rng:docGroup" /> | |
<group ref="rng:topGroup" /> | |
<group ref="rng:regarrayGroup" /> | |
</choice> | |
<attribute name="name" type="NMTOKEN" use="required" /> | |
<attribute name="offset" type="rng:Hexadecimal" use="required" /> | |
<attribute name="stride" type="rng:HexOrNumber" use="required" /> | |
<attribute name="length" type="rng:HexOrNumber" use="required" /> | |
<attribute name="varset" type="NMTOKEN" use="optional" /> | |
<attribute name="variants" type="string" use="optional" /> | |
</complexType> | |
<complexType name="stripeType"> | |
<annotation> | |
<documentation>stripeType</documentation> | |
</annotation> | |
<choice minOccurs="0" maxOccurs="unbounded"> | |
<group ref="rng:docGroup" /> | |
<group ref="rng:topGroup" /> | |
<group ref="rng:regarrayGroup" minOccurs="0" /> | |
</choice> | |
<attribute name="name" type="NMTOKEN" use="optional" /> | |
<attribute name="offset" type="rng:Hexadecimal" use="optional" /> | |
<attribute name="stride" type="rng:HexOrNumber" use="optional" /> | |
<attribute name="length" type="rng:HexOrNumber" use="optional" /> | |
<attribute name="varset" type="NMTOKEN" use="optional" /> | |
<attribute name="variants" type="string" use="optional" /> | |
<attribute name="prefix" type="NMTOKENS" use="optional" /> | |
</complexType> | |
<complexType name="registerType"> | |
<annotation> | |
<documentation> | |
registerType used by reg8, reg16, reg32, reg64 | |
</documentation> | |
</annotation> | |
<choice minOccurs="0" maxOccurs="unbounded"> | |
<group ref="rng:docGroup" /> | |
<group ref="rng:topGroup" /> | |
<element ref="rng:value" /> | |
<element ref="rng:bitfield" /> | |
</choice> | |
<attribute name="name" type="NMTOKEN" use="required" /> | |
<attribute name="offset" type="rng:Hexadecimal" use="required" /> | |
<attribute name="access" type="rng:Access" default="rw" use="optional" /> | |
<attribute name="type" type="NMTOKENS" use="optional" /> | |
<attribute name="shr" type="nonNegativeInteger" use="optional" /> | |
<attribute name="varset" type="NMTOKEN" use="optional" /> | |
<attribute name="variants" type="string" use="optional" /> | |
<attribute name="stride" type="rng:HexOrNumber" use="optional" /> | |
<attribute name="length" type="rng:HexOrNumber" use="optional" /> | |
</complexType> | |
<complexType name="bitsetType"> | |
<annotation> | |
<documentation>bitsetType</documentation> | |
</annotation> | |
<choice maxOccurs="unbounded"> | |
<element ref="rng:bitfield" /> | |
<group ref="rng:docGroup" /> | |
<group ref="rng:topGroup" /> | |
</choice> | |
<attribute name="name" type="NMTOKEN" use="required" /> | |
<attribute name="inline" type="boolean" use="optional" /> | |
<attribute name="bare" type="boolean" use="optional" /> | |
<attribute name="prefix" type="NMTOKENS" use="optional" /> | |
</complexType> | |
<complexType name="bitfieldType"> | |
<annotation> | |
<documentation>bitfieldType</documentation> | |
</annotation> | |
<choice minOccurs="0" maxOccurs="unbounded"> | |
<element ref="rng:value" maxOccurs="unbounded" /> | |
<group ref="rng:docGroup" /> | |
<group ref="rng:topGroup" /> | |
</choice> | |
<attribute name="name" type="NMTOKEN" use="required" /> | |
<attribute name="high" type="nonNegativeInteger" use="optional" /> | |
<attribute name="low" type="nonNegativeInteger" use="optional" /> | |
<attribute name="pos" type="nonNegativeInteger" use="optional" /> | |
<attribute name="type" type="NMTOKENS" use="optional" /> | |
<attribute name="varset" type="NMTOKEN" use="optional" /> | |
<attribute name="variants" type="string" use="optional" /> | |
<attribute name="shr" type="nonNegativeInteger" use="optional" /> | |
</complexType> | |
<complexType name="enumType"> | |
<annotation> | |
<documentation>enumType</documentation> | |
</annotation> | |
<choice maxOccurs="unbounded"> | |
<element ref="rng:value" /> | |
<group ref="rng:docGroup" /> | |
<group ref="rng:topGroup" /> | |
</choice> | |
<attribute name="name" type="NMTOKEN" use="required" /> | |
<attribute name="inline" type="boolean" use="optional" /> | |
<attribute name="bare" type="boolean" use="optional" /> | |
<attribute name="prefix" type="NMTOKENS" use="optional" /> | |
</complexType> | |
<complexType name="valueType"> | |
<annotation> | |
<documentation>valueType</documentation> | |
</annotation> | |
<choice minOccurs="0" maxOccurs="unbounded"> | |
<group ref="rng:docGroup" /> | |
<group ref="rng:topGroup" /> | |
</choice> | |
<attribute name="name" type="NMTOKEN" use="required" /> | |
<attribute name="value" type="string" use="optional" /> | |
<attribute name="varset" type="NMTOKEN" use="optional" /> | |
<attribute name="variants" type="string" use="optional" /> | |
</complexType> | |
<complexType name="refType"> | |
<annotation> | |
<documentation>refType</documentation> | |
</annotation> | |
<attribute name="ref" type="NMTOKEN" use="required" /> | |
</complexType> | |
<!-- Documentation element types --> | |
<complexType name="briefType"> | |
<annotation> | |
<documentation> | |
brief documentation, no markup | |
</documentation> | |
</annotation> | |
<simpleContent> | |
<extension base="string" /> | |
</simpleContent> | |
</complexType> | |
<complexType name="docType" mixed="true"> | |
<annotation> | |
<documentation> | |
root element of documentation sub-tree | |
</documentation> | |
</annotation> | |
<choice minOccurs="0" maxOccurs="unbounded"> | |
<group ref="rng:textformatGroup" /> | |
<group ref="rng:listGroup" /> | |
<element ref="rng:code" /> | |
</choice> | |
</complexType> | |
<complexType name="textformatType" mixed="true"> | |
<annotation> | |
<documentation> | |
for bold, underline, italics | |
</documentation> | |
</annotation> | |
<choice minOccurs="0" maxOccurs="unbounded"> | |
<group ref="rng:textformatGroup" /> | |
</choice> | |
</complexType> | |
<complexType name="textcodeType"> | |
<simpleContent> | |
<extension base="string"> | |
<attribute name="title" type="string" /> | |
</extension> | |
</simpleContent> | |
</complexType> | |
<complexType name="listType"> | |
<annotation> | |
<documentation> | |
definition of a list, ordered or unordered | |
</documentation> | |
</annotation> | |
<choice minOccurs="0" maxOccurs="unbounded"> | |
<element ref="rng:li" /> | |
</choice> | |
</complexType> | |
<complexType name="listitemType" mixed="true"> | |
<annotation> | |
<documentation> | |
items of a list | |
</documentation> | |
</annotation> | |
<choice minOccurs="0" maxOccurs="unbounded"> | |
<group ref="rng:textformatGroup" /> | |
<group ref="rng:listGroup" /> | |
<element ref="rng:code" /> | |
</choice> | |
</complexType> | |
<!-- Attribute value types --> | |
<simpleType name="Hexadecimal"> | |
<restriction base="string"> | |
<pattern value="0x[0-9a-f]+" /> | |
<pattern value="0x[0-9A-F]+" /> | |
<pattern value="[0-9]" /> | |
</restriction> | |
</simpleType> | |
<simpleType name="HexOrNumber"> | |
<annotation> | |
<documentation>HexOrNumber</documentation> | |
</annotation> | |
<union memberTypes="rng:Hexadecimal nonNegativeInteger" /> | |
</simpleType> | |
<simpleType name="Access"> | |
<annotation> | |
<documentation>Access</documentation> | |
</annotation> | |
<restriction base="string"> | |
<enumeration value="r" /> | |
<enumeration value="w" /> | |
<enumeration value="rw" /> | |
</restriction> | |
</simpleType> | |
<simpleType name="DomainWidth"> | |
<annotation> | |
<documentation>DomainWidth</documentation> | |
</annotation> | |
<restriction base="string"> | |
<enumeration value="8" /> | |
<enumeration value="16" /> | |
<enumeration value="32" /> | |
<enumeration value="64" /> | |
</restriction> | |
</simpleType> | |
<!-- Element groups --> | |
<group name="topGroup"> | |
<choice> | |
<element ref="rng:domain" /> | |
<element ref="rng:enum" /> | |
<element ref="rng:group" /> | |
<element ref="rng:bitset" /> | |
<element ref="rng:import" /> | |
</choice> | |
</group> | |
<group name="regarrayGroup"> | |
<choice> | |
<element ref="rng:reg64" /> | |
<element ref="rng:reg32" /> | |
<element ref="rng:reg16" /> | |
<element ref="rng:reg8" /> | |
<element ref="rng:array" /> | |
<element ref="rng:stripe" /> | |
<element ref="rng:use-group" /> | |
</choice> | |
</group> | |
<group name="docGroup"> | |
<choice> | |
<element ref="rng:brief" /> | |
<element ref="rng:doc" /> | |
</choice> | |
</group> | |
<group name="textformatGroup"> | |
<choice> | |
<element ref="rng:b" /> | |
<element ref="rng:i" /> | |
<element ref="rng:u" /> | |
</choice> | |
</group> | |
<group name="listGroup"> | |
<choice> | |
<element ref="rng:ul" /> | |
<element ref="rng:ol" /> | |
</choice> | |
</group> | |
</schema> |