<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="urn:oasis:names:tc:wsrp:v2:types"
        xmlns:types="urn:oasis:names:tc:wsrp:v2:types"

        xmlns="http://www.w3.org/2001/XMLSchema"
        xmlns:xsd="http://www.w3.org/2001/XMLSchema"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

        elementFormDefault="qualified">

<!-- This file reflects v2.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 v2 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 v2 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 v2 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="ExtensionPart">
    <sequence>
      <element name="extendedTypes" type="xsd:string"       minOccurs="0" maxOccurs="unbounded"/>
      <element name="schemaType"    type="types:ModelTypes" minOccurs="0"/>
      <element name="extensions"    type="types:Extension"  minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
    <attribute name="name"           type="xsd:QName"  use="required"/>
    <attribute name="type"           type="xsd:QName"  use="required"/>
    <attribute name="schemaLocation" type="xsd:anyURI" use="optional"/>
  </complexType>
  <element name="ExtensionPart" type="types:ExtensionPart"/>

  <complexType name="ExtensionDescription">
    <sequence>
      <element name="parts"       type="types:ExtensionPart"   minOccurs="0" maxOccurs="unbounded"/>
      <element name="aliases"     type="xsd:QName"             minOccurs="0" maxOccurs="unbounded"/>
      <element name="description" type="types:LocalizedString" minOccurs="0"/>
      <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:QName" use="required"/>
  </complexType>
  <element name="ExtensionDescription" type="types:ExtensionDescription"/>

  <complexType name="LocalizedString">
    <sequence>
      <element name="value" type="xsd:string"/>
    </sequence>
    <attribute ref="xml:lang"      use="optional"/>
    <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="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="extensionDescriptions"  type="types:ExtensionDescription"      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="scheduledDestruction" type="types:Lifetime"   minOccurs="0"/>
      <element name="extensions"           type="types:Extension"  minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="RegistrationState" type="types:RegistrationState"/>

  <complexType name="RegistrationContext">
    <complexContent>
      <extension base="types:RegistrationState">
        <sequence>
          <element name="registrationHandle"   type="xsd:string"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>
  <element name="RegistrationContext" type="types:RegistrationContext"/>

  <complexType name="SessionContext">
    <sequence>
      <element name="sessionID"  type="xsd:string" minOccurs="0"/>
      <element name="expires"    type="xsd:int"    minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0"     maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="SessionContext" type="types:SessionContext"/>

  <complexType name="SessionParams">
    <sequence>
      <element name="extensions" type="types:Extension" minOccurs="0"  maxOccurs="unbounded"/>
    </sequence>
    <attribute name="sessionID" type="xsd:string" use="optional"/>
  </complexType>
  <element name="SessionParams" type="types:SessionParams"/>

  <complexType name="RuntimeContext">
    <sequence>
      <element name="userAuthentication"  type="xsd:string"/>
      <element name="portletInstanceKey"  type="xsd:string"/>
      <element name="namespacePrefix"     type="xsd:string"/>
      <element name="templates"           type="types:Templates" minOccurs="0"/>
      <element name="sessionParams"       type="types:SessionParams"           minOccurs="0"/>
      <element name="pageState"           type="xsd:string"      minOccurs="0"/>
      <element name="portletStates"       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" nillable="true"/>
      <element name="displayName" type="types:LocalizedString" minOccurs="0"/>
      <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="ExportDescription">
    <sequence>
      <element name="extensions"            type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
    <attribute name="recommendedExportSize" type="xsd:integer" use="optional"/>
  </complexType>
  <element name="ExportDescription" type="types:ExportDescription"/>

  <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="extensionDescriptions"           type="types:ExtensionDescription" 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="eventDescriptions"               type="types:EventDescription"    minOccurs="0"  maxOccurs="unbounded"/>
      <element name="schemaType"                      type="types:ModelTypes"          minOccurs="0"/>
      <element name="supportedOptions"                type="xsd:string"                minOccurs="0"  maxOccurs="unbounded"/>
      <element name="exportDescription"               type="types:ExportDescription"   minOccurs="0"/>
      <element name="mayReturnRegistrationState"      type="xsd:boolean"               minOccurs="0"  default="false" />
      <element name="extensions"                      type="types:Extension"           minOccurs="0"  maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="ServiceDescription" type="types:ServiceDescription"/>

  <complexType name="Lifetime">
    <sequence>
      <element name="extensions"      type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
    <!--
      The following two attributes are marked as optional despite the spec
      requiring values so that some validating parsers do not require
      values even when the element is supplied with nillable="true"
    -->
    <attribute name="currentTime"     type="xsd:dateTime" use="optional"/>
    <attribute name="terminationTime" type="xsd:dateTime" use="optional"/>
    <attribute name="refreshDuration" type="xsd:duration" use="optional"/>
  </complexType>
  <element name="Lifetime" type="types:Lifetime"/>

