OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

dsml message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


Subject: SOAP binding


Per the 8/15 telecon, I've attached a description of a SOAP binding that
revises the content of chapter 6 of the baseline proposal. This
description is aligned with the proposed separation of batch elements
from a core specification of single operation request and response.

ciao,
Christine Tomlinson
Sun Microsystems

DSML v2 Binding for SOAP over HTTP/HTTPS

The following describes a method of using SOAP over HTTP/1.1 and
HTTPS/1.1 as a transport for DSML v2 requests and responses. The
version of SOAP for this binding is SOAP 1.1. The use of other
transports for SOAP, e.g., SMTP, would be subject to additional
considerations not addressed here.

The namespace for the core DSMLv2 is "urn:oasis-open:dsml:2" and for
the Batch elements is "urn:oasis-open:dsml:2:batch." These namespaces
are used at the top-level element of the <body> of each SOAP request
and response. Default namespace designations MAY be used.

All SOAP requests and responses in this binding MUST use the xml
encoding "UTF-8".

Each SOAP request is either a <batch:request> as defined in
DSML_Batch.xsd or a DSMLRequest as defined in the core DSMLv2.xsd. Any
DSMLv2/SOAP compliant server MUST accept all defined forms of
request. A SOAP node SHOULD indicate in the 'SOAPAction' header field
the element name of the top-level element in the <body> of the SOAP
request. Note that sending a single DSMLRequest (i.e., one that is not
contained within a <batch:request>) is most effective if "Connection:
Keep-Alive" is used on the underlying HTTP/HTTPS connection.

Each SOAP response is either a <batch:response> or a
<batch:searchResponse> as defined in DSML_Batch.xsd or a
DSMLResponse as defined in the core DSMLv2.xsd. The response to a
<dsml:searchRequest> is always a <batch:searchResponse>

If a DSML v2 response contains an <dsml:errorResponse> then a SOAP
fault element with the faultcode: 'Client' is returned and the DSML
response is contained in the 'detail' of the fault element. For
example:

<?xml version="1.0" encoding="UTF-8" ?>
<se:Envelope xmlns:se='http://schemas.xmlsoap.org/soap/envelope'>
  <se:Header/>
  <se:Body>
    <se:Fault>
      <faultcode>se:Client</faultcode>
      <faultstring>DSML Client error</faultstring>
      <detail>
        <dsml:errorResponse xmlns:dsml="urn:oasis-open:dsml:2"
	    type="couldNotConnect">
	  <dsml:message>Cannot connect to a DSML server</dsml:message>
	</dsml:errorResponse>
      </detail>
    </se:Fault>
  </se:Body>
</se:Envelope>

If a DSML v2 response contains an LDAPResult with a ResultCode
corresponding to any LDAPErrorCode other than: 'success',
'compareFalse' or 'compareTrue' then a SOAP fault element with the
faultcode: 'Server' is returned and the DSML response is contained in
the 'detail' of the fault element. For example:

<?xml version="1.0" encoding="UTF-8" ?>
<se:Envelope xmlns:se='http://schemas.xmlsoap.org/soap/envelope'>
  <se:Header/>
  <se:Body>
    <se:Fault>
      <faultcode>se:Server</faultcode>
      <faultstring>DSML Server error</faultstring>
      <detail>
        <batch:response xmlns:dsml="urn:oasis-open:dsml:2"
	                xmlns:batch="urn:oasis-open:dsml:2:batch">
          <dsml:modifyResponse>
            <resultCode code="53" descr="unwillingToPerform"/>
            <errorMessage>System Attribute may not be modified</errorMessage>
          </dsml:modifyResponse>
          <dsml:addResponse>
            <resultCode code="0"/>
          </dsml:addResponse>
          <dsml:naddResponse>
            <resultCode code="0" descr="success"/>
            <control>...</control>
            <control>...</control>
          </dsml:addResponse>
	</batch:response>
      </detail>
    </se:Fault>
  </se:Body>
</se:Envelope>

SOAP headers SHOULD not be sent in requests and MUST be ignored by the
recipient except in the case of a MustUnderstand. In the event that a
recipient receives a request with a MustUnderstand header then a SOAP
Fault of type MustUnderstand is returned.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns="urn:oasis-open:dsml:2"
            targetNamespace="urn:oasis-open:dsml:2"
            elementFormDefault="qualified">

