<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:xi="http://www.w3.org/2001/XInclude">

  <xs:annotation>
    <xs:documentation>
      id - unique identifier
    </xs:documentation>
  </xs:annotation>
  <xs:simpleType name="id">
    <xs:restriction base="xs:string">
      <xs:pattern value="[a-zA-Z0-9_]{1,16}"/>
    </xs:restriction>
  </xs:simpleType>


  <xs:annotation>
    <xs:documentation>
      name - simple name for objects
    </xs:documentation>
  </xs:annotation>
  <xs:simpleType name="name">
    <xs:restriction base="xs:string">
      <xs:maxLength value="80"/>
    </xs:restriction>
  </xs:simpleType>


  <xs:annotation>
    <xs:documentation>
      description - longer description of what an object means
    </xs:documentation>
  </xs:annotation>
  <xs:simpleType name="description">
    <xs:restriction base="xs:string">
      <xs:maxLength value="1000"/>
    </xs:restriction>
  </xs:simpleType>


  <xs:annotation>
    <xs:documentation>
      version - version number consisting of major, minor, 
                and optional patch parts
    </xs:documentation>
  </xs:annotation>
  <xs:simpleType name="version">
    <xs:restriction base="xs:string">
      <xs:pattern value="\d+.\d+(\.\d+)?"/>
    </xs:restriction>
  </xs:simpleType>


  <xs:annotation>
    <xs:documentation>
      priority - levels for prioritization
    </xs:documentation>
  </xs:annotation>
  <xs:simpleType name="priority">
    <xs:restriction base="xs:string">
      <xs:enumeration value="essential"/>
      <xs:enumeration value="highly desirable"/>
      <xs:enumeration value="desirable"/>
    </xs:restriction>
  </xs:simpleType>


  <xs:annotation>
    <xs:documentation>
      rating - indication of an object's worth on a scale of 1 to 10
    </xs:documentation>
  </xs:annotation>
  <xs:simpleType name="rating">
    <xs:restriction base="xs:integer">
      <xs:minInclusive value="1"/>
      <xs:maxInclusive value="10"/>
    </xs:restriction>
  </xs:simpleType>


  <xs:annotation>
    <xs:documentation>
      ratio - fraction between 0 and 1
    </xs:documentation>
  </xs:annotation>
  <xs:simpleType name="ratio">
    <xs:restriction base="xs:float">
      <xs:minInclusive value="0"/>
      <xs:maxInclusive value="1"/>
    </xs:restriction>
  </xs:simpleType>


  <xs:annotation>
    <xs:documentation>
      estimate - estimate in unspecified units (gummy bears, story points)
    </xs:documentation>
  </xs:annotation>
  <xs:simpleType name="estimate">
    <xs:restriction base="xs:float">
      <xs:pattern value="[0-9](\.5)?"/>
    </xs:restriction>
  </xs:simpleType>


  <xs:annotation>
    <xs:documentation>
      status - condition of an object
    </xs:documentation>
  </xs:annotation>
  <xs:simpleType name="status">
    <xs:restriction base="xs:string">
      <xs:enumeration value="open"/>
      <xs:enumeration value="waiting"/>
      <xs:enumeration value="in progress"/>
      <xs:enumeration value="implemented"/>
      <xs:enumeration value="tested"/>
      <xs:enumeration value="released"/>
      <xs:enumeration value="accepted"/>
      <xs:enumeration value="deployed"/>
    </xs:restriction>
  </xs:simpleType>
  

  <xs:annotation>
    <xs:documentation>
      url - reference to another object
    </xs:documentation>
  </xs:annotation>
  <xs:simpleType name="url">
    <xs:restriction base="xs:string">
      <xs:pattern value="[a-zA-z0-9;/:@=#&amp;$_,!\?\-\.\+\*'\(\)]+"/>
    </xs:restriction>
  </xs:simpleType>
  

  <xs:annotation>
    <xs:documentation>
      email - e-mail address
    </xs:documentation>
  </xs:annotation>
  <xs:simpleType name="email">
    <xs:restriction base="xs:string">
      <xs:pattern value="([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+"/>
    </xs:restriction>
  </xs:simpleType>
  

  <xs:annotation>
    <xs:documentation>
      assessment - evaluation of a time boxed period
    </xs:documentation>
  </xs:annotation>
  <xs:complexType name="assessment">
    <xs:sequence>
      <xs:annotation>
        <xs:documentation>
          measure      - an instrument for measuring the state of a time boxed period
          name         - the name of the measurement
          result       - the outcome of the measurement
          grade        - evaluation of the outcome of the time boxed period
          continuation - how to continue the project
        </xs:documentation>
      </xs:annotation>
      <xs:element name="measure" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="name" type="name"/>
            <xs:element name="result" type="description"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="grade">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="exceptional"/>
          <xs:enumeration value="passed"/>
          <xs:enumeration value="passed at risk"/>
          <xs:enumeration value="unfinished"/>
          <xs:enumeration value="failed"/>
          <xs:enumeration value="abandoned"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
    <xs:attribute name="continuation">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="as is"/>
          <xs:enumeration value="re-plan"/>
          <xs:enumeration value="de-scope"/>
          <xs:enumeration value="extend"/>
          <xs:enumeration value="try again"/>
          <xs:enumeration value="cancel"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>


  <xs:annotation>
    <xs:documentation>
      stakeholder-type - the kinds of people that have an interest in the project
    </xs:documentation>
  </xs:annotation>
  <xs:simpleType name="stakeholder-type">
    <xs:restriction base="xs:string">
      <xs:enumeration value="problem"/>
      <xs:enumeration value="solution"/>
      <xs:enumeration value="project"/>
    </xs:restriction>
  </xs:simpleType>


  <xs:annotation>
    <xs:documentation>
      team-members - persons working on a team
    </xs:documentation>
  </xs:annotation>
  <xs:complexType name="team-members">
    <xs:sequence>
      <xs:element name="person" maxOccurs="unbounded">
        <xs:complexType>
          <xs:attribute name="href" type="url" use="required"/>
          <xs:attribute name="fte" type="ratio"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  
  
  <xs:annotation>
    <xs:documentation>
      iteration-length - length of an iteration in weeks
    </xs:documentation>
  </xs:annotation>
  <xs:simpleType name="iteration-length">
    <xs:restriction base="xs:integer">
      <xs:minInclusive value="1"/>
      <xs:maxInclusive value="6"/>
    </xs:restriction>
  </xs:simpleType>
  
</xs:schema>
