<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:mks="http://www.mks.com/schemas/MKSItems"
           targetNamespace="http://www.mks.com/schemas/MKSItems" 
           elementFormDefault="qualified"
           attributeFormDefault="unqualified">

  <xs:import namespace="http://www.w3.org/1999/xhtml" schemaLocation="http://www.w3.org/2002/08/xhtml/xhtml1-transitional.xsd" />
  <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>

  <xs:element name="MKSItems">
    <xs:annotation>
      <xs:documentation>This is the root element.

For further information on the schema please refer to the documentation.</xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Metadata" type="mks:MetadataType" minOccurs="0" maxOccurs="1" />
        <xs:element name="Item" type="mks:ItemType" minOccurs="1" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:attribute name="schemaVersion" type="xs:string" use="optional" />
    </xs:complexType>
  </xs:element>

  <xs:complexType name="ItemType">
    <xs:annotation>
      <xs:documentation>Defines a complex type that is used to represent an Item.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Attributes" type="mks:AttributesType" minOccurs="0" maxOccurs="1" />
      <xs:element name="Field" type="mks:FieldType"  minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="Richcontent" type="mks:RichcontentType" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="Relationship" type="mks:RelationshipType" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="Attachments" type="mks:AttachmentsType" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="Children" type="mks:ChildrenType" minOccurs="0" maxOccurs="1"/>
    </xs:sequence>
    <xs:attribute name="prototype" type="xs:string" use="optional" />
    <xs:attribute name="mksid" type="xs:string" use="optional" />
    <xs:attribute name="id" type="xs:string" use="optional" />
  </xs:complexType>

  <xs:complexType name="MetadataType">
    <xs:annotation>
      <xs:documentation>Defines a complex type used to represent optional metadata.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element minOccurs="0" maxOccurs="1" name="Date" type="xs:dateTime" />
      <xs:element minOccurs="0" maxOccurs="1" name="IntegrationId" type="xs:string" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="FieldType">
    <xs:annotation>
      <xs:documentation>Defines a complex type that is used to represent a normal Field.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="name" type="xs:string" use="required" />
        <xs:attribute name="dataType" type="xs:string" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="RichcontentType">
    <xs:annotation>
      <xs:documentation>Defines a complex type used to represent a Richcontent field.
The data in this field must be wrapped by a single div element and be valid xhtml.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:any namespace="http://www.w3.org/1999/xhtml" processContents="skip" />
    </xs:sequence>
    <xs:attribute name="name" type="xs:string" use="required" />
  </xs:complexType>

  <xs:complexType name="TargetType">
    <xs:annotation>
      <xs:documentation>Defines a complex type used to represent a relationship.</xs:documentation>
    </xs:annotation>
    <xs:attribute name="id" type="xs:string" use="optional" />
    <xs:attribute name="mksid" type="xs:string" use="optional" />
  </xs:complexType>

  <xs:complexType name="RelationshipType">
    <xs:annotation>
      <xs:documentation>Defines a complex type used to represent a Relationship field.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Target" type="mks:TargetType" minOccurs="1" maxOccurs="unbounded" />
    </xs:sequence>
    <xs:attribute name="name" type="xs:string" use="required" />
  </xs:complexType>

  <xs:complexType name="AttachmentType">
    <xs:annotation>
      <xs:documentation>Defines a complex type used to represent a file attachment.</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="name" type="xs:string" use="optional" />
        <xs:attribute name="summary" type="xs:string" use="optional" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="AttachmentsType">
    <xs:annotation>
      <xs:documentation>Defines a complex type used to represent an Attachment field.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Attachment" type="mks:AttachmentType" minOccurs="1" maxOccurs="unbounded" />
    </xs:sequence>
    <xs:attribute name="name" type="xs:string" use="required" />
  </xs:complexType>

  <xs:complexType name ="AttributesType">
    <xs:annotation>
      <xs:documentation>Defines a complex type used to represent a collection of Attributes.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Attribute" minOccurs="1" maxOccurs="unbounded">
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:string">
              <xs:attribute name="name" type="xs:string"/>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name="ChildrenType">
    <xs:annotation>
      <xs:documentation>Defines a complex type used to represent item structure.</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Item" type="mks:ItemType" minOccurs="1" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

</xs:schema>