<!-- DSML Requests -->
<xsd:group name="DSMLRequest">
    <xsd:choice>
      <xsd:element name="bindRequest" type="BindRequest" />
      <xsd:element name="searchRequest" type="SearchRequest" />
      <xsd:element name="modifyRequest" type="ModifyRequest" />
      <xsd:element name="addRequest" type="AddRequest" />
      <xsd:element name="delRequest" type="DelRequest" />
      <xsd:element name="modDNRequest" type="ModifyDNRequest" />
      <xsd:element name="compareRequest" type="CompareRequest" />
      <xsd:element name="abandonRequest" type="AbandonRequest" />
      <xsd:element name="extendedReq" type="ExtendedRequest" />
    </xsd:choice>    
</xsd:group>

<!-- DSML Responses -->
<xsd:group name="DSMLResponse">
    <xsd:choice>
       <xsd:element name="bindResponse"  type="LDAPResult"/>
       <xsd:element name="searchResultEntry"  type="SearchResultEntry"/>
       <xsd:element name="searchResultReference"  type="SearchResultReference"/>
       <xsd:element name="searchResultDone"  type="LDAPResult"/>
       <xsd:element name="modifyResponse" type="LDAPResult" />
       <xsd:element name="addResponse" type="LDAPResult" />
       <xsd:element name="delResponse" type="LDAPResult" />
       <xsd:element name="modDNResponse" type="LDAPResult" />
       <xsd:element name="compareResponse" type="LDAPResult" />
       <xsd:element name="extendedResp" type="ExtendedResponse" />
       <xsd:element name="errorResponse" type="ErrorResponse" />
    </xsd:choice>    
</xsd:group>


<!-- ***** DsmlDN ***** -->
<xsd:simpleType name="DsmlDN">
  <xsd:restriction base="xsd:string"/>
</xsd:simpleType>

<!-- ***** DsmlRDN ***** -->
<xsd:simpleType name="DsmlRDN">
  <xsd:restriction base="xsd:string"/>
</xsd:simpleType>

<!-- ***** Request ID ***** -->
<xsd:simpleType name="RequestID">
  <xsd:restriction base="xsd:string"/>
</xsd:simpleType>

<!-- ***** OID ***** -->
<xsd:simpleType name="OID">
  <xsd:union memberTypes="NumericOID xsd:NMTOKEN"/>
</xsd:simpleType>

<xsd:simpleType name="NumericOID">
  <xsd:restriction base="xsd:string">
    <xsd:pattern value="[0-2].[0-9]+[.[0-9]+]*"/>
  </xsd:restriction>
</xsd:simpleType>

<!-- ***** ExtensionTypeID ***** -->
<xsd:simpleType name="ExtensionTypeID">
  <xsd:union memberTypes="NumericOID xsd:anyURI"/>
</xsd:simpleType>

<!-- ***** MAX Integer ***** -->
<xsd:simpleType name="MAXINT">
    <xsd:restriction base="xsd:unsignedInt">
       <xsd:maxInclusive value="2147483647" />
   </xsd:restriction>
</xsd:simpleType>

<!-- **** DSML Value **** -->
<xsd:complexType name="DsmlValue">
  <xsd:choice>
    <xsd:element name="utf8" type="xsd:string"/>
    <xsd:element name="binary" type="xsd:base64Binary"/>
    <xsd:element name="uri" type="xsd:anyURI"/>
  </xsd:choice>
</xsd:complexType>

<!-- **** DSML Any external XML structure **** -->
<xsd:complexType name="DsmlANY">
  <xsd:sequence>
    <xsd:any/>
  </xsd:sequence>
</xsd:complexType>


<!-- **** DSML Control **** --> 
<xsd:complexType name="Control">
  <xsd:sequence>
    <xsd:element name="controlValue" minOccurs="0" maxOccurs="1" type="DsmlANY"/>
  </xsd:sequence>
  <xsd:attribute name="type" use="required" type="ExtensionTypeID"/>
  <xsd:attribute name="criticality" use="optional" default="false" type="xsd:boolean" />