<!-- - - - - - - - - - - - - - - - - - - -->
<!-- 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="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="publishedEvents"  type="xsd:QName"             minOccurs="0"   maxOccurs="unbounded"/>
      <element name="handledEvents"    type="xsd:QName"             minOccurs="0"   maxOccurs="unbounded"/>
      <element name="navigationalPublicValueDescriptions" type="types:ParameterDescription" 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="portletManagedModes" 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="mayReturnPortletState"      type="xsd:boolean" default="false" minOccurs="0"/>
      <element name="extensions"       type="types:Extension"       minOccurs="0"   maxOccurs="unbounded"/>
    </sequence>
    <attribute name="portletID"             type="xsd:string"  use="optional"/>
  </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="xsd:string"/>
      <element name="portletState"         type="xsd:base64Binary" minOccurs="0"/>
      <element name="scheduledDestruction" type="types:Lifetime"   minOccurs="0"/>
      <element name="extensions"           type="types:Extension"  minOccurs="0"   maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="PortletContext" type="types:PortletContext"/>

  <simpleType name="ErrorCodes">
    <restriction base="xsd:QName">
      <enumeration value="types:AccessDenied"/>
      <enumeration value="types:ExportNoLongerValid"/>
      <enumeration value="types:InconsistentParameters"/>
      <enumeration value="types:InvalidRegistration"/>
      <enumeration value="types:InvalidCookie"/>
      <enumeration value="types:InvalidHandle"/>
      <enumeration value="types:InvalidSession"/>
      <enumeration value="types:InvalidUserCategory"/>
      <enumeration value="types:ModifyRegistrationRequired"/>
      <enumeration value="types:MissingParameters"/>
      <enumeration value="types:OperationFailed"/>
      <enumeration value="types:OperationNotSupported"/>
      <enumeration value="types:ResourceSuspended"/>
      <enumeration value="types:TooBusy"/>
      <enumeration value="types:TooManyRequests"/>
    </restriction>
  </simpleType>

  <complexType name="BaseFailed">
    <sequence>
      <element name="reason"     type="types:LocalizedString" minOccurs="0"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
    <attribute name="errorCode"  type="types:ErrorCodes" use="required"/>
  </complexType>
  <element name="BaseFailed"     type="types:BaseFailed"/>

  <complexType name="FailedPortlets">
    <complexContent>
      <extension base="types:BaseFailed">
        <sequence>
          <element name="portletHandles" type="xsd:string" maxOccurs="unbounded"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>
  <element name="FailedPortlets" type="types:FailedPortlets"/>

  <complexType name="SetPortletLifetime">
    <sequence>
      <element name="portletContext"       type="types:PortletContext" maxOccurs="unbounded"/>
      <element name="scheduledDestruction" type="types:Lifetime"       minOccurs="0"/>
      <element name="extensions"           type="types:Extension"    minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="setPortletLifetime" type="types:SetPortletLifetime"/>

  <complexType name="PortletLifetime">
    <sequence>
      <element name="portletContext"       type="types:PortletContext"/>
      <element name="scheduledDestruction" type="types:Lifetime"/>
      <element name="extensions"           type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="PortletLifetime" type="types:PortletLifetime"/>

