<?xml version="1.0" encoding="UTF-8"?>

<!--
 $Id: issues.xsd,v 1.1 2002/06/05 03:09:10 plehegar Exp $
-->

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
	   xmlns:xlink="http://www.w3.org/1999/xlink" 
	   elementFormDefault="qualified"
	   version="$Date: 2002/06/05 03:09:10 $">
  <xs:annotation>
    <xs:documentation>
      This W3C XML Schema is still draft and is guarantee to change in a
      not so far future. However, XML documents based on this schema
      should not be affected by those changes.

      This is a W3C XML Schema for handling issues, based on the
      document at
       http://www.w3.org/2001/03/24-issues.html

      The stable version of this document is available at
       http://www.w3.org/2001/06/issues.xsd

      The development version of this document is available
      under CVS at
       dev.w3.org:/2002/issues/schema/issues.xsd

      $Log: issues.xsd,v $
      Revision 1.1  2002/06/05 03:09:10  plehegar
      First draft version

      Revision 1.1  2002/06/05 03:08:25  plehegar
      Initial draft

    </xs:documentation>
  </xs:annotation>

  <xs:import
	     namespace="http://www.w3.org/1999/xlink"
	     schemaLocation="xlink.xsd"/>
  <xs:import 
	     namespace="http://www.w3.org/XML/1998/namespace"
	     schemaLocation="http://www.w3.org/2001/xml.xsd"/>
  <xs:attributeGroup name="xlinkSimple">
    <xs:attribute ref="xlink:type" fixed="simple"/>
    <xs:attribute ref="xlink:href" use="required"/>
    <xs:attribute ref="xlink:show" fixed="new"/>
    <xs:attribute ref="xlink:actuate" fixed="onRequest"/>
  </xs:attributeGroup>
  <xs:attributeGroup name="base">
    <xs:attribute name="role" type="xs:NMTOKEN"/>
    <xs:attribute name="diff">
      <xs:simpleType>
	<xs:restriction base="xs:NMTOKEN">
	  <xs:enumeration value="chg"/>
	  <xs:enumeration value="add"/>
	  <xs:enumeration value="del"/>
	  <xs:enumeration value="off"/>
	</xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="common">
    <xs:attribute name="id" type="xs:ID"/>
    <xs:attribute name="role" type="xs:NMTOKEN"/>
    <xs:attribute name="diff">
      <xs:simpleType>
	<xs:restriction base="xs:NMTOKEN">
	  <xs:enumeration value="chg"/>
	  <xs:enumeration value="add"/>
	  <xs:enumeration value="del"/>
	  <xs:enumeration value="off"/>
	</xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:attributeGroup name="commonRequired">
    <xs:attribute name="id" type="xs:ID" use="required"/>
    <xs:attribute name="role" type="xs:NMTOKEN"/>
    <xs:attribute name="diff">
      <xs:simpleType>
	<xs:restriction base="xs:NMTOKEN">
	  <xs:enumeration value="chg"/>
	  <xs:enumeration value="add"/>
	  <xs:enumeration value="del"/>
	  <xs:enumeration value="off"/>
	</xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:attributeGroup>
  <xs:complexType name="actionType">
    <xs:sequence>
      <xs:element name="owner" type="xs:string"/>
      <xs:element name="description" type="blockType"/>
      <xs:element name="states">
	<xs:complexType>
	  <xs:sequence>
	    <xs:element name="accepted" type="stateType"/>
	    <xs:choice minOccurs="0" maxOccurs="unbounded">
	      <xs:element name="accepted" type="stateType"/>
	      <xs:element name="responded" type="stateType"/>
	      <xs:element name="maintained" type="stateType"/>
	      <xs:element name="resolved" type="finalStateType"/>
	    </xs:choice>
	  </xs:sequence>
	</xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="id" type="xs:ID" use="optional"/>
  </xs:complexType>
  <xs:element name="code" type="xs:string"/>
  <xs:complexType name="blockType">
    <xs:choice maxOccurs="unbounded">
      <xs:element ref="p"/>
      <xs:element ref="eg"/>
      <xs:element ref="ulist"/>
      <xs:element ref="olist"/>
      <xs:element ref="slist"/>
      <xs:element ref="glist"/>
    </xs:choice>
  </xs:complexType>
  <xs:element name="eg">
    <xs:complexType>
      <xs:simpleContent>
	<xs:extension base="xs:string">
	  <xs:attribute name="role" type="xs:string" use="optional"/>
	  <xs:attribute ref="xml:space"/>
	</xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="emph" type="xs:string"/>
  <xs:element name="header">
    <xs:complexType>
      <xs:sequence>
	<xs:element name="title">
	  <xs:complexType>
	    <xs:simpleContent>
	      <xs:extension base="xs:string">
		<xs:attributeGroup ref="common"/>
	      </xs:extension>
	    </xs:simpleContent>
	  </xs:complexType>
	</xs:element>
	<xs:element name="subtitle" type="xs:string" minOccurs="0"/>
	<xs:element name="version" type="xs:string" minOccurs="0"/>
	<xs:element name="w3c-designation" type="xs:string"/>
	<xs:element name="w3c-doctype" type="xs:string"/>
	<xs:element name="pubdate">
	  <xs:complexType name="pubdateType">
	    <xs:sequence>
	      <xs:element name="day" type="xs:gDay" minOccurs="0"/>
	      <xs:element name="month" type="xs:string"/>
	      <xs:element name="year" type="xs:gYear"/>
	    </xs:sequence>
	    <xs:attributeGroup ref="common"/>
	  </xs:complexType>
	</xs:element>
	<xs:element name="notice" minOccurs="0" maxOccurs="unbounded">
	  <xs:complexType>
	    <xs:choice maxOccurs="unbounded">
	      <xs:element ref="p"/>
	      <xs:element ref="ulist"/>
	      <xs:element ref="olist"/>
	      <xs:element ref="slist"/>
	      <xs:element ref="glist"/>
	    </xs:choice>
	    <xs:attributeGroup ref="common"/>
	  </xs:complexType>
	</xs:element>
	<xs:element name="publoc">
	  <xs:complexType>
	    <xs:sequence>
	      <xs:element ref="loc" maxOccurs="unbounded"/>
	    </xs:sequence>
	    <xs:attributeGroup ref="common"/>
	  </xs:complexType>
	</xs:element>
	<xs:element name="latestloc" minOccurs="0">
	  <xs:complexType mixed="true">
	    <xs:sequence>
	      <xs:element ref="loc"/>
	    </xs:sequence>
	    <xs:attributeGroup ref="common"/>
	  </xs:complexType>
	</xs:element>
	<xs:element name="prevlocs" minOccurs="0">
	  <xs:complexType mixed="true">
	    <xs:sequence>
	      <xs:element ref="loc" maxOccurs="unbounded"/>
	    </xs:sequence>
	    <xs:attributeGroup ref="common"/>
	  </xs:complexType>
	</xs:element>
	<xs:element name="authlist">
	  <xs:complexType>
	    <xs:sequence>
	      <xs:element name="author" maxOccurs="unbounded">
		<xs:complexType>
		  <xs:sequence>
		    <xs:element name="name" type="xs:string"/>
		    <xs:element name="affiliation" type="xs:string" minOccurs="0"/>
		    <xs:element name="email" minOccurs="0">
		      <xs:complexType>
			<xs:simpleContent>
			  <xs:extension base="xs:anyURI">
			    <xs:attributeGroup ref="common"/>
			    <xs:attributeGroup ref="xlinkSimple"/>
			  </xs:extension>
			</xs:simpleContent>
		      </xs:complexType>
		    </xs:element>
		    <xs:element name="uri" minOccurs="0">
		      <xs:complexType>
			<xs:simpleContent>
			  <xs:extension base="xs:anyURI">
			    <xs:attributeGroup ref="common"/>
			    <xs:attributeGroup ref="xlinkSimple"/>
			  </xs:extension>
			</xs:simpleContent>
		      </xs:complexType>
		    </xs:element>
		  </xs:sequence>
		  <xs:attributeGroup ref="common"/>
		</xs:complexType>
	      </xs:element>
	    </xs:sequence>
	    <xs:attributeGroup ref="common"/>
	  </xs:complexType>
	</xs:element>
	<xs:element name="copyright" minOccurs="0">
	  <xs:complexType>
	    <xs:choice maxOccurs="unbounded">
	      <xs:element ref="p"/>
	      <xs:element ref="ulist"/>
	      <xs:element ref="olist"/>
	      <xs:element ref="slist"/>
	      <xs:element ref="glist"/>
	    </xs:choice>
	    <xs:attributeGroup ref="common"/>
	  </xs:complexType>
	</xs:element>
	<xs:sequence>
	  <xs:element name="abstract" type="blockType"/>
	  <xs:element name="status" type="blockType"/>
	</xs:sequence>
	<xs:element name="pubstmt" minOccurs="0">
	  <xs:complexType>
	    <xs:choice maxOccurs="unbounded">
	      <xs:element ref="p"/>
	      <xs:element ref="ulist"/>
	      <xs:element ref="olist"/>
	      <xs:element ref="slist"/>
	      <xs:element ref="glist"/>
	    </xs:choice>
	    <xs:attributeGroup ref="common"/>
	  </xs:complexType>
	</xs:element>
	<xs:element name="sourcedesc" minOccurs="0">
	  <xs:complexType>
	    <xs:choice maxOccurs="unbounded">
	      <xs:element ref="p"/>
	      <xs:element ref="ulist"/>
	      <xs:element ref="olist"/>
	      <xs:element ref="slist"/>
	      <xs:element ref="glist"/>
	    </xs:choice>
	    <xs:attributeGroup ref="common"/>
	  </xs:complexType>
	</xs:element>
	<xs:element name="langusage">
	  <xs:complexType>
	    <xs:sequence>
	      <xs:element name="language" type="xs:string" maxOccurs="unbounded"/>
	    </xs:sequence>
	    <xs:attributeGroup ref="common"/>
	  </xs:complexType>
	</xs:element>
	<xs:element name="revisiondesc">
	  <xs:complexType>
	    <xs:choice maxOccurs="unbounded">
	      <xs:element ref="p"/>
	      <xs:element ref="ulist"/>
	      <xs:element ref="olist"/>
	      <xs:element ref="slist"/>
	      <xs:element ref="glist"/>
	    </xs:choice>
	    <xs:attributeGroup ref="common"/>
	  </xs:complexType>
	</xs:element>
      </xs:sequence>
      <xs:attributeGroup ref="common"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="slist">
    <xs:complexType>
      <xs:sequence>
	<xs:element name="sitem" maxOccurs="unbounded">
	  <xs:complexType mixed="true">
	    <xs:sequence minOccurs="0" maxOccurs="unbounded">
	      <xs:element ref="emph"/>
	      <xs:element ref="quote"/>
	      <xs:element ref="xspecref"/>
	      <xs:element ref="code"/>
	      <xs:element ref="loc"/>
	    </xs:sequence>
	    <xs:attributeGroup ref="common"/>
	  </xs:complexType>
	</xs:element>
      </xs:sequence>
      <xs:attributeGroup ref="common"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="glist">
    <xs:complexType>
      <xs:sequence>
	<xs:element name="gitem" maxOccurs="unbounded">
	  <xs:complexType>
	    <xs:sequence>
	      <xs:element name="label">
		<xs:complexType mixed="true">
		  <xs:sequence minOccurs="0" maxOccurs="unbounded">
		    <xs:element ref="emph"/>
		    <xs:element ref="quote"/>
		    <xs:element ref="code"/>
		    <xs:element ref="loc"/>
		  </xs:sequence>
		  <xs:attributeGroup ref="common"/>
		</xs:complexType>
	      </xs:element>
	      <xs:element name="def">
		<xs:complexType>
		  <xs:choice minOccurs="0" maxOccurs="unbounded">
		    <xs:element ref="p"/>
		    <xs:element ref="ulist"/>
		    <xs:element ref="olist"/>
		    <xs:element ref="slist"/>
		    <xs:element ref="glist"/>
		    <xs:element ref="eg"/>
		  </xs:choice>
		  <xs:attributeGroup ref="common"/>
		</xs:complexType>
	      </xs:element>
	    </xs:sequence>
	    <xs:attributeGroup ref="common"/>
	  </xs:complexType>
	</xs:element>
      </xs:sequence>
      <xs:attributeGroup ref="common"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="p" type="inlineType"/>
  <xs:complexType name="issueType">
    <xs:sequence>
      <xs:element name="ihead">
	<xs:complexType>
	  <xs:sequence>
	    <xs:element name="title" type="xs:string"/>
	  </xs:sequence>
	</xs:complexType>
      </xs:element>
      <xs:element name="states">
	<xs:complexType>
	  <xs:sequence>
	    <xs:element name="raised" type="raisedType"/>
	    <xs:choice minOccurs="0" maxOccurs="unbounded">
	      <xs:element name="raised" type="raisedType"/>
	      <xs:element name="accepted" type="stateType"/>
	      <xs:element name="declined" type="finalStateType"/>
	      <xs:element name="subsumed" type="subsumedType"/>
	      <xs:element name="moved" type="stateType"/>
	      <xs:element name="decided" type="finalStateType"/>
	    </xs:choice>
	  </xs:sequence>
	</xs:complexType>
      </xs:element>
      <xs:element name="context" type="blockType" minOccurs="0"/>
      <xs:element name="discussions" minOccurs="0">
	<xs:complexType>
	  <xs:sequence>
	    <xs:element name="discussion">
	      <xs:complexType>
		<xs:sequence>
		  <xs:element name="date" type="xs:date"/>
		</xs:sequence>
		<xs:attributeGroup ref="xlinkSimple"/>
	      </xs:complexType>
	    </xs:element>
	  </xs:sequence>
	</xs:complexType>
      </xs:element>
      <xs:element name="actions" minOccurs="0">
	<xs:complexType>
	  <xs:sequence>
	    <xs:element name="action" type="actionType" maxOccurs="unbounded"/>
	  </xs:sequence>
	</xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="type" use="required">
      <xs:simpleType>
	<xs:restriction base="xs:NMTOKEN">
	  <xs:enumeration value="clarification"/>
	  <xs:enumeration value="editorial"/>
	  <xs:enumeration value="error"/>
	  <xs:enumeration value="proposal"/>
	</xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="id" type="xs:ID" use="required"/>
  </xs:complexType>
  <xs:element name="issues">
    <xs:complexType>
      <xs:sequence>
	<xs:element ref="header"/>
	<xs:element name="body">
	  <xs:complexType>
	    <xs:sequence>
	      <xs:element name="issue" type="issueType" maxOccurs="unbounded"/>
	    </xs:sequence>
	  </xs:complexType>
	</xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="olist">
    <xs:complexType>
      <xs:sequence>
	<xs:element name="item" type="blockType" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="loc">
    <xs:complexType>
      <xs:simpleContent>
	<xs:extension base="xs:string">
	  <xs:attributeGroup ref="xlinkSimple"/>
	</xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="inlineType" mixed="true">
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element ref="emph"/>
      <xs:element ref="quote"/>
      <xs:element ref="code"/>
      <xs:element ref="loc"/>
      <xs:element ref="issueref"/>
      <xs:element ref="xspecref"/>
    </xs:choice>
  </xs:complexType>
  <xs:element name="issueref">
    <xs:complexType>
      <xs:attribute name="ref" type="xs:IDREF" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="quote">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
	<xs:element ref="code"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="stateType">
    <xs:sequence>
      <xs:element name="date" type="xs:date"/>
      <xs:element name="description" type="blockType" minOccurs="0"/>
      <xs:element name="context" type="blockType" minOccurs="0"/>
    </xs:sequence>
    <xs:attributeGroup ref="xlinkSimple"/>
    <xs:attribute name="id" type="xs:ID"/>
  </xs:complexType>
  <xs:element name="ulist">
    <xs:complexType>
      <xs:sequence>
	<xs:element name="item" type="blockType" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="raisedType">
    <xs:complexContent>
      <xs:extension base="stateType">
	<xs:sequence>
	  <xs:element name="originator">
	    <xs:complexType>
	      <xs:simpleContent>
		<xs:extension base="xs:string">
		  <xs:attributeGroup ref="xlinkSimple"/>
		</xs:extension>
	      </xs:simpleContent>
	    </xs:complexType>
	  </xs:element>
	  <xs:element name="onBehalfOf" minOccurs="0">
	    <xs:complexType>
	      <xs:simpleContent>
		<xs:extension base="xs:string">
		  <xs:attributeGroup ref="xlinkSimple"/>
		</xs:extension>
	      </xs:simpleContent>
	    </xs:complexType>
	  </xs:element>
	</xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="finalStateType">
    <xs:complexContent>
      <xs:extension base="stateType">
	<xs:sequence>
	  <xs:element name="acknowledgment" minOccurs="0">
	    <xs:complexType>
	      <xs:simpleContent>
		<xs:extension base="xs:string">
		  <xs:attributeGroup ref="xlinkSimple"/>
		</xs:extension>
	      </xs:simpleContent>
	    </xs:complexType>
	  </xs:element>
	  <xs:element name="confirmation" minOccurs="0">
	    <xs:complexType>
	      <xs:simpleContent>
		<xs:extension base="xs:string">
		  <xs:attributeGroup ref="xlinkSimple"/>
		</xs:extension>
	      </xs:simpleContent>
	    </xs:complexType>
	  </xs:element>
	</xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="subsumedType">
    <xs:complexContent>
      <xs:extension base="stateType">
	<xs:attribute name="ref" type="xs:IDREF" use="required"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:element name="xspecref">
    <xs:complexType>
      <xs:simpleContent>
	<xs:extension base="xs:string">
	  <xs:attributeGroup ref="xlinkSimple"/>
	</xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
</xs:schema>
