diff options
Diffstat (limited to 'rules-ng.xsd')
-rw-r--r-- | rules-ng.xsd | 412 |
1 files changed, 412 insertions, 0 deletions
diff --git a/rules-ng.xsd b/rules-ng.xsd new file mode 100644 index 0000000..8dd6872 --- /dev/null +++ b/rules-ng.xsd @@ -0,0 +1,412 @@ +<?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="value" type="rng:valueType" /> + <element name="bitfield" type="rng:bitfieldType" /> + <element name="bitset" type="rng:bitsetType" /> + <element name="reg32" type="rng:registerType" /> + <element name="reg8" type="rng:registerType" /> + <element name="array" type="rng:arrayType" /> + <element name="stripe" type="rng:stripeType" /> + <element name="enum" type="rng:enumType" /> + <element name="database" type="rng:databaseType" /> + <element name="group" type="rng:groupType" /> + <element name="variant" type="rng:variantType" /> + <element name="domain" type="rng:domainType" /> + <element name="translation" type="rng:translationType" /> + <element name="use-bitset" type="rng:refType" /> + <element name="use-group" type="rng:refType" /> + <element name="use-enum" type="rng:refType" /> + + <!-- 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> + <sequence> + <element ref="rng:domain" /> + <choice minOccurs="0" maxOccurs="unbounded"> + <group ref="rng:regarrayGroup" /> + <group ref="rng:docGroup" /> + <element ref="rng:variant" /> + <element ref="rng:enum" /> + <element ref="rng:group" /> + <element ref="rng:bitset" /> + </choice> + </sequence> + </complexType> + + <complexType name="variantType"> + <annotation> + <documentation>variantType</documentation> + </annotation> + <choice minOccurs="0" maxOccurs="unbounded"> + <group ref="rng:regarrayGroup" /> + <group ref="rng:docGroup" /> + <element ref="rng:variant" /> + <element ref="rng:use-group" /> + </choice> + <attribute name="id" type="NMTOKENS" use="required" /> + </complexType> + + <complexType name="enumType"> + <annotation> + <documentation>enumType</documentation> + </annotation> + <choice maxOccurs="unbounded"> + <element ref="rng:value" /> + <group ref="rng:docGroup" /> + </choice> + <attribute name="name" type="rng:Cname" use="required" /> + </complexType> + + <complexType name="valueType"> + <annotation> + <documentation>valueType</documentation> + </annotation> + <choice minOccurs="0" maxOccurs="unbounded"> + <group ref="rng:docGroup" /> + </choice> + <attribute name="name" type="rng:objName" use="required" /> + <attribute name="value" type="string" use="required" /> + </complexType> + + <complexType name="arrayType"> + <annotation> + <documentation>arrayType</documentation> + </annotation> + <choice minOccurs="0" maxOccurs="unbounded"> + <group ref="rng:regarrayGroup" minOccurs="0" /> + <group ref="rng:docGroup" /> + <element ref="rng:use-group" /> + </choice> + <attribute name="name" type="rng:objName" use="required" /> + <attributeGroup ref="rng:basicArrayAttributes" /> + <attribute name="type" type="rng:Type" default="hex" /> + </complexType> + + <complexType name="stripeType"> + <annotation> + <documentation>stripeType</documentation> + </annotation> + <choice minOccurs="0" maxOccurs="unbounded"> + <group ref="rng:regarrayGroup" minOccurs="0" /> + <group ref="rng:docGroup" /> + <element ref="rng:use-group" /> + </choice> + <attribute name="name" type="rng:objName" use="optional" /> + <attributeGroup ref="rng:basicArrayAttributes" /> + </complexType> + + <complexType name="bitfieldType"> + <annotation> + <documentation>bitfieldType</documentation> + </annotation> + <choice minOccurs="0" maxOccurs="unbounded"> + <group ref="rng:docGroup" /> + <element ref="rng:use-enum" /> + <element ref="rng:value" maxOccurs="unbounded" /> + </choice> + <attribute name="name" type="rng:objName" use="required" /> + <attribute name="high" type="nonNegativeInteger" + use="required" /> + <attribute name="low" type="nonNegativeInteger" + use="required" /> + <attribute name="type" type="rng:Type" default="hex" /> + </complexType> + + <complexType name="bitsetType"> + <annotation> + <documentation>bitsetType</documentation> + </annotation> + <choice maxOccurs="unbounded"> + <element ref="rng:bitfield" /> + <group ref="rng:docGroup" /> + </choice> + <attribute name="name" type="rng:Cname" use="required" /> + </complexType> + + <complexType name="groupType"> + <annotation> + <documentation>groupType</documentation> + </annotation> + <choice maxOccurs="unbounded"> + <group ref="rng:regarrayGroup" /> + <group ref="rng:docGroup" /> + <element ref="rng:use-group" /> + </choice> + <attribute name="name" type="rng:Cname" use="required" /> + </complexType> + + <complexType name="refType"> + <annotation> + <documentation>refType</documentation> + </annotation> + <attribute name="ref" type="rng:Cname" use="required" /> + </complexType> + + <complexType name="domainType"> + <annotation> + <documentation>domainType</documentation> + </annotation> + <attribute name="name" type="rng:Cname" use="required" /> + </complexType> + + <complexType name="registerType"> + <annotation> + <documentation> + registerType used by both reg8 and reg32 + </documentation> + </annotation> + <choice minOccurs="0" maxOccurs="1"> + <choice minOccurs="0" maxOccurs="unbounded"> + <element ref="rng:value" /> + <element ref="rng:use-enum" /> + <group ref="rng:docGroup" /> + </choice> + <choice minOccurs="0" maxOccurs="unbounded"> + <element ref="rng:bitfield" /> + <element ref="rng:use-bitset" /> + <group ref="rng:docGroup" /> + </choice> + </choice> + <attribute name="name" type="rng:objName" use="required" /> + <attribute name="offset" type="rng:Hexadecimal" + use="required" /> + <attribute name="access" type="rng:Access" default="rw" /> + <attribute name="type" type="rng:Type" default="hex" /> + </complexType> + + <complexType name="translationType"> + <annotation> + <documentation>translationType</documentation> + </annotation> + <choice maxOccurs="unbounded"> + <element ref="rng:reg8" /> + <element ref="rng:reg32" /> + <group ref="rng:docGroup" /> + </choice> + <attribute name="domain" type="rng:Cname" use="required" /> + <attribute name="variant" type="NMTOKEN" /> + </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="Cname"> + <annotation> + <documentation> + C language identifier or macro name. + The C99 standard seems to allow non-ASCII-7 + letters in names, but we do not. Or do we? + </documentation> + </annotation> + <restriction base="token"> + <pattern value="[a-zA-Z_][0-9a-zA-Z_]*" /> + </restriction> + </simpleType> + + <simpleType name="objName"> + <annotation> + <documentation> + This is either a (normal) prefixed name, + or an absolute name with a leading slash. + The absolute name is the same as slash and + Cname concatenated. + </documentation> + </annotation> + <restriction base="token"> + <pattern value="/[a-zA-Z_][0-9a-zA-Z_]*" /> + <pattern value="[0-9a-zA-Z_]+" /> + </restriction> + </simpleType> + + <simpleType name="Hexadecimal"> + <restriction base="string"> + <pattern value="0x[0-9a-f]+" /> + <pattern value="0x[0-9A-F]+" /> + </restriction> + </simpleType> + + <simpleType name="HexOrNumber"> + <annotation> + <documentation>HexOrNumber</documentation> + </annotation> + <union memberTypes="rng:Hexadecimal nonNegativeInteger" /> + </simpleType> + + <simpleType name="Type"> + <annotation> + <documentation>Type</documentation> + </annotation> + <restriction base="NMTOKENS" /> + </simpleType> + + <simpleType name="Access"> + <annotation> + <documentation>Access</documentation> + </annotation> + <restriction base="string"> + <enumeration value="r" /> + <enumeration value="w" /> + <enumeration value="rw" /> + </restriction> + </simpleType> + + + + <!-- Attribute groups --> + + <attributeGroup name="basicArrayAttributes"> + <attribute name="offset" type="rng:Hexadecimal" + use="required" /> + <attribute name="stride" type="rng:HexOrNumber" + use="required" /> + <attribute name="length" type="rng:HexOrNumber" + use="required" /> + </attributeGroup> + + + <!-- Element groups --> + + <group name="regarrayGroup"> + <choice> + <element ref="rng:reg32" /> + <element ref="rng:reg8" /> + <element ref="rng:array" /> + <element ref="rng:stripe" /> + <element ref="rng:translation" /> + </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> + |