<!-- - - - - - - - - - - - -->
<!-- Event oriented types  -->
<!-- - - - - - - - - - - - -->

  <complexType name="EventDescription">
    <sequence>
      <element name="aliases"        type="xsd:QName"             minOccurs="0" maxOccurs="unbounded"/>
      <element name="description"    type="types:LocalizedString" minOccurs="0"/>
      <element name="label"          type="types:LocalizedString" minOccurs="0"/>
      <element name="hint"           type="types:LocalizedString" minOccurs="0"/>
      <element name="schemaType"     type="types:ModelTypes"      minOccurs="0"/>
      <element name="extensions"     type="types:Extension"       minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
    <attribute name="name"           type="xsd:QName"  use="required"/>
    <attribute name="type"           type="xsd:QName"  use="optional"/>
    <attribute name="schemaLocation" type="xsd:anyURI" use="optional"/>
  </complexType>
  <element name="EventDescription" type="types:EventDescription"/>

  <complexType name="EventPayload">
    <sequence>
      <element name="namedStringArray"  type="types:NamedStringArray" minOccurs="0"/>
      <any     namespace="##other"      minOccurs="0" processContents="lax"/>
    </sequence>
  </complexType>
  <element name="EventPayload" type="types:EventPayload"/>

  <complexType name="Event">
    <sequence>
      <element name="payload"    type="types:EventPayload" minOccurs="0"/>
      <element name="extensions" type="types:Extension"    minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
    <attribute name="name"       type="xsd:QName"  use="required"/>
    <attribute name="type"       type="xsd:QName"  use="optional"/>
  </complexType>
  <element name="Event" type="types:Event"/>

  <complexType name="EventParams">
    <sequence>
      <element name="events"             type="types:Event" minOccurs="1" maxOccurs="unbounded"/>
      <element name="extensions"         type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
    <attribute name="portletStateChange" type="types:StateChange"  use="required"/>
  </complexType>
  <element name="EventParams" type="types:EventParams"/>

  <complexType name="HandleEventsFailed">
    <complexContent>
      <extension base="types:BaseFailed">
        <sequence>
          <element name="index" type="xsd:integer" maxOccurs="unbounded"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>
  <element name="HandleEventsFailed" type="types:HandleEventsFailed"/>

<!-- - - - - - - - - - - - -->
<!-- Markup oriented types -->
<!-- - - - - - - - - - - - -->

  <complexType name="NavigationalContext">
    <sequence>
      <element name="publicValues" type="types:NamedString" minOccurs="0" maxOccurs="unbounded"/>
      <element name="extensions"   type="types:Extension"   minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
    <attribute name="opaqueValue"  type="xsd:string" use="optional"/>
  </complexType>
  <element name="NavigationalContext" type="types:NavigationalContext"/>

  <complexType name="MimeRequest">
    <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="navigationalContext"  type="types:NavigationalContext"       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="MimeRequest" type="types:MimeRequest"/>

  <complexType name="MarkupParams">
    <complexContent>
      <extension base="types:MimeRequest">
        <sequence />
      </extension>
    </complexContent>
  </complexType>
  <element name="MarkupParams" type="types:MarkupParams"/>

  <complexType name="ResourceParams">
    <complexContent>
      <extension base="types:MimeRequest">
        <sequence>
          <element name="formParameters" type="types:NamedString"   minOccurs="0" maxOccurs="unbounded" />
          <element name="uploadContexts" type="types:UploadContext" minOccurs="0" maxOccurs="unbounded" />
        </sequence>
        <attribute name="resourceID"     type="xsd:string"  use="required"/>
        <attribute name="portletStateChange"   type="types:StateChange" use="required"/>
        <attribute name="resourceState"  type="xsd:string"/>
        <attribute name="resourceCacheability" type="xsd:string"/>
      </extension>
    </complexContent>
  </complexType>
  <element name="ResourceParams"     type="types:ResourceParams" />

  <complexType name="MimeResponse">
    <sequence>
      <element name="useCachedItem"      type="xsd:boolean"        default="false" minOccurs="0"/>
      <element name="mimeType"           type="xsd:string"         minOccurs="0"/>
      <element name="itemString"         type="xsd:string"         minOccurs="0"/>
      <element name="itemBinary"         type="xsd:base64Binary"   minOccurs="0"/>
      <element name="locale"             type="xsd:string"         minOccurs="0"/>
      <element name="requiresRewriting"  type="xsd:boolean"        default="false" minOccurs="0"/>
      <element name="cacheControl"       type="types:CacheControl" minOccurs="0"/>
      <element name="clientAttributes"   type="types:NamedString"  minOccurs="0"/>
      <element name="extensions"         type="types:Extension"    minOccurs="0"   maxOccurs="unbounded"/>
    </sequence>
    <attribute name="ccppProfileWarning" type="xsd:string"         use="optional"/>
  </complexType>
  <element name="MimeResponse" type="types:MimeResponse"/>

  <complexType name="MarkupContext">
    <complexContent>
      <extension base="types:MimeResponse">
        <sequence>
          <element name="preferredTitle"       type="xsd:string"         minOccurs="0"/>
          <element name="validNewModes"       type="xsd:string"           minOccurs="0" maxOccurs="unbounded"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>
  <element name="MarkupContext" type="types:MarkupContext"/>

  <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="ResourceContext">
    <complexContent>
      <extension base="types:MimeResponse">
        <sequence />
      </extension>
    </complexContent>
  </complexType>
  <element name="ResourceContext" type="types:ResourceContext"/>

  <complexType name="ResourceResponse">
    <sequence>
      <element name="resourceContext" type="types:ResourceContext"/>
      <element name="sessionContext"  type="types:SessionContext" minOccurs="0"/>
      <element name="portletContext"  type="types:PortletContext" minOccurs="0"/>
      <element name="extensions"      type="types:Extension"      minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="CCPPProfileDiff">
    <sequence>
      <element name="extensions"  type="types:Extension" minOccurs="0" maxOccurs="unbounded" />
    </sequence>
    <attribute name="diffName"    type="xsd:string"  use="required"/>
    <attribute name="description" type="xsd:string"  use="required"/>
  </complexType>
  <element name="CCPPProfileDiff"  type="types:CCPPProfileDiff" />

  <complexType name="CCPPHeaders">
    <sequence>
      <element name="profileDiffs" type="types:CCPPProfileDiff" minOccurs="0" maxOccurs="unbounded"/>
      <element name="extensions"   type="types:Extension"       minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
    <attribute name="profile"      type="xsd:string"  use="required"/>
  </complexType>
  <element name="CCPPHeaders"      type="types:CCPPHeaders" />

  <complexType name="ClientData">
    <sequence>
      <element name="userAgent"   type="xsd:string"        minOccurs="0"/>
      <element name="ccppHeaders" type="types:CCPPHeaders" minOccurs="0"/>
      <element name="clientAttributes" type="types:NamedString" minOccurs="0"/>
      <element name="extensions"  type="types:Extension"   minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
    <attribute name="requestVerb" type="xsd:string"        use="optional"/>
  </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"/>

