<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:oasis:names:tc:wsrp:v1:types"
        xmlns:types="urn:oasis:names:tc:wsrp:v1:types"

        xmlns="http://www.w3.org/2001/XMLSchema"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"

        elementFormDefault="qualified">

<!-- This file reflects v1.0 of the specification -->

   <import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd"/>

   <!-- - - - - - - - - - - - - - - - - -->
   <!--  General types used throughout  -->
   <!-- - - - - - - - - - - - - - - - - -->

   <!-- This definition matches the WSRP v1 specification, but is not used throughout the
        rest of these definitions as not all stacks are able to handle restrictions on strings
   -->
   <simpleType name="Handle">
    <restriction base="xsd:string">
      <xsd:minLength value="1"/>
      <xsd:maxLength value="255"/>
    </restriction>
  </simpleType>
  <element name="Handle" type="types:Handle"/>

   <!-- This definition matches the WSRP v1 specification, but is not used throughout the
        rest of these definitions as not all stacks are able to handle restrictions on strings
   -->
   <simpleType name="ID">
    <restriction base="xsd:string">
      <xsd:minLength value="1"/>
      <xsd:maxLength value="4096"/>
    </restriction>
  </simpleType>
  <element name="ID" type="types:ID"/>

   <!-- This definition matches the WSRP v1 specification, but is not used throughout the
        rest of these definitions as not all stacks are able to handle restrictions on strings
   -->
   <simpleType name="Key">
    <restriction base="xsd:string">
      <xsd:minLength value="1"/>
      <xsd:maxLength value="255"/>
    </restriction>
  </simpleType>
  <element name="Key" type="types:Key"/>

  <complexType name="Extension">
    <sequence>
      <any namespace="##other" processContents="lax"  />
    </sequence>
  </complexType>

  <complexType name="LocalizedString">
    <sequence>
      <element name="value" type="xsd:string"/>
    </sequence>
    <attribute ref="xml:lang" use="required"/>
    <attribute name="resourceName" type="xsd:string"/>
  </complexType>

  <complexType name="ResourceList">
    <sequence>
      <element name="resources" type="types:Resource" maxOccurs="unbounded"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="Resource">
    <sequence>
      <element name="values" type="types:ResourceValue" maxOccurs="unbounded"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
    <attribute name="resourceName" type="xsd:string" use="required"/>
  </complexType>

  <complexType name="ResourceValue">
    <sequence>
      <element name="value" type="xsd:string"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
    <attribute ref="xml:lang" use="required"/>
  </complexType>

  <complexType name="StringArray">
    <sequence>
      <element name="String" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="StringArray" type="types:StringArray"/>

  <complexType name="NamedString">
    <sequence>
      <element name="value" type="xsd:string"/>
    </sequence>
    <attribute name="name" type="xsd:string" use="required"/>
  </complexType>

  <complexType name="NamedStringArray">
    <sequence>
      <element name="NamedString" type="types:NamedString" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="NamedStringArray" type="types:NamedStringArray"/>

   <!-- - - - - - - - - -->
   <!--  Producer types -->
   <!-- - - - - - - - - -->

   <complexType name="RegistrationData">
    <sequence>
      <element name="consumerName" type="xsd:string"/>
      <element name="consumerAgent" type="xsd:string"/>
      <element name="methodGetSupported" type="xsd:boolean"/>
      <element name="consumerModes" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      <element name="consumerWindowStates" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      <element name="consumerUserScopes" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      <element name="customUserProfileData" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      <element name="registrationProperties" type="types:Property" minOccurs="0" maxOccurs="unbounded"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="RegistrationData" type="types:RegistrationData"/>

  <complexType name="RegistrationState">
    <sequence>
      <element name="registrationState" type="xsd:base64Binary" minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="RegistrationState" type="types:RegistrationState"/>

  <complexType name="RegistrationContext">
    <sequence>
 <!-- <element name="registrationHandle" type="types:Handle"/>
  JAX-RPC RI doesn't handle restrictions on xsd:string
 -->
       <element name="registrationHandle" type="xsd:string"/>
      <element name="registrationState" type="xsd:base64Binary" minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="RegistrationContext" type="types:RegistrationContext"/>

  <complexType name="SessionContext">
    <sequence>
      <element name="sessionID" type="xsd:string"/>
      <element name="expires" type="xsd:int"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="SessionContext" type="types:SessionContext"/>

  <complexType name="RuntimeContext">
    <sequence>
      <element name="userAuthentication" type="xsd:string"/>
      <element name="portletInstanceKey" type="xsd:string" minOccurs="0"/>
      <element name="namespacePrefix" type="xsd:string" minOccurs="0"/>
      <element name="templates" type="types:Templates" minOccurs="0"/>
      <element name="sessionID" type="xsd:string" minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="RuntimeContext" type="types:RuntimeContext"/>

  <complexType name="ItemDescription">
    <sequence>
      <element name="description" type="types:LocalizedString"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
    <attribute name="itemName" type="xsd:string" use="required"/>
  </complexType>

  <simpleType name="CookieProtocol">
    <restriction base="xsd:string">
      <enumeration value="none"/>
      <enumeration value="perUser"/>
      <enumeration value="perGroup"/>
    </restriction>
  </simpleType>

  <complexType name="ServiceDescription">
    <sequence>
      <element name="requiresRegistration" type="xsd:boolean"/>
      <element name="offeredPortlets" type="types:PortletDescription" minOccurs="0" maxOccurs="unbounded"/>
      <element name="userCategoryDescriptions" type="types:ItemDescription" minOccurs="0" maxOccurs="unbounded"/>
      <element name="customUserProfileItemDescriptions" type="types:ItemDescription" minOccurs="0"
               maxOccurs="unbounded"/>
      <element name="customWindowStateDescriptions" type="types:ItemDescription" minOccurs="0" maxOccurs="unbounded"/>
      <element name="customModeDescriptions" type="types:ItemDescription" minOccurs="0" maxOccurs="unbounded"/>
      <element name="requiresInitCookie" type="types:CookieProtocol" default="none" minOccurs="0"/>
      <element name="registrationPropertyDescription" type="types:ModelDescription" minOccurs="0"/>
      <element name="locales" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      <element name="resourceList" type="types:ResourceList" minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="ServiceDescription" type="types:ServiceDescription"/>


   <!-- - - - - - - - - - - - - - - - - - - -->
   <!-- Portlet types (metadata and runtime) -->
   <!-- - - - - - - - - - - - - - - - - - - -->

   <complexType name="MarkupType">
    <sequence>
      <element name="mimeType" type="xsd:string"/>
      <element name="modes" type="xsd:string" maxOccurs="unbounded"/>
      <element name="windowStates" type="xsd:string" maxOccurs="unbounded"/>
      <element name="locales" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="PortletDescription">
    <sequence>
 <!-- <element name="portletHandle"    type="types:Handle"/> -->
       <element name="portletHandle" type="xsd:string"/>
      <element name="markupTypes" type="types:MarkupType" maxOccurs="unbounded"/>
      <element name="groupID" type="xsd:string" minOccurs="0"/>
      <element name="description" type="types:LocalizedString" minOccurs="0"/>
      <element name="shortTitle" type="types:LocalizedString" minOccurs="0"/>
      <element name="title" type="types:LocalizedString" minOccurs="0"/>
      <element name="displayName" type="types:LocalizedString" minOccurs="0"/>
      <element name="keywords" type="types:LocalizedString" minOccurs="0" maxOccurs="unbounded"/>
      <element name="userCategories" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      <element name="userProfileItems" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      <element name="usesMethodGet" type="xsd:boolean" default="false" minOccurs="0"/>
      <element name="defaultMarkupSecure" type="xsd:boolean" default="false" minOccurs="0"/>
      <element name="onlySecure" type="xsd:boolean" default="false" minOccurs="0"/>
      <element name="userContextStoredInSession" type="xsd:boolean" default="false" minOccurs="0"/>
      <element name="templatesStoredInSession" type="xsd:boolean" default="false" minOccurs="0"/>
      <element name="hasUserSpecificState" type="xsd:boolean" default="false" minOccurs="0"/>
      <element name="doesUrlTemplateProcessing" type="xsd:boolean" default="false" minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="PortletDescriptionResponse">
    <sequence>
      <element name="portletDescription" type="types:PortletDescription"/>
      <element name="resourceList" type="types:ResourceList" minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="PortletContext">
    <sequence>
 <!-- <element name="portletHandle" type="types:Handle"/> -->
       <element name="portletHandle" type="xsd:string"/>
      <element name="portletState" type="xsd:base64Binary" minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="PortletContext" type="types:PortletContext"/>

  <complexType name="DestroyFailed">
    <sequence>
      <element name="portletHandle" type="xsd:string"/>
      <element name="reason" type="xsd:string"/>
    </sequence>
  </complexType>

   <!-- - - - - - - - - - - - -->
   <!-- Markup oriented types -->
   <!-- - - - - - - - - - - - -->

   <complexType name="ClientData">
    <sequence>
      <element name="userAgent" type="xsd:string" minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="ClientData" type="types:ClientData"/>

  <complexType name="CacheControl">
    <sequence>
      <element name="expires" type="xsd:int"/>
      <element name="userScope" type="xsd:string"/>
      <element name="validateTag" type="xsd:string" minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="Templates">
    <sequence>
      <element name="defaultTemplate" type="xsd:string" nillable="true"/>
      <element name="blockingActionTemplate" type="xsd:string" minOccurs="0"/>
      <element name="renderTemplate" type="xsd:string" minOccurs="0"/>
      <element name="resourceTemplate" type="xsd:string" minOccurs="0"/>
      <element name="secureDefaultTemplate" type="xsd:string" nillable="true"/>
      <element name="secureBlockingActionTemplate" type="xsd:string" minOccurs="0"/>
      <element name="secureRenderTemplate" type="xsd:string" minOccurs="0"/>
      <element name="secureResourceTemplate" type="xsd:string" minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="Templates" type="types:Templates"/>

  <complexType name="MarkupParams">
    <sequence>
      <element name="secureClientCommunication" type="xsd:boolean"/>
      <element name="locales" type="xsd:string" maxOccurs="unbounded"/>
      <element name="mimeTypes" type="xsd:string" maxOccurs="unbounded"/>
      <element name="mode" type="xsd:string"/>
      <element name="windowState" type="xsd:string"/>
      <element name="clientData" type="types:ClientData" minOccurs="0"/>
      <element name="navigationalState" type="xsd:string" minOccurs="0"/>
      <element name="markupCharacterSets" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      <element name="validateTag" type="xsd:string" minOccurs="0"/>
      <element name="validNewModes" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      <element name="validNewWindowStates" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="MarkupParams" type="types:MarkupParams"/>

  <complexType name="MarkupResponse">
    <sequence>
      <element name="markupContext" type="types:MarkupContext"/>
      <element name="sessionContext" type="types:SessionContext" minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="MarkupContext">
    <sequence>
      <element name="useCachedMarkup" type="xsd:boolean" default="false" minOccurs="0"/>
      <element name="mimeType" type="xsd:string" minOccurs="0"/>
      <element name="markupString" type="xsd:string" minOccurs="0"/>
      <element name="markupBinary" type="xsd:base64Binary" minOccurs="0"/>
      <element name="locale" type="xsd:string" minOccurs="0"/>
      <element name="requiresUrlRewriting" type="xsd:boolean" default="false" minOccurs="0"/>
      <element name="cacheControl" type="types:CacheControl" minOccurs="0"/>
      <element name="preferredTitle" type="xsd:string" minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

   <!-- - - - - - - - - - - - - - - -->
   <!-- Interaction oriented types  -->
   <!-- - - - - - - - - - - - - - - -->

   <simpleType name="StateChange">
    <restriction base="xsd:string">
      <enumeration value="readWrite"/>
      <enumeration value="cloneBeforeWrite"/>
      <enumeration value="readOnly"/>
    </restriction>
  </simpleType>

  <complexType name="UploadContext">
    <sequence>
      <element name="mimeType" type="xsd:string"/>
      <element name="uploadData" type="xsd:base64Binary"/>
      <element name="mimeAttributes" type="types:NamedString" minOccurs="0" maxOccurs="unbounded"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="InteractionParams">
    <sequence>
      <element name="portletStateChange" type="types:StateChange"/>
      <element name="interactionState" type="xsd:string" minOccurs="0"/>
      <element name="formParameters" type="types:NamedString" minOccurs="0" maxOccurs="unbounded"/>
      <element name="uploadContexts" type="types:UploadContext" minOccurs="0" maxOccurs="unbounded"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="InteractionParams" type="types:InteractionParams"/>

  <complexType name="UpdateResponse">
    <sequence>
      <element name="sessionContext" type="types:SessionContext" minOccurs="0"/>
      <element name="portletContext" type="types:PortletContext" minOccurs="0"/>
      <element name="markupContext" type="types:MarkupContext" minOccurs="0"/>
      <element name="navigationalState" type="xsd:string" nillable="true"/>
      <element name="newWindowState" type="xsd:string" minOccurs="0"/>
      <element name="newMode" type="xsd:string" minOccurs="0"/>
    </sequence>
  </complexType>

  <complexType name="BlockingInteractionResponse">
    <sequence>
      <!-- Would prefer this to be a choice ... Axis and JAX-RPC failed to handle that -->
       <element name="updateResponse" type="types:UpdateResponse" minOccurs="0"/>
      <element name="redirectURL" type="xsd:string" minOccurs="0"/>
       <!-- end prefer this to be a choice -->
       <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="BlockingInteractionResponse" type="types:BlockingInteractionResponse"/>

   <!-- - - - - - - - - - - -->
   <!-- User Profile types  -->
   <!-- - - - - - - - - - - -->

   <complexType name="Postal">
    <sequence>
      <element name="name" type="xsd:string" minOccurs="0"/>
      <element name="street" type="xsd:string" minOccurs="0"/>
      <element name="city" type="xsd:string" minOccurs="0"/>
      <element name="stateprov" type="xsd:string" minOccurs="0"/>
      <element name="postalcode" type="xsd:string" minOccurs="0"/>
      <element name="country" type="xsd:string" minOccurs="0"/>
      <element name="organization" type="xsd:string" minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="TelephoneNum">
    <sequence>
      <element name="intcode" type="xsd:string" minOccurs="0"/>
      <element name="loccode" type="xsd:string" minOccurs="0"/>
      <element name="number" type="xsd:string" minOccurs="0"/>
      <element name="ext" type="xsd:string" minOccurs="0"/>
      <element name="comment" type="xsd:string" minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="Telecom">
    <sequence>
      <element name="telephone" type="types:TelephoneNum" minOccurs="0"/>
      <element name="fax" type="types:TelephoneNum" minOccurs="0"/>
      <element name="mobile" type="types:TelephoneNum" minOccurs="0"/>
      <element name="pager" type="types:TelephoneNum" minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="Online">
    <sequence>
      <element name="email" type="xsd:string" minOccurs="0"/>
      <element name="uri" type="xsd:string" minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="Contact">
    <sequence>
      <element name="postal" type="types:Postal" minOccurs="0"/>
      <element name="telecom" type="types:Telecom" minOccurs="0"/>
      <element name="online" type="types:Online" minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="Contact" type="types:Contact"/>

  <complexType name="EmployerInfo">
    <sequence>
      <element name="employer" type="xsd:string" minOccurs="0"/>
      <element name="department" type="xsd:string" minOccurs="0"/>
      <element name="jobtitle" type="xsd:string" minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="PersonName">
    <sequence>
      <element name="prefix" type="xsd:string" minOccurs="0"/>
      <element name="given" type="xsd:string" minOccurs="0"/>
      <element name="family" type="xsd:string" minOccurs="0"/>
      <element name="middle" type="xsd:string" minOccurs="0"/>
      <element name="suffix" type="xsd:string" minOccurs="0"/>
      <element name="nickname" type="xsd:string" minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="UserProfile">
    <sequence>
      <element name="name" type="types:PersonName" minOccurs="0"/>
      <element name="bdate" type="xsd:dateTime" minOccurs="0"/>
      <element name="gender" type="xsd:string" minOccurs="0"/>
      <element name="employerInfo" type="types:EmployerInfo" minOccurs="0"/>
      <element name="homeInfo" type="types:Contact" minOccurs="0"/>
      <element name="businessInfo" type="types:Contact" minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="UserContext">
    <sequence>
      <element name="userContextKey" type="xsd:string"/>
      <element name="userCategories" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      <element name="profile" type="types:UserProfile" minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="UserContext" type="types:UserContext"/>

   <!-- - - - - - - - - -->
   <!--  Property types -->
   <!-- - - - - - - - - -->

   <complexType name="Property">
    <sequence>
      <!-- Would prefer this to be a choice ... Axis and JAX-RPC failed to handle that -->
       <element name="stringValue" type="xsd:string" minOccurs="0"/>
      <any namespace="##other" minOccurs="0" maxOccurs="unbounded"/>
       <!-- end prefer this to be a choice -->
    </sequence>
    <attribute name="name" type="xsd:string" use="required"/>
    <attribute ref="xml:lang"/>
  </complexType>

  <complexType name="ResetProperty">
    <sequence/>
    <attribute name="name" type="xsd:string" use="required"/>
  </complexType>

  <complexType name="PropertyList">
    <sequence>
      <element name="properties" type="types:Property" minOccurs="0" maxOccurs="unbounded"/>
      <element name="resetProperties" type="types:ResetProperty" minOccurs="0" maxOccurs="unbounded"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="PropertyList" type="types:PropertyList"/>

  <complexType name="PropertyDescription">
    <sequence>
      <element name="label" type="types:LocalizedString" minOccurs="0"/>
      <element name="hint" type="types:LocalizedString" minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
    <attribute name="name" type="xsd:string" use="required"/>
    <attribute name="type" type="xsd:QName" use="required"/>
  </complexType>

  <complexType name="ModelTypes">
    <sequence>
      <any namespace="##other"/>
    </sequence>
  </complexType>

  <complexType name="ModelDescription">
    <sequence>
      <element name="propertyDescriptions" type="types:PropertyDescription" minOccurs="0" maxOccurs="unbounded"/>
      <element name="modelTypes" type="types:ModelTypes" minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="ModelDescription" type="types:ModelDescription"/>

  <complexType name="PortletPropertyDescriptionResponse">
    <sequence>
      <element name="modelDescription" type="types:ModelDescription" minOccurs="0"/>
      <element name="resourceList" type="types:ResourceList" minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

   <!-- - - - - - - - - - - - - -->
   <!-- operation message types -->
   <!-- - - - - - - - - - - - - -->

   <complexType name="ReturnAny">
    <sequence>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <element name="getMarkup">
    <complexType>
      <sequence>
        <element name="registrationContext" type="types:RegistrationContext" nillable="true"/>
        <element name="portletContext" type="types:PortletContext"/>
        <element name="runtimeContext" type="types:RuntimeContext"/>
        <element name="userContext" type="types:UserContext" nillable="true"/>
        <element name="markupParams" type="types:MarkupParams"/>
      </sequence>
    </complexType>
  </element>
  <element name="getMarkupResponse" type="types:MarkupResponse"/>

  <element name="performBlockingInteraction">
    <complexType>
      <sequence>
        <element name="registrationContext" type="types:RegistrationContext" nillable="true"/>
        <element name="portletContext" type="types:PortletContext"/>
        <element name="runtimeContext" type="types:RuntimeContext"/>
        <element name="userContext" type="types:UserContext" nillable="true"/>
        <element name="markupParams" type="types:MarkupParams"/>
        <element name="interactionParams" type="types:InteractionParams"/>
      </sequence>
    </complexType>
  </element>
  <element name="performBlockingInteractionResponse" type="types:BlockingInteractionResponse"/>

  <element name="getServiceDescription">
    <complexType>
      <sequence>
        <element name="registrationContext" type="types:RegistrationContext" nillable="true"/>
        <element name="desiredLocales" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      </sequence>
    </complexType>
  </element>
  <element name="getServiceDescriptionResponse" type="types:ServiceDescription"/>

  <element name="register" type="types:RegistrationData"/>
  <element name="registerResponse" type="types:RegistrationContext"/>

  <element name="deregister" type="types:RegistrationContext"/>
  <element name="deregisterResponse" type="types:ReturnAny"/>

  <element name="modifyRegistration">
    <complexType>
      <sequence>
        <element name="registrationContext" type="types:RegistrationContext" nillable="true"/>
        <element name="registrationData" type="types:RegistrationData"/>
      </sequence>
    </complexType>
  </element>
  <element name="modifyRegistrationResponse" type="types:RegistrationState"/>

  <element name="getPortletDescription">
    <complexType>
      <sequence>
        <element name="registrationContext" type="types:RegistrationContext" nillable="true"/>
        <element name="portletContext" type="types:PortletContext"/>
        <element name="userContext" type="types:UserContext" nillable="true"/>
        <element name="desiredLocales" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      </sequence>
    </complexType>
  </element>
  <element name="getPortletDescriptionResponse" type="types:PortletDescriptionResponse"/>

  <element name="clonePortlet">
    <complexType>
      <sequence>
        <element name="registrationContext" type="types:RegistrationContext" nillable="true"/>
        <element name="portletContext" type="types:PortletContext"/>
        <element name="userContext" type="types:UserContext" nillable="true"/>
      </sequence>
    </complexType>
  </element>
  <element name="clonePortletResponse" type="types:PortletContext"/>

  <element name="destroyPortlets">
    <complexType>
      <sequence>
        <element name="registrationContext" type="types:RegistrationContext" nillable="true"/>
        <element name="portletHandles" type="xsd:string" maxOccurs="unbounded"/>
      </sequence>
    </complexType>
  </element>
  <complexType name="DestroyPortletsResponse">
    <sequence>
      <element name="destroyFailed" type="types:DestroyFailed" minOccurs="0" maxOccurs="unbounded"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="destroyPortletsResponse" type="types:DestroyPortletsResponse"/>

  <element name="setPortletProperties">
    <complexType>
      <sequence>
        <element name="registrationContext" type="types:RegistrationContext" nillable="true"/>
        <element name="portletContext" type="types:PortletContext"/>
        <element name="userContext" type="types:UserContext" nillable="true"/>
        <element name="propertyList" type="types:PropertyList"/>
      </sequence>
    </complexType>
  </element>
  <element name="setPortletPropertiesResponse" type="types:PortletContext"/>

  <element name="getPortletProperties">
    <complexType>
      <sequence>
        <element name="registrationContext" type="types:RegistrationContext" nillable="true"/>
        <element name="portletContext" type="types:PortletContext"/>
        <element name="userContext" type="types:UserContext" nillable="true"/>
        <element name="names" type="xsd:string" nillable="true" maxOccurs="unbounded"/>
      </sequence>
    </complexType>
  </element>
  <element name="getPortletPropertiesResponse" type="types:PropertyList"/>

  <element name="getPortletPropertyDescription">
    <complexType>
      <sequence>
        <element name="registrationContext" type="types:RegistrationContext" nillable="true"/>
        <element name="portletContext" type="types:PortletContext"/>
        <element name="userContext" type="types:UserContext" nillable="true"/>
        <element name="desiredLocales" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/>
      </sequence>
    </complexType>
  </element>
  <element name="getPortletPropertyDescriptionResponse" type="types:PortletPropertyDescriptionResponse"/>

  <element name="releaseSessions">
    <complexType>
      <sequence>
        <element name="registrationContext" type="types:RegistrationContext" nillable="true"/>
        <element name="sessionIDs" type="xsd:string" maxOccurs="unbounded"/>
      </sequence>
    </complexType>
  </element>
  <element name="releaseSessionsResponse" type="types:ReturnAny"/>

  <element name="initCookie">
    <complexType>
      <sequence>
        <element name="registrationContext" type="types:RegistrationContext" nillable="true"/>
      </sequence>
    </complexType>
  </element>
  <element name="initCookieResponse" type="types:ReturnAny"/>

   <!-- - - - - - - -->
   <!-- fault types -->
   <!-- - - - - - - -->

   <complexType name="Fault">
    <sequence/>
  </complexType>

  <complexType name="AccessDeniedFault">
    <complexContent>
      <extension base="types:Fault">
        <sequence/>
      </extension>
    </complexContent>
  </complexType>
  <element name="AccessDenied" type="types:AccessDeniedFault"/>

  <complexType name="InconsistentParametersFault">
    <complexContent>
      <extension base="types:Fault">
        <sequence/>
      </extension>
    </complexContent>
  </complexType>
  <element name="InconsistentParameters" type="types:InconsistentParametersFault"/>

  <complexType name="InvalidRegistrationFault">
    <complexContent>
      <extension base="types:Fault">
        <sequence/>
      </extension>
    </complexContent>
  </complexType>
  <element name="InvalidRegistration" type="types:InvalidRegistrationFault"/>

  <complexType name="MissingParametersFault">
    <complexContent>
      <extension base="types:Fault">
        <sequence/>
      </extension>
    </complexContent>
  </complexType>
  <element name="MissingParameters" type="types:MissingParametersFault"/>

  <complexType name="OperationFailedFault">
    <complexContent>
      <extension base="types:Fault">
        <sequence/>
      </extension>
    </complexContent>
  </complexType>
  <element name="OperationFailed" type="types:OperationFailedFault"/>

  <complexType name="InvalidHandleFault">
    <complexContent>
      <extension base="types:Fault">
        <sequence/>
      </extension>
    </complexContent>
  </complexType>
  <element name="InvalidHandle" type="types:InvalidHandleFault"/>

  <complexType name="InvalidUserCategoryFault">
    <complexContent>
      <extension base="types:Fault">
        <sequence/>
      </extension>
    </complexContent>
  </complexType>
  <element name="InvalidUserCategory" type="types:InvalidUserCategoryFault"/>

  <complexType name="PortletStateChangeRequiredFault">
    <complexContent>
      <extension base="types:Fault">
        <sequence/>
      </extension>
    </complexContent>
  </complexType>

  <element name="PortletStateChangeRequired" type="types:PortletStateChangeRequiredFault"/>

  <complexType name="InvalidCookieFault">
   <complexContent>
     <extension base="types:Fault">
       <sequence/>
     </extension>
   </complexContent>
  </complexType>

  <element name="InvalidCookie" type="types:InvalidCookieFault"/>

  <complexType name="InvalidSessionFault">
   <complexContent>
     <extension base="types:Fault">
       <sequence/>
     </extension>
   </complexContent>
  </complexType>

  <element name="InvalidSession" type="types:InvalidSessionFault"/>

  <complexType name="UnsupportedModeFault">
    <complexContent>
      <extension base="types:Fault">
        <sequence/>
      </extension>
    </complexContent>
  </complexType>
  <element name="UnsupportedMode" type="types:UnsupportedModeFault"/>

  <complexType name="UnsupportedWindowStateFault">
    <complexContent>
      <extension base="types:Fault">
        <sequence/>
      </extension>
    </complexContent>
  </complexType>
  <element name="UnsupportedWindowState" type="types:UnsupportedWindowStateFault"/>

  <complexType name="UnsupportedLocaleFault">
    <complexContent>
      <extension base="types:Fault">
        <sequence/>
      </extension>
    </complexContent>
  </complexType>
  <element name="UnsupportedLocale" type="types:UnsupportedLocaleFault"/>

  <complexType name="UnsupportedMimeTypeFault">
    <complexContent>
      <extension base="types:Fault">
        <sequence/>
      </extension>
    </complexContent>
  </complexType>
  <element name="UnsupportedMimeType" type="types:UnsupportedMimeTypeFault"/>
</schema>
