<?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"/>
    </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>