<!-- - - - - - - - - - - - - - - -->
<!-- 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="events"              type="types:Event"          minOccurs="0" maxOccurs="unbounded"/>
      <element name="navigationalContext" type="types:NavigationalContext" minOccurs="0"/>
      <element name="newWindowState"      type="xsd:string"           minOccurs="0"/>
      <element name="newMode"             type="xsd:string"           minOccurs="0"/>
      <element name="extensions"          type="types:Extension"      minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="UpdateResponse" type="types:UpdateResponse"/>

  <complexType name="BlockingInteractionResponse">
    <sequence>
      <element name="updateResponse" type="types:UpdateResponse" minOccurs="0"/>
      <element name="redirectURL"    type="xsd:string"           minOccurs="0"/>
      <element name="extensions"     type="types:Extension"      minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="BlockingInteractionResponse" type="types:BlockingInteractionResponse"/>

<!-- - - - - - - - -->
<!-- Factory types -->
<!-- - - - - - - - -->

  <complexType name="CopiedPortlet">
    <sequence>
      <element name="newPortletContext" type="types:PortletContext"/>
      <element name="extensions"        type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
    <attribute name="fromPortletHandle" type="xsd:string"      use="required"/>
  </complexType>
  <element name="CopiedPortlet" type="types:CopiedPortlet"/>

  <complexType name="ExportedPortlet">
    <sequence>
      <element name="exportData"    type="xsd:base64Binary"/>
      <element name="extensions"    type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
    <attribute name="portletHandle" type="xsd:string"      use="required"/>
  </complexType>
  <element name="ExportedPortlet" type="types:ExportedPortlet"/>

  <complexType name="ImportPortlet">
    <sequence>
      <element name="exportData" type="xsd:base64Binary"/>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
    <attribute name="importID"   type="xsd:string"      use="required"/>
  </complexType>
  <element name="ImportPortlet" type="types:ImportPortlet"/>

  <complexType name="ImportedPortlet">
    <sequence>
      <element name="importID"          type="xsd:string"/>
      <element name="newPortletContext" type="types:PortletContext"/>
      <element name="extensions"        type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="ImportedPortlet" type="types:ImportedPortlet"/>

  <complexType name="ImportPortletsFailed">
    <complexContent>
      <extension base="types:BaseFailed">
        <sequence>
          <element name="importID" type="xsd:string" maxOccurs="unbounded"/>
        </sequence>
      </extension>
    </complexContent>
  </complexType>
  <element name="ImportPortletsFailed" type="types:ImportPortletsFailed"/>

