--- 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>