</xsd:complexType>

<!-- **** DSML Filter **** --> 
<xsd:complexType name="Filter">
  <xsd:group minOccurs="1" maxOccurs="1" ref="FilterGroup"/>
</xsd:complexType>

<xsd:group name="FilterGroup">
  <xsd:sequence>
    <xsd:choice minOccurs="1" maxOccurs="1" >
      <xsd:element name="and" type="FilterSet"/>
      <xsd:element name="or"  type="FilterSet"/>
      <xsd:element name="not"  type="Filter"/>
      <xsd:element name="equalityMatch" type="AttributeValueAssertion"/>
      <xsd:element name="substrings" type="SubstringFilter"/>
      <xsd:element name="greaterOrEqual" type="AttributeValueAssertion"/>
      <xsd:element name="lessOrEqual" type="AttributeValueAssertion"/>
      <xsd:element name="present" type="AttributeDescription"/>
      <xsd:element name="approxMatch" type="AttributeValueAssertion"/>
      <xsd:element name="extensibleMatch" type="MatchingRuleAssertion"/>
    </xsd:choice>    
  </xsd:sequence>
</xsd:group>

<xsd:complexType name="FilterSet">
  <xsd:sequence>
    <xsd:group minOccurs="0" maxOccurs="unbounded" ref="FilterGroup"/>
  </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="AttributeValueAssertion">
  <xsd:sequence>
    <xsd:element name="value" type="DsmlValue"/>
  </xsd:sequence>
  <xsd:attribute name="desc" type="OID"/>
</xsd:complexType>

<xsd:complexType name="AttributeDescription">
  <xsd:attribute name="desc" type="OID"/>
</xsd:complexType>

<xsd:complexType name="SubstringFilter">
  <xsd:sequence>
    <xsd:choice minOccurs="1" maxOccurs="unbounded">
      <xsd:element name="initial" type="DsmlValue"/>
      <xsd:element name="any" type="DsmlValue"/>
      <xsd:element name="final" type="DsmlValue"/>
    </xsd:choice>
  </xsd:sequence>
  <xsd:attribute name="desc" type="OID"/>
</xsd:complexType>

<xsd:complexType name="MatchingRuleAssertion">
  <xsd:sequence>
    <xsd:element name="value" type="DsmlValue"/>
  </xsd:sequence>
  <xsd:attribute name="dnAttributes" use="optional" type="xsd:boolean" default="false"/>
  <xsd:attribute name="matchingRule" use="optional" type="OID"/>
  <xsd:attribute name="desc" use="optional" type="OID"/>
</xsd:complexType>

<!--  *************** DSML MESSAGE ******************** -->
<xsd:complexType name="DsmlMessage">
  <xsd:sequence>
    <xsd:element name="control" minOccurs="0" maxOccurs="unbounded" type="Control"/>
  </xsd:sequence>
  <xsd:attribute name="requestID" use="optional" type="RequestID" />
</xsd:complexType>

<!--  *************** LDAP RESULT ********************* -->