<!-- - - - - - - - - - - -->
<!-- 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>
      <element name="stringValue"  type="xsd:string" minOccurs="0"/>
      <any     namespace="##other" minOccurs="0"     maxOccurs="unbounded" processContents="lax"/>
    </sequence>
    <attribute name="name"         type="xsd:QName" use="required"/>
    <attribute name="type"         type="xsd:QName" use="optional"/>
<!--<attribute ref="xsi:type"      use="optional"/>-->
    <attribute ref="xml:lang"      use="optional"/>
  </complexType>

  <complexType name="ResetProperty">
    <sequence/>
    <attribute name="name" type="xsd:QName" 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="description"    type="types:LocalizedString" minOccurs="0"/>
      <element name="label"          type="types:LocalizedString" minOccurs="0"/>
      <element name="hint"           type="types:LocalizedString" minOccurs="0"/>
      <element name="usage"          type="xsd:string"            minOccurs="0" maxOccurs="unbounded"/>
      <element name="aliases"        type="xsd:QName"             minOccurs="0" maxOccurs="unbounded"/>
      <element name="extensions"     type="types:Extension"       minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
    <attribute name="name"           type="xsd:QName"  use="required"/>
    <attribute name="type"           type="xsd:QName"  use="required"/>
    <attribute name="schemaLocation" type="xsd:anyURI" use="optional"/>
  </complexType>
  <element name="PropertyDescription" type="types:PropertyDescription"/>

  <complexType name="ParameterDescription">
    <sequence>
      <element name="names"       type="xsd:QName"             minOccurs="0" maxOccurs="unbounded"/>
      <element name="description" type="types:LocalizedString" minOccurs="0"/>
      <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="identifier"  type="xsd:string"  use="required"/>
  </complexType>
  <element name="ParameterDescription" type="types:ParameterDescription"/>

  <complexType name="ModelTypes">
    <sequence>
      <any namespace="##other" processContents="lax"/>
    </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"/>

