<?xml version="1.0"?>
<!--
Copyright (C) The Business Process Management Initiative [BPMI.org] (2002,2003).
All Rights Reserved.

This document and the information contained herein is provided on an
"AS IS" basis and BPMI.org DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

The full language of the notice is available at http://www.bpmi.org
-->
<xsd:schema targetNamespace="http://www.bpmi.org/2003/BPML/process"
            xmlns:bpml="http://www.bpmi.org/2003/BPML/process"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            elementFormDefault="qualified" blockDefault="#all">

  <xsd:element name="package" type="bpml:package"/>

  <xsd:complexType name="package">
    <xsd:complexContent>
      <xsd:extension base="bpml:documented">
        <xsd:sequence>
          <xsd:element name="feature" type="bpml:feature"
                       minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element name="import" type="bpml:import"
                       minOccurs="0" maxOccurs="unbounded"/>
          <xsd:choice minOccurs="1" maxOccurs="unbounded">
            <xsd:element name="process" type="bpml:process"/>
            <xsd:element name="property" type="bpml:property"/>
            <xsd:element name="schedule" type="bpml:schedule"/>
          </xsd:choice>
        </xsd:sequence>
        <xsd:attribute name="targetNamespace" type="xsd:anyURI"
                       use="required"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="feature">
    <xsd:attribute name="name" type="xsd:anyURI"
                   use="required"/>
    <xsd:attribute name="version" type="xsd:NMTOKEN"
                   use="optional"/>
  </xsd:complexType>

  <xsd:complexType name="import">
    <xsd:attribute name="location" type="xsd:anyURI"
                   use="optional"/>
    <xsd:attribute name="namespace" type="xsd:anyURI"
                   use="required"/>
  </xsd:complexType>

  <xsd:complexType name="process">
    <xsd:complexContent>
      <xsd:extension base="bpml:nameRequired">
        <xsd:sequence>
          <xsd:choice>
            <xsd:element name="event" type="bpml:processEvent"/>
            <xsd:element name="parameters" type="bpml:parameters"
                         minOccurs="0" maxOccurs="1"/>
          </xsd:choice>
          <xsd:group ref="bpml:activitySet"/>
          <xsd:element name="compensation" type="bpml:compensation"
                       minOccurs="0" maxOccurs="1"/>
        </xsd:sequence>
        <xsd:attribute name="correlation" type="bpml:listQName"
                       use="optional"/>
        <xsd:attribute name="persistent" type="xsd:boolean"
                       use="optional" default="false"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="compensation">
    <xsd:complexContent>
      <xsd:extension base="bpml:nameRequired">
        <xsd:sequence>
          <xsd:choice>
            <xsd:element name="event" type="bpml:processEvent"/>
            <xsd:element name="parameters" type="bpml:parameters"
                         minOccurs="0" maxOccurs="1"/>
          </xsd:choice>
          <xsd:group ref="bpml:activitySet"/>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="exception">
    <xsd:complexContent>
      <xsd:extension base="bpml:nameRequired">
        <xsd:sequence>
          <xsd:choice>
            <xsd:element name="event" type="bpml:processEvent"/>
          </xsd:choice>
          <xsd:group ref="bpml:activitySet"/>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="nameRequired">
    <xsd:complexContent>
      <xsd:restriction base="bpml:activity">
        <xsd:sequence>
          <xsd:element name="documentation" type="bpml:documentation"
                       minOccurs="0" maxOccurs="1"/>
        </xsd:sequence>
        <xsd:attribute name="name" type="xsd:NCName"
                       use="required"/>
      </xsd:restriction>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="processEvent">
    <xsd:attribute name="activity" type="bpml:listNCName"
                   use="required"/>
    <xsd:attribute name="exclusive" type="xsd:boolean"
                   use="optional" default="false"/>
  </xsd:complexType>

  <xsd:complexType name="parameters">
    <xsd:sequence>
      <xsd:element name="input"
                   minOccurs="0" maxOccurs="unbounded">
        <xsd:complexType>
          <xsd:attribute name="name" type="xsd:QName"
                         use="required"/>
          <xsd:attribute name="required" type="xsd:boolean"
                         use="optional" default="true"/>
        </xsd:complexType>
      </xsd:element>
      <xsd:element name="output"
                   minOccurs="0" maxOccurs="unbounded">
        <xsd:complexType>
          <xsd:attribute name="code" type="xsd:QName"
                         use="optional"/>
          <xsd:attribute name="name" type="xsd:QName"
                         use="required"/>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="property">
    <xsd:complexContent>
      <xsd:extension base="bpml:documented">
        <xsd:choice minOccurs="0" maxOccurs="1">
          <xsd:element name="value" type="bpml:value"/>
        </xsd:choice>
        <xsd:attribute name="element" type="xsd:QName"
                       use="optional"/>
        <xsd:attribute name="fixed" type="xsd:boolean"
                       use="optional"/>
        <xsd:attribute name="name" type="xsd:NCName"
                       use="optional"/>
        <xsd:attribute name="ref" type="xsd:QName"
                       use="optional"/>
        <xsd:attribute name="type" type="xsd:QName"
                       use="optional"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="schedule">
    <xsd:complexContent>
      <xsd:extension base="bpml:documented">
        <xsd:sequence>
          <xsd:any namespace="##other" processContents="strict"
                   minOccurs="0" maxOccurs="1"/>
        </xsd:sequence>
        <xsd:attribute name="code" type="xsd:QName"
                       use="optional"/>
        <xsd:attribute name="name" type="xsd:NCName"
                       use="required"/>
        <xsd:attribute name="process" type="xsd:QName"
                       use="optional"/>
        <xsd:attribute name="repeat" type="xsd:QName"
                       use="optional"/>
        <xsd:attributeGroup ref="bpml:timeEvent"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="signal">
    <xsd:complexContent>
      <xsd:extension base="bpml:documented">
        <xsd:choice minOccurs="0" maxOccurs="1">
          <xsd:element name="source">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="condition" type="bpml:condition"
                             minOccurs="0" maxOccurs="1"/>
              </xsd:sequence>
              <xsd:attribute name="property" type="xsd:QName"
                             use="required"/>
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="value" type="bpml:value"/>
        </xsd:choice>
        <xsd:attribute name="element" type="xsd:QName"
                       use="optional"/>
        <xsd:attribute name="multi" type="xsd:boolean"
                       use="optional" default="false"/>
        <xsd:attribute name="name" type="xsd:NCName"
                       use="required"/>
        <xsd:attribute name="type" type="xsd:QName"
                       use="optional"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="activity">
    <xsd:complexContent>
      <xsd:extension base="bpml:documented">
        <xsd:attribute name="name" type="xsd:NCName"
                       use="optional"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="complexActivity">
    <xsd:complexContent>
      <xsd:extension base="bpml:activity">
        <xsd:attribute name="atomic" type="xsd:boolean"
                       use="optional" default="false"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:element name="otherActivity" abstract="true" type="bpml:activity"/>

  <xsd:complexType name="context">
    <xsd:sequence>
      <xsd:choice minOccurs="0" maxOccurs="unbounded">
        <xsd:element name="exception" type="bpml:exception"/>
        <xsd:element name="process" type="bpml:process"/>
        <xsd:element name="property" type="bpml:property"/>
        <xsd:element name="schedule" type="bpml:schedule"/>
        <xsd:element name="signal" type="bpml:signal"/>
      </xsd:choice>
      <xsd:element name="faults" type="bpml:faults"
                   minOccurs="0" maxOccurs="1"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="faults">
    <xsd:choice>
      <xsd:sequence>
        <xsd:element name="case"
                     minOccurs="1" maxOccurs="unbounded">
          <xsd:complexType>
            <xsd:complexContent>
              <xsd:extension base="bpml:faultCase">
                <xsd:attribute name="code" type="bpml:listQName"
                               use="required"/>
              </xsd:extension>
            </xsd:complexContent>
          </xsd:complexType>
        </xsd:element>
        <xsd:element name="default" type="bpml:faultCase"
                     minOccurs="0" maxOccurs="1"/>
      </xsd:sequence>
      <xsd:element name="default" type="bpml:faultCase"/>
    </xsd:choice>
  </xsd:complexType>

  <xsd:complexType name="faultCase">
    <xsd:complexContent>
      <xsd:extension base="bpml:documented">
        <xsd:group ref="bpml:activityList"/>
        <xsd:attribute name="name" type="xsd:NCName"
                       use="optional"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:group name="activitySet">
    <xsd:sequence>
      <xsd:element name="context" type="bpml:context"
                   minOccurs="0" maxOccurs="1"/>
      <xsd:group ref="bpml:activityList"/>
    </xsd:sequence>
  </xsd:group>

  <xsd:group name="activityList">
    <xsd:sequence>
      <xsd:choice minOccurs="1" maxOccurs="unbounded">
        <xsd:element name="action" type="bpml:action"/>
        <xsd:element name="all" type="bpml:all"/>
        <xsd:element name="assign" type="bpml:assign"/>
        <xsd:element name="call" type="bpml:call"/>
        <xsd:element name="choice" type="bpml:choice"/>
        <xsd:element name="compensate" type="bpml:compensate"/>
        <xsd:element name="delay" type="bpml:delay"/>
        <xsd:element name="empty" type="bpml:empty"/>
        <xsd:element name="fault" type="bpml:fault"/>
        <xsd:element name="foreach" type="bpml:foreach"/>
        <xsd:element name="raise" type="bpml:raise"/>
        <xsd:element name="sequence" type="bpml:sequence"/>
        <xsd:element name="spawn" type="bpml:spawn"/>
        <xsd:element name="switch" type="bpml:switch"/>
        <xsd:element name="synch" type="bpml:synch"/>
        <xsd:element name="until" type="bpml:until"/>
        <xsd:element name="while" type="bpml:while"/>
        <xsd:element ref="bpml:otherActivity"/>
      </xsd:choice>
    </xsd:sequence>
  </xsd:group>

  <xsd:complexType name="condition">
    <xsd:simpleContent>
      <xsd:extension base="bpml:expression">
        <xsd:anyAttribute namespace="##other"
                          processContents="strict"/>
      </xsd:extension>
    </xsd:simpleContent>
  </xsd:complexType>

  <xsd:complexType name="input">
    <xsd:attribute name="property" type="xsd:QName"
                   use="required"/>
  </xsd:complexType>

  <xsd:complexType name="messageInput">
    <xsd:complexContent>
      <xsd:extension base="bpml:input">
        <xsd:attribute name="element" type="xsd:QName"
                       use="optional"/>
        <xsd:attribute name="fault" type="xsd:QName"
                       use="optional"/>
        <xsd:attribute name="xpath" type="bpml:expression"
                       use="optional"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="parameterInput">
    <xsd:complexContent>
      <xsd:extension base="bpml:input">
        <xsd:attribute name="parameter" type="xsd:QName"
                       use="optional"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="output">
    <xsd:choice minOccurs="0" maxOccurs="1">
      <xsd:choice  minOccurs="1" maxOccurs="unbounded">
        <xsd:element name="source" type="bpml:sourceProperty"/>
        <xsd:element name="value" type="bpml:value"/>
      </xsd:choice>
      <xsd:any namespace="##other" processContents="strict"/>
    </xsd:choice>
    <xsd:attribute name="xpath" type="bpml:expression"
                   use="optional"/>
  </xsd:complexType>

  <xsd:complexType name="messageOutput">
    <xsd:complexContent>
      <xsd:extension base="bpml:output">
        <xsd:attribute name="element" type="xsd:NCName"
                       use="optional"/>
        <xsd:attribute name="fault" type="xsd:QName"
                       use="optional"/>
        <xsd:attribute name="type" type="xsd:NCName"
                       use="optional"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="parameterOutput">
    <xsd:complexContent>
      <xsd:extension base="bpml:output">
        <xsd:attribute name="parameter" type="xsd:QName"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="sourceProperty">
    <xsd:sequence>
      <xsd:any namespace="##other" processContents="strict"
               minOccurs="0" maxOccurs="1"/>
    </xsd:sequence>
    <xsd:attribute name="property" type="xsd:QName"
                   use="required"/>
    <xsd:attribute name="xpath" type="bpml:expression"
                   use="optional"/>
  </xsd:complexType>

  <xsd:complexType name="action">
    <xsd:complexContent>
      <xsd:extension base="bpml:activity">
        <xsd:sequence>
          <xsd:choice minOccurs="0" maxOccurs="unbounded">
            <xsd:element name="output" type="bpml:messageOutput"
                         minOccurs="1" maxOccurs="unbounded"/>
            <xsd:element name="input" type="bpml:messageInput"
                         minOccurs="0" maxOccurs="unbounded"/>
          </xsd:choice>
          <xsd:group ref="bpml:activityList"
                     minOccurs="0" maxOccurs="1"/>
        </xsd:sequence>
        <xsd:attribute name="atomic" type="xsd:boolean"
                       use="optional" default="false"/>
        <xsd:attribute name="correlate" type="xsd:QName"
                       use="optional"/>
        <xsd:attribute name="locate" type="xsd:QName"
                       use="optional"/>
        <xsd:attribute name="operation" type="xsd:NCName"
                       use="optional"/>
        <xsd:attribute name="portType" type="xsd:QName"
                       use="optional"/>
        <xsd:anyAttribute namespace="##other"
                          processContents="strict"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="all">
    <xsd:complexContent>
      <xsd:extension base="bpml:complexActivity">
        <xsd:group ref="bpml:activitySet"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="assign">
    <xsd:complexContent>
      <xsd:extension base="bpml:activity">
        <xsd:choice minOccurs="0" maxOccurs="1">
          <xsd:choice  minOccurs="1" maxOccurs="unbounded">
            <xsd:element name="source" type="bpml:sourceProperty"/>
            <xsd:element name="value" type="bpml:value"/>
          </xsd:choice>
          <xsd:any namespace="##other" processContents="strict"/>
        </xsd:choice>
        <xsd:attribute name="property" type="xsd:QName"
                       use="required"/>
        <xsd:attribute name="xpath" type="bpml:expression"
                       use="optional"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="call">
    <xsd:complexContent>
      <xsd:extension base="bpml:activity">
        <xsd:sequence>
          <xsd:element name="output" type="bpml:parameterOutput"
                       minOccurs="0" maxOccurs="unbounded"/>
          <xsd:element name="input" type="bpml:parameterInput"
                       minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="atomic" type="xsd:boolean"
                       use="optional" default="false"/>
        <xsd:attribute name="process" type="xsd:QName"
                       use="required"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="choice">
    <xsd:complexContent>
      <xsd:extension base="bpml:complexActivity">
        <xsd:sequence>
          <xsd:element name="event"
                       minOccurs="2" maxOccurs="unbounded">
            <xsd:complexType>
              <xsd:complexContent>
                <xsd:extension base="bpml:documented">
                  <xsd:sequence>
                    <xsd:choice>
                      <xsd:element name="action" type="bpml:action"/>
                      <xsd:element name="delay" type="bpml:delay"/>
                      <xsd:element name="synch" type="bpml:synch"/>
                    </xsd:choice>
                    <xsd:group ref="bpml:activitySet"/>
                  </xsd:sequence>
                </xsd:extension>
              </xsd:complexContent>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="compensate">
    <xsd:complexContent>
      <xsd:extension base="bpml:activity">
        <xsd:sequence>
          <xsd:element name="output" type="bpml:parameterOutput"
                       minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="atomic" type="xsd:boolean"
                       use="optional" default="false"/>
        <xsd:attribute name="process" type="bpml:listQName"
                       use="required"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="delay">
    <xsd:complexContent>
      <xsd:extension base="bpml:activity">
        <xsd:attributeGroup ref="bpml:timeEvent"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="empty">
    <xsd:complexContent>
      <xsd:extension base="bpml:activity"/>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="fault">
    <xsd:complexContent>
      <xsd:extension base="bpml:activity">
        <xsd:attribute name="code" type="xsd:QName"
                       use="optional"/>
        <xsd:attribute name="property" type="xsd:QName"
                       use="optional"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="foreach">
    <xsd:complexContent>
      <xsd:extension base="bpml:complexActivity">
        <xsd:group ref="bpml:activitySet"/>
        <xsd:attribute name="select" type="bpml:expression"
                       use="required"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="raise">
    <xsd:complexContent>
      <xsd:extension base="bpml:activity">
        <xsd:sequence>
          <xsd:element name="output" type="bpml:messageOutput"
                       minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="abort" type="xsd:boolean"
                       use="optional" default="true"/>
        <xsd:attribute name="signal" type="xsd:NCName"
                       use="required"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="sequence">
    <xsd:complexContent>
      <xsd:extension base="bpml:complexActivity">
        <xsd:group ref="bpml:activitySet"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="spawn">
    <xsd:complexContent>
      <xsd:extension base="bpml:activity">
        <xsd:sequence>
          <xsd:element name="output" type="bpml:parameterOutput"
                       minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="process" type="xsd:QName"
                       use="required"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="switch">
    <xsd:complexContent>
      <xsd:extension base="bpml:complexActivity">
        <xsd:sequence>
          <xsd:element name="case"
                       minOccurs="1" maxOccurs="unbounded">
            <xsd:complexType>
              <xsd:complexContent>
                <xsd:extension base="bpml:documented">
                  <xsd:sequence>
                    <xsd:element name="condition" type="bpml:condition"/>
                    <xsd:group ref="bpml:activitySet"/>
                  </xsd:sequence>
                  <xsd:attribute name="name" type="xsd:NCName"
                                 use="optional"/>
                </xsd:extension>
              </xsd:complexContent>
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="default"
                       minOccurs="0" maxOccurs="1">
            <xsd:complexType>
              <xsd:complexContent>
                <xsd:extension base="bpml:documented">
                  <xsd:sequence>
                    <xsd:group ref="bpml:activitySet"/>
                  </xsd:sequence>
                  <xsd:attribute name="name" type="xsd:NCName"
                                 use="optional"/>
                </xsd:extension>
              </xsd:complexContent>
            </xsd:complexType>
          </xsd:element>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="synch">
    <xsd:complexContent>
      <xsd:extension base="bpml:activity">
        <xsd:sequence>
          <xsd:element name="condition" type="bpml:condition"
                       minOccurs="0" maxOccurs="1"/>
          <xsd:element name="input" type="bpml:messageInput"
                       minOccurs="0" maxOccurs="unbounded"/>
        </xsd:sequence>
        <xsd:attribute name="abort" type="xsd:boolean"
                       use="optional" default="true"/>
        <xsd:attribute name="signal" type="xsd:NCName"
                       use="required"/>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="until">
    <xsd:complexContent>
      <xsd:extension base="bpml:complexActivity">
        <xsd:sequence>
          <xsd:element name="condition"
                       type="bpml:condition"/>
          <xsd:group ref="bpml:activitySet"/>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:complexType name="while">
    <xsd:complexContent>
      <xsd:extension base="bpml:complexActivity">
        <xsd:sequence>
          <xsd:element name="condition"
                       type="bpml:condition"/>
          <xsd:group ref="bpml:activitySet"/>
        </xsd:sequence>
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>

  <xsd:simpleType name="listQName">
    <xsd:list itemType="xsd:QName"/>
  </xsd:simpleType>

  <xsd:simpleType name="listNCName">
    <xsd:list itemType="xsd:NCName"/>
  </xsd:simpleType>

  <xsd:simpleType name="expression">
    <xsd:restriction base="xsd:string">
      <xsd:minLength value="1"/>
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:complexType name="documented">
    <xsd:sequence>
      <xsd:element name="documentation" type="bpml:documentation"
                   minOccurs="0" maxOccurs="1"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="documentation" mixed="true">
    <xsd:sequence>
      <xsd:any namespace="##other" processContents="lax"
               minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:complexType name="value" mixed="true">
    <xsd:sequence>
      <xsd:any namespace="##other" processContents="lax"
               minOccurs="0" maxOccurs="unbounded"/>
    </xsd:sequence>
  </xsd:complexType>

  <xsd:attributeGroup name="timeEvent">
    <xsd:attribute name="duration" type="xsd:QName"
                   use="optional"/>
    <xsd:attribute name="instant" type="xsd:QName"
                   use="optional"/>
  </xsd:attributeGroup>

</xsd:schema>