<xsd:simpleType name="LDAPErrorCode">
   <xsd:restriction base="xsd:string">
         <xsd:enumeration value="success" />
         <xsd:enumeration value="operationsError" />
         <xsd:enumeration value="protocolError" />
         <xsd:enumeration value="timeLimitExceeded" />
         <xsd:enumeration value="sizeLimitExceeded" />
         <xsd:enumeration value="compareFalse" />
         <xsd:enumeration value="compareTrue" />
         <xsd:enumeration value="authMethodNotSupported" />
         <xsd:enumeration value="strongAuthRequired" />
         <xsd:enumeration value="referral" />
         <xsd:enumeration value="adminLimitExceeded" />
         <xsd:enumeration value="unavailableCriticalExtension" />
         <xsd:enumeration value="confidentialityRequired" />
         <xsd:enumeration value="saslBindInProgress" />
         <xsd:enumeration value="noSuchAttribute" />
         <xsd:enumeration value="undefinedAttributeType" />
         <xsd:enumeration value="inappropriateMatching" />
         <xsd:enumeration value="constraintViolation" />
         <xsd:enumeration value="attributeOrValueExists" />
         <xsd:enumeration value="invalidAttributeSyntax" />
         <xsd:enumeration value="noSuchObject" />
         <xsd:enumeration value="aliasProblem" />
         <xsd:enumeration value="invalidDNSyntax" />
         <xsd:enumeration value="aliasDerefencingProblem" />
         <xsd:enumeration value="inappropriateAuthentication" />
         <xsd:enumeration value="invalidCredentials" />
         <xsd:enumeration value="insufficientAccessRights" />
         <xsd:enumeration value="busy" />
         <xsd:enumeration value="unavailable" />
         <xsd:enumeration value="unwillingToPerform" />
         <xsd:enumeration value="loopDetect" />
         <xsd:enumeration value="namingViolation" />
         <xsd:enumeration value="objectClassViolation" />
         <xsd:enumeration value="notAllowedOnNonLeaf" />
         <xsd:enumeration value="notAllowedOnRDN" />
         <xsd:enumeration value="entryAlreadyExists" />
         <xsd:enumeration value="objectClassModsProhibited" />
         <xsd:enumeration value="affectMultipleDSAs" />
         <xsd:enumeration value="other" />
    </xsd:restriction>
</xsd:simpleType>

<xsd:complexType name="ResultCode">
  <xsd:attribute name="code" type="xsd:int"/>
  <xsd:attribute name="descr" use="optional" type="LDAPErrorCode"/>
</xsd:complexType>

<xsd:complexType name="LDAPResult">
  <xsd:complexContent>
    <xsd:extension base="DsmlMessage">
      <xsd:sequence>
        <xsd:element name="resultCode" minOccurs="1" maxOccurs="1" type="ResultCode"/>
        <xsd:element name="errorMessage" minOccurs="0" maxOccurs="1" default="" type="xsd:string" />
        <xsd:element name="referral"  minOccurs="0" maxOccurs="unbounded" default=""  type="xsd:anyURI" />
      </xsd:sequence>
      <xsd:attribute name="matchedDN" use="optional" default="" type="DsmlDN"/>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="ErrorResponse">
  <xsd:sequence>
    <xsd:element name="message" minOccurs="0" type="xsd:string"/>
    <xsd:element name="detail" minOccurs="0">
      <xsd:complexType>
        <xsd:sequence>
          <xsd:any/>
        </xsd:sequence>
      </xsd:complexType>
    </xsd:element>
  </xsd:sequence>
  <xsd:attribute name="requestID" use="optional" type="RequestID" />
  <xsd:attribute name="type">
    <xsd:simpleType>
      <xsd:restriction base="xsd:string">
        <xsd:enumeration value="notAttempted"/>
        <xsd:enumeration value="couldNotConnect"/>
        <xsd:enumeration value="connectionClosed"/>
        <xsd:enumeration value="other"/>
      </xsd:restriction>
    </xsd:simpleType>
  </xsd:attribute>
</xsd:complexType>


<!-- *************** Bind ********************* -->

<xsd:complexType name="BindRequest">
  <xsd:complexContent>
    <xsd:extension base="DsmlMessage">
      <xsd:attribute name="principal" use="required" type="DsmlDN"/>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<!-- *************** Search ********************* -->

<xsd:complexType name="AttributeDescriptions">
  <xsd:sequence minOccurs="0" maxOccurs="unbounded">
    <xsd:element name="attribute" type="AttributeDescription"/>
  </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="SearchRequest">
  <xsd:complexContent>
    <xsd:extension base="DsmlMessage">
      <xsd:sequence>
        <xsd:element name="filter" minOccurs="1" maxOccurs="1" type="Filter" />
        <xsd:element name="attributes" minOccurs="0" maxOccurs="1" type="AttributeDescriptions"/>
      </xsd:sequence>
      <xsd:attribute name="dn" use="required" type="DsmlDN" />
      <xsd:attribute name="scope" use="required">
        <xsd:simpleType>
          <xsd:restriction base="xsd:string">
             <xsd:enumeration value="baseObject" />
             <xsd:enumeration value="singleLevel" />
             <xsd:enumeration value="wholeSubtree" />
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:attribute>
      <xsd:attribute name="derefAliases" use="required">
        <xsd:simpleType>
	  <xsd:restriction base="xsd:string">
            <xsd:enumeration value="neverDerefAliases" />
            <xsd:enumeration value="derefInSearching" />
            <xsd:enumeration value="derefFindingBaseObj" />
            <xsd:enumeration value="derefAlways" />
          </xsd:restriction>
        </xsd:simpleType>
      </xsd:attribute>
      <xsd:attribute name="sizeLimit" use="optional" default="0" type="MAXINT" />
      <xsd:attribute name="timeLimit" use="optional" default="0" type="MAXINT" />
      <xsd:attribute name="typesOnly" use="optional" default="false" type="xsd:boolean" />
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>


