<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="http://docs.oasis-open.org/ws-sx/issues/Issues.xsd" 
	xmlns:i="http://docs.oasis-open.org/ws-sx/issues/Issues.xsd" 
	xmlns:xs="http://www.w3.org/2001/XMLSchema" 
	xmlns="" elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:element name="issues">
    <xs:annotation>
      <xs:documentation>An issues list for a particular deliverable, with an id and date.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="i:head" />
        <xs:element ref="i:issue" minOccurs="0" maxOccurs="unbounded" />
        <xs:element ref="i:action" minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="head">
    <xs:annotation>
      <xs:documentation>Issue list metadata</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="uri" type="xs:anyURI">
          <xs:annotation>
            <xs:documentation>A resolvable URI for the issues list.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="title" type="xs:string">
          <xs:annotation>
            <xs:documentation>The name of the issues list.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="date" type="xs:string">
          <xs:annotation>
            <xs:documentation>The date of the latest change to the issues list</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="revision" type="xs:string">
          <xs:annotation>
            <xs:documentation>The revision number of the issues list</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="protocols">
          <xs:annotation>
            <xs:documentation>
              Define the protocol specs with specific revisions issues can refer to.
            </xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="protocol" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="revision" maxOccurs="unbounded">
                      <xs:complexType>
                        <xs:attribute name="artifact" type="xs:string" use="required" />
                        <xs:attribute name="href" type="xs:anyURI" use="required" />
                        <xs:attribute name="stage" use="required">
                          <xs:simpleType>
                            <xs:restriction base="xs:string">
                              <xs:enumeration value="contrib"/>
                              <xs:enumeration value="ed"/>
                              <xs:enumeration value="wd"/>
                              <xs:enumeration value="cd"/>
                              <xs:enumeration value="cs"/>
                              <xs:enumeration value="os"/>
                            </xs:restriction>
                          </xs:simpleType>
                        </xs:attribute>
                        <xs:attribute name="date" type="xs:date" use="optional" />
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                  <xs:attribute name="name" type="xs:string" use="required" />
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="targets">
          <xs:annotation>
            <xs:documentation>
              Define the specification and part(s) issues can refer to, i.e. schema, wsdl, etc.
            </xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="target" maxOccurs="unbounded" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="states">
          <xs:annotation>
            <xs:documentation>
              Define the states an issue can have in the status attribute. You can also assign an
              html color value for the detail listing using the color attribute.
            </xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:sequence>
              <xs:element name="state" maxOccurs="unbounded">
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:extension base="xs:string">
                      <xs:attribute name="color" type="xs:string" use="optional" />
                      <!--<xs:attribute name="type">
                                                <xs:simpleType>
                                                    <xs:restriction base="xs:string">
                            <xs:enumeration value="Open" />
                            <xs:enumeration value="Editor" />
														<xs:enumeration value="Pending" />
														<xs:enumeration value="Done" />
														<xs:enumeration value="Resolved" />
														<xs:enumeration value="Deferred" />
                            <xs:enumeration value="Closed" />
                                                    </xs:restriction>
                                                </xs:simpleType>
                                            </xs:attribute>-->
                    </xs:extension>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="issue">
    <xs:annotation>
      <xs:documentation>
        An individual issue (of any kind). It must have a unique id and a
        recorded status.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="title" type="xs:string">
          <xs:annotation>
            <xs:documentation>A short name for the issue.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="description">
          <xs:annotation>
            <xs:documentation>
              A detailed description of the issue's nature using elements
              from XHTML 1.0 (www.w3.org/1999/xhtml).
            </xs:documentation>
          </xs:annotation>
          <xs:complexType mixed="true">
            <xs:sequence>
              <xs:any namespace="##other" processContents="lax" minOccurs="0" 
                      maxOccurs="unbounded"></xs:any>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="protocol" type="i:protocolType" maxOccurs="unbounded"/>
        <xs:element name="target" minOccurs="1" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation>
              Which parts of a specification the issue is refering to, i.e. schema, wsdl, etc.
              Use values defined in targets of issue list.
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="type">
          <xs:annotation>
            <xs:documentation>The type of the issue (admin (action items), editorial or design)</xs:documentation>
          </xs:annotation>
          <xs:simpleType>
            <xs:restriction base="xs:string">
              <xs:enumeration value="admin" />
              <xs:enumeration value="editorial" />
              <xs:enumeration value="design" />
              <xs:enumeration value="" />
            </xs:restriction>
          </xs:simpleType>
        </xs:element>
        <xs:element name="origin" minOccurs="0">
          <xs:annotation>
            <xs:documentation>
              A record of the issue's origin, optionally including its
              date and a link to where it was raised (e.g., in the mail archive)
            </xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:simpleContent>
              <xs:extension base="xs:string">
                <xs:attribute name="href" type="xs:anyURI" use="optional" />
                <xs:attribute name="date" type="xs:date" use="optional" />
              </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
        </xs:element>
        <xs:element name="owner" minOccurs="0">
          <xs:annotation>
            <xs:documentation>
              The WG member(s) who drives the resolution issue and is
              responsible for summarizing its status to the WG.
            </xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:simpleContent>
              <xs:extension base="xs:string">
                <xs:attribute name="href" type="xs:anyURI" use="optional" />
              </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
        </xs:element>
        <xs:element name="justification" minOccurs="0">
          <xs:annotation>
            <xs:documentation>
              Justification for the issue; e.g., a use case or
              architectural motivation using elements from XHTML 1.0
              (www.w3.org/1999/xhtml).
            </xs:documentation>
          </xs:annotation>
          <xs:complexType mixed="true">
            <xs:sequence>
              <xs:any namespace="##other" processContents="lax" minOccurs="0" 
                      maxOccurs="unbounded"></xs:any>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="proposal" minOccurs="0" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation>
              Proposed solutions for the issue using elements from XHTML 1.0
              (www.w3.org/1999/xhtml).
            </xs:documentation>
          </xs:annotation>
          <xs:complexType mixed="true">
            <xs:sequence>
              <xs:element name="protocol" type="i:protocolType" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>
                    Specify the revision the resolution is against, must match a revision value from the
                    protocol list in the issue list metadata.
                  </xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:any namespace="##other" processContents="lax" minOccurs="0" 
                      maxOccurs="unbounded"></xs:any>
            </xs:sequence>
            <xs:attribute name="date" type="xs:date" use="optional" />
            <xs:attribute name="href" type="xs:anyURI" use="optional" />
          </xs:complexType>
        </xs:element>
        <xs:element name="resolution" minOccurs="0" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation>
              The final resolution of the issue; should be in
              specification text or nearly so. Use elements from XHTML 1.0
              (www.w3.org/1999/xhtml).
            </xs:documentation>
          </xs:annotation>
          <xs:complexType mixed="true">
            <xs:sequence>
              <xs:element name="protocol" type="i:protocolType" minOccurs="0" maxOccurs="unbounded">
                <xs:annotation>
                  <xs:documentation>
                    Specify the revision the resolution is against, must match a revision value from the
                    protocol list in the issue list metadata.
                  </xs:documentation>
                </xs:annotation>
              </xs:element>
              <xs:any namespace="##other" processContents="lax" minOccurs="0" 
                      maxOccurs="unbounded"></xs:any>
            </xs:sequence>
            <xs:attribute name="date" type="xs:date" use="optional" />
            <xs:attribute name="href" type="xs:anyURI" use="optional" />
          </xs:complexType>
        </xs:element>
        <xs:element name="relid" minOccurs="0" maxOccurs="unbounded">
          <xs:annotation>
            <xs:documentation>Related issue</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required" />
      <xs:attribute name="status" type="xs:string" use="required">
        <xs:annotation>
          <xs:documentation>Use values defined via the state element in the issue list.</xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="opened" type="xs:date" use="optional" />
      <xs:attribute name="closed" type="xs:date" use="optional" />
      <xs:attribute name="isPR" type="xs:boolean" use="optional" default="false"/>
      <xs:attribute name="edstatus" use="optional">
        <xs:annotation>
          <xs:documentation>Can use additional values than the ones defined via the state element in the issue list.</xs:documentation>
        </xs:annotation>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="action">
    <xs:annotation>
      <xs:documentation>An action item assigned to a TC memeber</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="title" type="xs:string">
          <xs:annotation>
            <xs:documentation>A short name for the AI.</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="description" minOccurs="0">
          <xs:annotation>
            <xs:documentation>
              A detailed description of the AI using elements
              from XHTML 1.0 (www.w3.org/1999/xhtml).
            </xs:documentation>
          </xs:annotation>
          <xs:complexType mixed="true">
            <xs:sequence>
              <xs:any namespace="##other" processContents="lax" minOccurs="0" 
                      maxOccurs="unbounded"></xs:any>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="owner" minOccurs="0">
          <xs:annotation>
            <xs:documentation>
              The WG member(s) responsible for the AI
            </xs:documentation>
          </xs:annotation>
          <xs:complexType>
            <xs:simpleContent>
              <xs:extension base="xs:string">
                <xs:attribute name="href" type="xs:anyURI" use="optional" />
              </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="id" type="xs:ID" use="required" />
      <xs:attribute name="date" type="xs:date" use="required" />
      <xs:attribute name="status" use="required">
        <xs:annotation>
          <xs:documentation>State of the AI, open or closed</xs:documentation>
        </xs:annotation>
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="open" />
            <xs:enumeration value="closed" />
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="protocolType">
    <xs:annotation>
      <xs:documentation>
        Which specification and part(s) the issue is refering to, i.e. schema, wsdl, etc.
        Use values defined in targets of issue list.
      </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="revision" type="xs:string" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
</xs:schema>