<!-- - - - - - - - - - - - - -->
<!-- operation message types -->
<!-- - - - - - - - - - - - - -->

  <complexType name="ReturnAny">
    <sequence>
      <element name="extensions" type="types:Extension" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="getMarkup">
    <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 name="getMarkup"                 type="types:getMarkup"/>
  <element name="getMarkupResponse"         type="types:MarkupResponse"/>

  <complexType name="getResource">
    <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="resourceParams"        type="types:ResourceParams"/>
    </sequence>
  </complexType>
  <element name="getResource"               type="types:getResource"/>
  <element name="getResourceResponse"       type="types:ResourceResponse"/>

  <complexType name="performBlockingInteraction">
    <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 name="performBlockingInteraction" type="types:performBlockingInteraction"/>
  <element name="performBlockingInteractionResponse" type="types:BlockingInteractionResponse"/>

  <complexType name="handleEvents">
    <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="eventParams"           type="types:EventParams"/>
    </sequence>
  </complexType>
  <element name="handleEvents"              type="types:handleEvents"/>
  <complexType name="HandleEventsResponse">
    <sequence>
      <element name="updateResponse" type="types:UpdateResponse"     minOccurs="0"/>
      <element name="failedEvents"   type="types:HandleEventsFailed" minOccurs="0" maxOccurs="unbounded"/>
      <element name="extensions"     type="types:Extension"          minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="handleEventsResponse"      type="types:HandleEventsResponse"/>

  <complexType name="getServiceDescription">
    <sequence>
      <element name="registrationContext"   type="types:RegistrationContext"    nillable="true"/>
      <element name="desiredLocales"        type="xsd:string"     minOccurs="0" maxOccurs="unbounded"/>
      <element name="portletHandles"        type="xsd:string"     minOccurs="0" maxOccurs="unbounded"/>
      <element name="userContext"           type="types:UserContext" nillable="true"/>
    </sequence>
  </complexType>
  <element name="getServiceDescription"     type="types:getServiceDescription"/>
  <element name="getServiceDescriptionResponse" type="types:ServiceDescription"/>

  <complexType name="register">
    <sequence>
      <element name="registrationData"  type="types:RegistrationData"/>
      <element name="lifetime"          type="types:Lifetime" nillable="true"/>
      <element name="userContext"       type="types:UserContext" nillable="true"/>
    </sequence>
  </complexType>
  <element name="register"                  type="types:register"/>
  <element name="registerResponse"          type="types:RegistrationContext"/>

  <complexType name="deregister">
    <sequence>
      <element name="registrationContext"   type="types:RegistrationContext"/>
      <element name="userContext"           type="types:UserContext" nillable="true"/>
    </sequence>
  </complexType>
  <element name="deregister"                type="types:deregister"/>
  <element name="deregisterResponse"        type="types:ReturnAny"/>

  <complexType name="modifyRegistration">
    <sequence>
      <element name="registrationContext"   type="types:RegistrationContext" nillable="true"/>
      <element name="registrationData"      type="types:RegistrationData"/>
      <element name="userContext"           type="types:UserContext" nillable="true"/>
    </sequence>
  </complexType>
  <element name="modifyRegistration"        type="types:modifyRegistration"/>
  <element name="modifyRegistrationResponse" type="types:RegistrationState"/>

  <complexType name="getPortletDescription">
    <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 name="getPortletDescription"     type="types:getPortletDescription"/>
  <element name="getPortletDescriptionResponse" type="types:PortletDescriptionResponse"/>

  <complexType name="clonePortlet">
    <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="lifetime"              type="types:Lifetime"            nillable="true"/>
    </sequence>
  </complexType>
  <element name="clonePortlet"              type="types:clonePortlet"/>
  <element name="clonePortletResponse"      type="types:PortletContext"/>

  <complexType name="copyPortlets">
    <sequence>
      <element name="toRegistrationContext"   type="types:RegistrationContext" nillable="true"/>
      <element name="toUserContext"           type="types:UserContext"       nillable="true"/>
      <element name="fromRegistrationContext" type="types:RegistrationContext" nillable="true"/>
      <element name="fromUserContext"         type="types:UserContext"       nillable="true"/>
      <element name="fromPortletContexts"     type="types:PortletContext"      maxOccurs="unbounded"/>
      <element name="lifetime"                type="types:Lifetime"            nillable="true"/>
    </sequence>
  </complexType>
  <element name="copyPortlets" type="types:copyPortlets"/>

  <complexType name="copyPortletsResponse">
    <sequence>
      <element name="copiedPortlets"        type="types:CopiedPortlet"    minOccurs="0" maxOccurs="unbounded"/>
      <element name="failedPortlets"        type="types:FailedPortlets"   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="copyPortletsResponse"      type="types:copyPortletsResponse"/>

  <complexType name="exportPortlets">
    <sequence>
      <element name="registrationContext"   type="types:RegistrationContext" nillable="true"/>
      <element name="portletContext"        type="types:PortletContext"      maxOccurs="unbounded"/>
      <element name="userContext"           type="types:UserContext"         nillable="true"/>
      <element name="lifetime"              type="types:Lifetime"            nillable="true"/>
      <element name="exportByValueRequired" type="xsd:boolean"               minOccurs="0"   default="false"/>
    </sequence>
  </complexType>
  <element name="exportPortlets"            type="types:exportPortlets"/>

  <complexType name="exportPortletsResponse">
    <sequence>
      <element name="exportContext"         type="xsd:base64Binary"      nillable="true"/>
      <element name="exportedPortlet"       type="types:ExportedPortlet" minOccurs="0" maxOccurs="unbounded"/>
      <element name="failedPortlets"        type="types:FailedPortlets"  minOccurs="0" maxOccurs="unbounded"/>
      <element name="lifetime"              type="types:Lifetime"        minOccurs="0"/>
      <element name="resourceList"          type="types:ResourceList"    minOccurs="0"/>
      <element name="extensions"            type="types:Extension"       minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="exportPortletsResponse"    type="types:exportPortletsResponse"/>

  <complexType name="importPortlets">
    <sequence>
      <element name="registrationContext" type="types:RegistrationContext" nillable="true"/>
      <element name="importContext"       type="xsd:base64Binary"          nillable="true"/>
      <element name="importPortlet"       type="types:ImportPortlet"       maxOccurs="unbounded"/>
      <element name="userContext"         type="types:UserContext"         nillable="true"/>
      <element name="lifetime"            type="types:Lifetime"            nillable="true"/>
    </sequence>
  </complexType>
  <element name="importPortlets" type="types:importPortlets"/>

  <complexType name="importPortletsResponse">
    <sequence>
      <element name="importedPortlets" type="types:ImportedPortlet"      minOccurs="0" maxOccurs="unbounded"/>
      <element name="importFailed"     type="types:ImportPortletsFailed" 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="importPortletsResponse"    type="types:importPortletsResponse"/>

  <complexType name="releaseExport">
    <sequence>
      <element name="registrationContext" type="types:RegistrationContext" nillable="true"/>
      <element name="exportContext"       type="xsd:base64Binary"/>
      <element name="userContext"         type="types:UserContext" nillable="true"/>
    </sequence>
  </complexType>
  <element name="releaseExport"             type="types:releaseExport"/>
  <element name="releaseExportResponse"     type="types:ReturnAny" nillable="true"/>

  <complexType name="setExportLifetime">
    <sequence>
      <element name="registrationContext" type="types:RegistrationContext" nillable="true"/>
      <element name="exportContext"       type="xsd:base64Binary"/>
      <element name="userContext"         type="types:UserContext"         nillable="true"/>
      <element name="lifetime"            type="types:Lifetime"            nillable="true"/>
    </sequence>
  </complexType>
  <element name="setExportLifetime"         type="types:setExportLifetime"/>
  <element name="setExportLifetimeResponse" type="types:Lifetime" nillable="true"/>

  <complexType name="destroyPortlets">
    <sequence>
      <element name="registrationContext"   type="types:RegistrationContext" nillable="true"/>
      <element name="portletHandles"        type="xsd:string"                maxOccurs="unbounded"/>
      <element name="userContext"           type="types:UserContext" nillable="true"/>
    </sequence>
  </complexType>
  <element name="destroyPortlets"           type="types:destroyPortlets"/>

  <complexType name="DestroyPortletsResponse">
    <sequence>
      <element name="failedPortlets"        type="types:FailedPortlets" minOccurs="0" maxOccurs="unbounded"/>
      <element name="extensions"            type="types:Extension"      minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <element name="destroyPortletsResponse"   type="types:DestroyPortletsResponse"/>

  <complexType name="setPortletProperties">
    <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 name="setPortletProperties"      type="types:setPortletProperties"/>
  <element name="setPortletPropertiesResponse" type="types:PortletContext"/>

  <complexType name="getPortletProperties">
    <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 name="getPortletProperties"      type="types:getPortletProperties"/>
  <element name="getPortletPropertiesResponse" type="types:PropertyList"/>

  <complexType  name="getPortletPropertyDescription">
    <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 name="getPortletPropertyDescription" type="types:getPortletPropertyDescription"/>

  <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>
  <element name="getPortletPropertyDescriptionResponse" type="types:PortletPropertyDescriptionResponse"/>

  <complexType name="releaseSessions">
    <sequence>
      <element name="registrationContext"   type="types:RegistrationContext" nillable="true"/>
      <element name="sessionIDs"            type="xsd:string" maxOccurs="unbounded"/>
      <element name="userContext"           type="types:UserContext" nillable="true"/>
    </sequence>
  </complexType>
  <element name="releaseSessions"           type="types:releaseSessions"/>
  <element name="releaseSessionsResponse"   type="types:ReturnAny"/>

  <complexType name="initCookie">
    <sequence>
      <element name="registrationContext"   type="types:RegistrationContext" nillable="true"/>
      <element name="userContext"           type="types:UserContext" nillable="true"/>
    </sequence>
  </complexType>
  <element name="initCookie" type="types:initCookie"/>
  <element name="initCookieResponse" type="types:ReturnAny"/>

  <complexType name="getRegistrationLifetime">
    <sequence>
      <element name="registrationContext" type="types:RegistrationContext" nillable="true"/>
      <element name="userContext"         type="types:UserContext" nillable="true"/>
    </sequence>
  </complexType>
  <element name="getRegistrationLifetime"         type="types:getRegistrationLifetime"/>
  <element name="getRegistrationLifetimeResponse" type="types:Lifetime" nillable="true"/>

  <complexType name="setRegistrationLifetime">
    <sequence>
      <element name="registrationContext" type="types:RegistrationContext" nillable="true"/>
      <element name="userContext"         type="types:UserContext"       nillable="true"/>
      <element name="lifetime"            type="types:Lifetime"            nillable="true"/>
    </sequence>
  </complexType>
  <element name="setRegistrationLifetime"         type="types:setRegistrationLifetime"/>
  <element name="setRegistrationLifetimeResponse" type="types:Lifetime" nillable="true"/>

  <complexType name="getPortletsLifetime">
    <sequence>
      <element name="registrationContext" type="types:RegistrationContext" nillable="true"/>
      <element name="portletContext"      type="types:PortletContext"      maxOccurs="unbounded"/>
      <element name="userContext"         type="types:UserContext"         nillable="true"/>
    </sequence>
  </complexType>
  <element name="getPortletsLifetime"     type="types:getPortletsLifetime"/>

  <complexType name="getPortletsLifetimeResponse">
    <sequence>
      <element name="portletLifetime" type="types:PortletLifetime" minOccurs="0" maxOccurs="unbounded"/>
      <element name="failedPortlets"  type="types:FailedPortlets"  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="getPortletsLifetimeResponse" type="types:getPortletsLifetimeResponse" nillable="true"/>

  <complexType name="setPortletsLifetime">
    <sequence>
      <element name="registrationContext" type="types:RegistrationContext" nillable="true"/>
      <element name="portletContext"      type="types:PortletContext"      maxOccurs="unbounded"/>
      <element name="userContext"         type="types:UserContext"         nillable="true"/>
      <element name="lifetime"            type="types:Lifetime"            nillable="true"/>
    </sequence>
  </complexType>
  <element name="setPortletsLifetime"         type="types:setPortletsLifetime"/>

  <complexType name="setPortletsLifetimeResponse">
    <sequence>
      <element name="updatedPortlet" type="types:PortletLifetime" minOccurs="0" maxOccurs="unbounded"/>
      <element name="failedPortlets" type="types:FailedPortlets"  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="setPortletsLifetimeResponse" type="types:setPortletsLifetimeResponse"/>