<!-- ***** Search Result Entry ***** -->

<xsd:complexType name="SearchResultEntry">
  <xsd:complexContent>
    <xsd:extension base="DsmlMessage">
      <xsd:sequence>
        <xsd:element name="attr" minOccurs="0" maxOccurs="unbounded" type="DsmlAttr"/>
      </xsd:sequence>
      <xsd:attribute name="dn" use="required" type="DsmlDN"/>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>



<xsd:complexType name="DsmlAttr">
   <xsd:sequence>       
     <xsd:element name="value" minOccurs="0" maxOccurs="unbounded" type="DsmlValue"/>
   </xsd:sequence>
   <xsd:attribute name="desc" use="required" type="OID"/>
</xsd:complexType>


<xsd:complexType name="DsmlModification">
   <xsd:sequence>
     <xsd:element name="value" minOccurs="0" maxOccurs="unbounded" type="DsmlValue"/>
   </xsd:sequence>
   <xsd:attribute name="desc" use="required" type="OID"/>
   <xsd:attribute name="operation" use="required" > 
        <xsd:simpleType>
   	   <xsd:restriction base="xsd:string">
              <xsd:enumeration value="add" />
              <xsd:enumeration value="delete" />
              <xsd:enumeration value="replace" />
           </xsd:restriction>
        </xsd:simpleType>
   </xsd:attribute>
</xsd:complexType>


<!-- ***** Search Result Reference ***** -->
<xsd:complexType name="SearchResultReference">
  <xsd:complexContent>
    <xsd:extension base="DsmlMessage">
      <xsd:sequence>
        <xsd:element name="ref" minOccurs="1" maxOccurs="unbounded" type="xsd:anyURI" />
      </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>



<!-- ************* MODIFY ******************** -->
<xsd:complexType name="ModifyRequest">
  <xsd:complexContent>
    <xsd:extension base="DsmlMessage">
      <xsd:sequence>
        <xsd:element name="attr" minOccurs="0" maxOccurs="unbounded" type="DsmlModification" />
      </xsd:sequence>
      <xsd:attribute name="dn" use="required" type="DsmlDN" />
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>





<!--  *************** ADD ********************* -->
<xsd:complexType name="AddRequest">
  <xsd:complexContent>
    <xsd:extension base="DsmlMessage">
      <xsd:sequence>
        <xsd:element name="attr" minOccurs="0" maxOccurs="unbounded" type="DsmlAttr" />
      </xsd:sequence>  
      <xsd:attribute name="dn" use="required" type="DsmlDN"/>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>



<!-- *************** DELETE ********************* -->
<xsd:complexType name="DelRequest">
  <xsd:complexContent>
    <xsd:extension base="DsmlMessage">
      <xsd:attribute name="dn" use="required" type="DsmlDN"/>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>



<!-- *************** MODIFY DN ********************* -->
<xsd:complexType name="ModifyDNRequest">
  <xsd:complexContent>
    <xsd:extension base="DsmlMessage">
      <xsd:attribute name="dn" use="required" type="DsmlDN"/>  
      <xsd:attribute name="newrdn" use="required" type="DsmlRDN"/>
      <xsd:attribute name="deleteoldrdn" use="optional" default="true" type="xsd:boolean"/>
      <xsd:attribute name="newSuperior" use="optional" type="DsmlDN"/>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>



