usr/src/java/adr/org/opensolaris/os/adr/adrgen/adr.xsd
changeset 809 8a6fba4105d7
parent 808 2122a04679c0
child 810 9907d0f6f03a
--- a/usr/src/java/adr/org/opensolaris/os/adr/adrgen/adr.xsd	Wed Mar 14 04:47:00 2012 -0700
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,436 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-  Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
-  
-  CDDL HEADER START
-  
-   The contents of this file are subject to the terms of the
-   Common Development and Distribution License (the "License").
-   You may not use this file except in compliance with the License.
-  
-   You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
-   or http://www.opensolaris.org/os/licensing.
-   See the License for the specific language governing permissions
-   and limitations under the License.
-  
-   When distributing Covered Code, include this CDDL HEADER in each
-   file and include the License file at usr/src/OPENSOLARIS.LICENSE.
-   If applicable, add the following below this CDDL HEADER, with the
-   fields enclosed by brackets "[]" replaced with your own identifying
-   information: Portions Copyright [yyyy] [name of copyright owner]
-  
-  CDDL HEADER END
--->
-<!--
-  adr.rng: an Abstract Data Representation
-  
-  Should be broken up into two schemas, one for data and one for
-  APIs.
--->
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://www.opensolaris.org/ns/adr" xmlns:adr="http://www.opensolaris.org/ns/adr">
-  <xs:include schemaLocation="ADRdoc.xsd"/>
-  <!-- We support a fixed set of built-in types. -->
-  <xs:attributeGroup name="basetype">
-    <xs:attribute name="type" use="required">
-      <xs:simpleType>
-        <xs:restriction base="xs:token">
-          <xs:enumeration value="boolean"/>
-          <xs:enumeration value="string"/>
-          <xs:enumeration value="integer"/>
-          <xs:enumeration value="long"/>
-          <xs:enumeration value="time"/>
-          <xs:enumeration value="name"/>
-          <xs:enumeration value="uinteger"/>
-          <xs:enumeration value="ulong"/>
-          <xs:enumeration value="opaque"/>
-          <xs:enumeration value="password"/>
-          <xs:enumeration value="float"/>
-          <xs:enumeration value="double"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-  </xs:attributeGroup>
-  <!--
-    An item is one of a built-in type, a reference to a defined
-    type, or a list.  The first two are defined by attributes,
-    the last by a nested, typed list element.
-  -->
-  <xs:group name="typespec">
-    <xs:sequence>
-      <xs:group minOccurs="0" ref="adr:element_list"/>
-    </xs:sequence>
-  </xs:group>
-  <xs:attributeGroup name="typespec">
-    <xs:attribute name="type">
-      <xs:simpleType>
-        <xs:restriction base="xs:token">
-          <xs:enumeration value="boolean"/>
-          <xs:enumeration value="string"/>
-          <xs:enumeration value="integer"/>
-          <xs:enumeration value="long"/>
-          <xs:enumeration value="time"/>
-          <xs:enumeration value="name"/>
-          <xs:enumeration value="uinteger"/>
-          <xs:enumeration value="ulong"/>
-          <xs:enumeration value="opaque"/>
-          <xs:enumeration value="password"/>
-          <xs:enumeration value="float"/>
-          <xs:enumeration value="double"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-    <xs:attribute name="typeref"/>
-  </xs:attributeGroup>
-  <!-- A variable-length list type. -->
-  <xs:group name="element_list">
-    <xs:sequence>
-      <xs:element name="list">
-        <xs:complexType>
-          <xs:group ref="adr:typespec"/>
-          <xs:attributeGroup ref="adr:typespec"/>
-        </xs:complexType>
-      </xs:element>
-    </xs:sequence>
-  </xs:group>
-  <!--
-    Some data is optional, i.e. it may more may not be present.
-    This only applies to certain types, though constraining which
-    types is currently beyond the scope of this schema.
-  -->
-  <xs:attributeGroup name="optdata">
-    <xs:attribute name="optional" type="xs:boolean"/>
-  </xs:attributeGroup>
-  <xs:group name="typespec-opt">
-    <xs:sequence>
-      <xs:group ref="adr:typespec"/>
-    </xs:sequence>
-  </xs:group>
-  <xs:attributeGroup name="typespec-opt">
-    <xs:attributeGroup ref="adr:optdata"/>
-    <xs:attributeGroup ref="adr:typespec"/>
-  </xs:attributeGroup>
-  <xs:complexType name="typespec-arm">
-    <xs:group minOccurs="0" ref="adr:typespec-opt"/>
-    <xs:attribute name="type">
-      <xs:simpleType>
-        <xs:restriction base="xs:token">
-          <xs:enumeration value="void"/>
-          <xs:enumeration value="boolean"/>
-          <xs:enumeration value="string"/>
-          <xs:enumeration value="integer"/>
-          <xs:enumeration value="long"/>
-          <xs:enumeration value="time"/>
-          <xs:enumeration value="name"/>
-          <xs:enumeration value="uinteger"/>
-          <xs:enumeration value="ulong"/>
-          <xs:enumeration value="opaque"/>
-          <xs:enumeration value="password"/>
-          <xs:enumeration value="float"/>
-          <xs:enumeration value="double"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-    <xs:attributeGroup ref="adr:optdata"/>
-    <xs:attribute name="typeref"/>
-  </xs:complexType>
-  <!--
-    Permit a structure type to include another structure type.
-    This is largely syntactic sugar, though it could be exploited
-    in target languages that support inheritance relationships.
-  -->
-  <xs:element name="include">
-    <xs:complexType>
-      <xs:attribute name="typeref" use="required"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="field">
-    <xs:complexType>
-      <xs:complexContent>
-        <xs:extension base="adr:doc-optional">
-          <xs:group ref="adr:typespec-opt"/>
-          <xs:attribute name="name" use="required"/>
-          <xs:attributeGroup ref="adr:typespec-opt"/>
-        </xs:extension>
-      </xs:complexContent>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="type">
-    <xs:complexType>
-      <xs:complexContent>
-        <xs:extension base="adr:doc-optional">
-          <xs:choice>
-            <xs:sequence>
-              <xs:element maxOccurs="unbounded" ref="adr:include"/>
-              <xs:element minOccurs="0" maxOccurs="unbounded" ref="adr:field"/>
-            </xs:sequence>
-            <xs:element maxOccurs="unbounded" ref="adr:field"/>
-          </xs:choice>
-          <xs:attribute name="name" use="required"/>
-        </xs:extension>
-      </xs:complexContent>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="arm">
-    <xs:complexType>
-      <xs:complexContent>
-        <xs:extension base="adr:typespec-arm">
-          <xs:attribute name="value" use="required"/>
-        </xs:extension>
-      </xs:complexContent>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="default" type="adr:typespec-arm"/>
-  <xs:element name="union">
-    <xs:complexType>
-      <xs:complexContent>
-        <xs:extension base="adr:doc-optional">
-          <xs:sequence>
-            <xs:element maxOccurs="unbounded" ref="adr:arm"/>
-            <xs:element minOccurs="0" ref="adr:default"/>
-          </xs:sequence>
-          <xs:attribute name="name" use="required"/>
-          <xs:attribute name="type">
-            <xs:simpleType>
-              <xs:restriction base="xs:token">
-                <xs:enumeration value="boolean"/>
-              </xs:restriction>
-            </xs:simpleType>
-          </xs:attribute>
-          <xs:attribute name="typeref"/>
-        </xs:extension>
-      </xs:complexContent>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="value">
-    <xs:complexType>
-      <xs:complexContent>
-        <xs:extension base="adr:doc-optional">
-          <xs:attribute name="name" use="required"/>
-          <xs:attribute name="value"/>
-        </xs:extension>
-      </xs:complexContent>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="fallback">
-    <xs:complexType>
-      <xs:complexContent>
-        <xs:extension base="adr:doc-optional">
-          <xs:attribute name="name" use="required"/>
-        </xs:extension>
-      </xs:complexContent>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="enum">
-    <xs:complexType>
-      <xs:complexContent>
-        <xs:extension base="adr:doc-optional">
-          <xs:sequence>
-            <xs:element maxOccurs="unbounded" ref="adr:value"/>
-            <xs:element minOccurs="0" ref="adr:fallback"/>
-          </xs:sequence>
-          <xs:attribute name="name" use="required"/>
-        </xs:extension>
-      </xs:complexContent>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="pragma">
-    <xs:complexType>
-      <xs:attribute name="domain" use="required"/>
-      <xs:attribute name="name" use="required"/>
-      <xs:attribute name="value" use="required"/>
-    </xs:complexType>
-  </xs:element>
-  <xs:group name="optional_error">
-    <xs:sequence>
-      <xs:element minOccurs="0" name="error">
-        <xs:complexType>
-          <xs:complexContent>
-            <xs:extension base="adr:doc-optional">
-              <xs:attributeGroup ref="adr:optdata"/>
-              <xs:attribute name="typeref"/>
-            </xs:extension>
-          </xs:complexContent>
-        </xs:complexType>
-      </xs:element>
-    </xs:sequence>
-  </xs:group>
-  <xs:group name="property_error">
-    <xs:sequence>
-      <xs:element name="error">
-        <xs:complexType>
-          <xs:complexContent>
-            <xs:extension base="adr:doc-optional">
-              <xs:attributeGroup ref="adr:optdata"/>
-              <xs:attribute name="typeref"/>
-              <xs:attribute name="for">
-                <xs:simpleType>
-                  <xs:restriction base="xs:token">
-                    <xs:enumeration value="ro"/>
-                    <xs:enumeration value="rw"/>
-                    <xs:enumeration value="wo"/>
-                  </xs:restriction>
-                </xs:simpleType>
-              </xs:attribute>
-            </xs:extension>
-          </xs:complexContent>
-        </xs:complexType>
-      </xs:element>
-    </xs:sequence>
-  </xs:group>
-  <xs:attributeGroup name="optional_stability">
-    <xs:attribute name="stability">
-      <xs:simpleType>
-        <xs:restriction base="xs:token">
-          <xs:enumeration value="committed"/>
-          <xs:enumeration value="uncommitted"/>
-          <xs:enumeration value="private"/>
-        </xs:restriction>
-      </xs:simpleType>
-    </xs:attribute>
-  </xs:attributeGroup>
-  <xs:element name="property">
-    <xs:complexType>
-      <xs:complexContent>
-        <xs:extension base="adr:doc-optional">
-          <xs:sequence>
-            <xs:group ref="adr:typespec-opt"/>
-            <xs:sequence minOccurs="0">
-              <xs:group ref="adr:property_error"/>
-              <xs:group minOccurs="0" ref="adr:property_error"/>
-            </xs:sequence>
-          </xs:sequence>
-          <xs:attribute name="name" use="required"/>
-          <xs:attributeGroup ref="adr:optional_stability"/>
-          <xs:attribute name="access" use="required">
-            <xs:simpleType>
-              <xs:restriction base="xs:token">
-                <xs:enumeration value="ro"/>
-                <xs:enumeration value="rw"/>
-                <xs:enumeration value="wo"/>
-              </xs:restriction>
-            </xs:simpleType>
-          </xs:attribute>
-          <xs:attributeGroup ref="adr:typespec-opt"/>
-        </xs:extension>
-      </xs:complexContent>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="method">
-    <xs:complexType>
-      <xs:complexContent>
-        <xs:extension base="adr:doc-optional">
-          <xs:sequence>
-            <xs:element minOccurs="0" ref="adr:result"/>
-            <xs:group ref="adr:optional_error"/>
-            <xs:element minOccurs="0" maxOccurs="unbounded" ref="adr:argument"/>
-          </xs:sequence>
-          <xs:attribute name="name" use="required"/>
-          <xs:attributeGroup ref="adr:optional_stability"/>
-        </xs:extension>
-      </xs:complexContent>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="result">
-    <xs:complexType>
-      <xs:complexContent>
-        <xs:extension base="adr:doc-optional">
-          <xs:group ref="adr:typespec-opt"/>
-          <xs:attributeGroup ref="adr:typespec-opt"/>
-        </xs:extension>
-      </xs:complexContent>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="argument">
-    <xs:complexType>
-      <xs:complexContent>
-        <xs:extension base="adr:doc-optional">
-          <xs:group ref="adr:typespec-opt"/>
-          <xs:attribute name="name" use="required"/>
-          <xs:attributeGroup ref="adr:typespec-opt"/>
-        </xs:extension>
-      </xs:complexContent>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="event">
-    <xs:complexType>
-      <xs:complexContent>
-        <xs:extension base="adr:doc-optional">
-          <xs:attribute name="name" use="required"/>
-          <xs:attributeGroup ref="adr:optional_stability"/>
-          <xs:attribute name="type">
-            <xs:simpleType>
-              <xs:restriction base="xs:token">
-                <xs:enumeration value="boolean"/>
-                <xs:enumeration value="string"/>
-                <xs:enumeration value="integer"/>
-                <xs:enumeration value="long"/>
-                <xs:enumeration value="time"/>
-                <xs:enumeration value="name"/>
-                <xs:enumeration value="uinteger"/>
-                <xs:enumeration value="ulong"/>
-                <xs:enumeration value="opaque"/>
-                <xs:enumeration value="password"/>
-                <xs:enumeration value="float"/>
-                <xs:enumeration value="double"/>
-              </xs:restriction>
-            </xs:simpleType>
-          </xs:attribute>
-          <xs:attribute name="typeref"/>
-        </xs:extension>
-      </xs:complexContent>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="version">
-    <xs:complexType>
-      <xs:attribute name="major" use="required" type="xs:integer"/>
-      <xs:attribute name="minor" use="required" type="xs:integer"/>
-      <xs:attribute name="stability" use="required">
-        <xs:simpleType>
-          <xs:restriction base="xs:token">
-            <xs:enumeration value="committed"/>
-            <xs:enumeration value="uncommitted"/>
-            <xs:enumeration value="private"/>
-          </xs:restriction>
-        </xs:simpleType>
-      </xs:attribute>
-    </xs:complexType>
-  </xs:element>
-  <xs:element name="api">
-    <xs:complexType>
-      <xs:complexContent>
-        <xs:extension base="adr:doc-optional">
-          <xs:sequence>
-            <xs:element minOccurs="0" maxOccurs="unbounded" ref="adr:version"/>
-            <xs:element minOccurs="0" maxOccurs="unbounded" ref="adr:include"/>
-            <xs:choice maxOccurs="unbounded">
-              <xs:element ref="adr:property"/>
-              <xs:element ref="adr:method"/>
-              <xs:element ref="adr:event"/>
-            </xs:choice>
-          </xs:sequence>
-          <xs:attribute name="name" use="required"/>
-        </xs:extension>
-      </xs:complexContent>
-    </xs:complexType>
-  </xs:element>
-  <!-- optional documentation -->
-  <xs:complexType name="doc-optional">
-    <xs:group minOccurs="0" ref="adr:documentation"/>
-  </xs:complexType>
-  <xs:element name="interface">
-    <xs:complexType>
-      <xs:complexContent>
-        <xs:extension base="adr:doc-optional">
-          <xs:choice maxOccurs="unbounded">
-            <xs:element ref="adr:pragma"/>
-            <xs:element ref="adr:type"/>
-            <xs:element ref="adr:enum"/>
-            <xs:element ref="adr:union"/>
-            <xs:element ref="adr:api"/>
-          </xs:choice>
-          <xs:attribute name="name" use="required"/>
-        </xs:extension>
-      </xs:complexContent>
-    </xs:complexType>
-  </xs:element>
-</xs:schema>