<!-- - - - - - - -->
<!-- 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"/>

  <complexType name="ModifyRegistrationRequiredFault">
    <complexContent>
      <extension base="types:Fault">
        <sequence/>
      </extension>
    </complexContent>
  </complexType>
  <element name="ModifyRegistrationRequired" type="types:ModifyRegistrationRequiredFault"/>

  <complexType name="ResourceSuspendedFault">
    <complexContent>
      <extension base="types:Fault">
        <sequence/>
      </extension>
    </complexContent>
  </complexType>
  <element name="ResourceSuspended" type="types:ResourceSuspendedFault"/>

  <complexType name="OperationNotSupportedFault">
    <complexContent>
      <extension base="types:Fault">
        <sequence/>
      </extension>
    </complexContent>
  </complexType>
  <element name="OperationNotSupported" type="types:OperationNotSupportedFault"/>

  <complexType name="ExportByValueNotSupportedFault">
    <complexContent>
      <extension base="types:Fault">
        <sequence/>
      </extension>
    </complexContent>
  </complexType>
  <element name="ExportByValueNotSupported" type="types:ExportByValueNotSupportedFault"/>

  <complexType name="ExportNoLongerValidFault">
    <complexContent>
      <extension base="types:Fault">
        <sequence/>
      </extension>
    </complexContent>
  </complexType>
  <element name="ExportNoLongerValid" type="types:ExportNoLongerValidFault"/>

<!-- - - - - - - - - - - - -->
<!-- WSRP defined events   -->
<!-- - - - - - - - - - - - -->
  <element name="eventHandlingFailed">
    <complexType>
      <sequence>
        <any minOccurs="0" processContents="lax"/>
      </sequence>
    </complexType>
  </element>

  <element name="newNavigationalContextScope">
    <complexType>
      <sequence>
        <any minOccurs="0" processContents="lax"/>
      </sequence>
    </complexType>
  </element>

  <element name="newMode">
    <complexType>
      <sequence>
        <any minOccurs="0" processContents="lax"/>
      </sequence>
    </complexType>
  </element>

  <element name="newWindowState">
    <complexType>
      <sequence>
        <any minOccurs="0" processContents="lax"/>
      </sequence>
    </complexType>
  </element>

</schema>