<!-- ************* COMPARE ******************** -->
<xsd:complexType name="CompareRequest">
  <xsd:complexContent>
    <xsd:extension base="DsmlMessage">
      <xsd:sequence>
        <xsd:element name="attr" minOccurs="1" maxOccurs="1" type="AttributeValueAssertion" />
      </xsd:sequence>
      <xsd:attribute name="dn" use="required" type="DsmlDN"/>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>


<!-- ***** ABANDON ***** -->
<xsd:complexType name="AbandonRequest">
  <xsd:complexContent>
    <xsd:extension base="DsmlMessage">
      <xsd:attribute name="abandonID" use="required" type="RequestID"/>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>


<!-- ************* EXTENDED OPERATION ******************** -->

<xsd:complexType name="ExtendedRequest">
  <xsd:complexContent>
    <xsd:extension base="DsmlMessage">
      <xsd:sequence>
        <xsd:element name="requestName" minOccurs="1" maxOccurs="1" type="ExtensionTypeID"/>
        <xsd:element name="requestValue" minOccurs="0" maxOccurs="1" type="DsmlANY"/> 
      </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<xsd:complexType name="ExtendedResponse">
  <xsd:complexContent>
    <xsd:extension base="LDAPResult">
      <xsd:sequence>
        <xsd:element name="responseName" minOccurs="0" maxOccurs="1" type="ExtensionTypeID"/>
        <xsd:element name="response" minOccurs="0" maxOccurs="1" type="DsmlANY"/>
      </xsd:sequence>
    </xsd:extension>
  </xsd:complexContent>
</xsd:complexType>

<!-- ********************END base SCHEMA ********************* -->

</xsd:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="urn:oasis-open:dsml:2:batch"
            xmlns:dsml="urn:oasis-open:dsml:2"
            xmlns="urn:oasis-open:dsml:2:batch"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            elementFormDefault="qualified">
<xsd:import namespace="urn:oasis-open:dsml:2" schemaLocation="DSMLv2B.xsd"/>

<!--  *************** DSMLv2.0 Batch Envelopes ********************* -->

<xsd:element name="request" type="BatchRequest"/>
<xsd:element name="response" type="BatchResponse"/>
<xsd:element name="searchResponse" type="SearchResponse"/>

<!-- **** DSML Batch Request Envelope **** -->
<xsd:complexType name="BatchRequest">
  <xsd:sequence>
    <xsd:element name="requestID" minOccurs="0" maxOccurs="1" type="xsd:string" />
    <xsd:group ref="dsml:DSMLRequest" minOccurs="0" maxOccurs="unbounded"/>
  </xsd:sequence>

  <xsd:attribute name="processing" use="optional" default="sequential">
    <xsd:simpleType>
      <xsd:restriction base="xsd:string">
        <xsd:enumeration value="sequential"/>
        <xsd:enumeration value="parallel"/>
      </xsd:restriction>
    </xsd:simpleType>
  </xsd:attribute>
  <xsd:attribute name="onError" use="optional" default="exit">
    <xsd:simpleType>
      <xsd:restriction base="xsd:string">
        <xsd:enumeration value="resume"/>
        <xsd:enumeration value="exit"/>
      </xsd:restriction>
    </xsd:simpleType>
  </xsd:attribute>
</xsd:complexType>

<!-- **** DSML Batch Response Envelope **** -->
<xsd:complexType name="BatchResponse">
  <xsd:sequence>
    <xsd:element name="requestID" minOccurs="0" maxOccurs="1" type="xsd:string" />
    <xsd:group ref="dsml:DSMLResponse" minOccurs="0" maxOccurs="unbounded"/>
  </xsd:sequence>
</xsd:complexType>


<!-- **** DSML Batch Response Envelope **** -->
<xsd:complexType name="SearchResponse">
  <xsd:sequence>
    <xsd:element name="searchResultEntry" minOccurs="0" maxOccurs="unbounded" type="dsml:SearchResultEntry" />
    <xsd:element name="searchResultReference"  minOccurs="0" maxOccurs="unbounded" type="dsml:SearchResultReference"/>
    <xsd:element name="searchResultDone" minOccurs="1" maxOccurs="1" type="dsml:LDAPResult" />
  </xsd:sequence>
</xsd:complexType>

</xsd:schema>


[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]


Powered by eList eXpress LLC