<xsd:schema targetNamespace="urn:oasis:names:tc:DSML:2:0:core"
|
xmlns="urn:oasis:names:tc:DSML:2:0:core"
|
xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
|
<!-- Copyright (C) The Organization for the Advancement of Structured Information Standards [OASIS] 2001. All Rights Reserved. -->
|
<!-- DSML Requests -->
|
<xsd:group name="DSMLRequests">
|
<xsd:choice>
|
<xsd:element name="authRequest" type="AuthRequest"/>
|
<xsd:group ref="BatchRequests"/>
|
</xsd:choice>
|
</xsd:group>
|
<xsd:group name="BatchRequests">
|
<xsd:choice>
|
<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="extendedRequest" type="ExtendedRequest"/>
|
</xsd:choice>
|
</xsd:group>
|
<!-- DSML Responses -->
|
<xsd:group name="DSMLResponses">
|
<xsd:choice>
|
<xsd:element name="authResponse" 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="extendedResponse" type="ExtendedResponse"/>
|
<xsd:element name="errorResponse" type="ErrorResponse"/>
|
</xsd:choice>
|
</xsd:group>
|
<!-- *************** Batch Envelopes ********************* -->
|
<xsd:element name="batchRequest" type="BatchRequest"/>
|
<xsd:element name="batchResponse" type="BatchResponse"/>
|
<!-- **** Batch Request Envelope **** -->
|
<xsd:complexType name="BatchRequest">
|
<xsd:sequence>
|
<xsd:element name="authRequest" type="AuthRequest" minOccurs="0" maxOccurs="1"/>
|
<xsd:group ref="BatchRequests" minOccurs="0" maxOccurs="unbounded"/>
|
</xsd:sequence>
|
<xsd:attribute name="requestID" type="RequestID" use="optional"/>
|
<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="responseOrder" use="optional" default="sequential">
|
<xsd:simpleType>
|
<xsd:restriction base="xsd:string">
|
<xsd:enumeration value="sequential"/>
|
<xsd:enumeration value="unordered"/>
|
</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>
|
<!-- **** Batch Response Envelope **** -->
|
<xsd:complexType name="BatchResponse">
|
<xsd:sequence>
|
<xsd:group ref="BatchResponses" minOccurs="0" maxOccurs="unbounded"/>
|
</xsd:sequence>
|
<xsd:attribute name="requestID" type="RequestID" use="optional"/>
|
</xsd:complexType>
|
<!-- **** Batch Responses **** -->
|
<xsd:group name="BatchResponses">
|
<xsd:choice>
|
<xsd:element name="searchResponse" type="SearchResponse"/>
|
<xsd:element name="authResponse" 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="extendedResponse" type="ExtendedResponse"/>
|
<xsd:element name="errorResponse" type="ErrorResponse"/>
|
</xsd:choice>
|
</xsd:group>
|
<!-- **** Search Response **** -->
|
<xsd:complexType name="SearchResponse">
|
<xsd:sequence>
|
<xsd:element name="searchResultEntry" type="SearchResultEntry"
|
minOccurs="0" maxOccurs="unbounded"/>
|
<xsd:element name="searchResultReference" type="SearchResultReference"
|
minOccurs="0" maxOccurs="unbounded"/>
|
<xsd:element name="searchResultDone" type="LDAPResult"/>
|
</xsd:sequence>
|
<xsd:attribute name="requestID" type="RequestID" use="optional"/>
|
</xsd:complexType>
|
<!-- ***** 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>
|
<!-- ***** AttributeDescriptionValue ***** -->
|
<xsd:simpleType name="AttributeDescriptionValue">
|
<xsd:restriction base="xsd:string">
|
<xsd:pattern value="((([0-2](\.[0-9]+)+)|([a-zA-Z]+([a-zA-Z0-9]|[\-])*))(;([a-zA-Z0-9]|[\-])+)*)"/>
|
</xsd:restriction>
|
</xsd:simpleType>
|
<xsd:simpleType name="NumericOID">
|
<xsd:restriction base="xsd:string">
|
<xsd:pattern value="[0-2]\.[0-9]+(\.[0-9]+)*"/>
|
</xsd:restriction>
|
</xsd:simpleType>
|
<!-- ***** MAX Integer ***** -->
|
<xsd:simpleType name="MAXINT">
|
<xsd:restriction base="xsd:unsignedInt">
|
<xsd:maxInclusive value="2147483647"/>
|
</xsd:restriction>
|
</xsd:simpleType>
|
<!-- **** DSML Value **** -->
|
<xsd:simpleType name="DsmlValue">
|
<xsd:union memberTypes="xsd:string xsd:base64Binary xsd:anyURI"/>
|
</xsd:simpleType>
|
<!-- **** DSML Control **** -->
|
<xsd:complexType name="Control">
|
<xsd:sequence>
|
<xsd:element name="controlValue" type="xsd:anyType" minOccurs="0"/>
|
</xsd:sequence>
|
<xsd:attribute name="type" type="NumericOID" use="required"/>
|
<xsd:attribute name="criticality" type="xsd:boolean" use="optional" default="false"/>
|
</xsd:complexType>
|
<!-- **** DSML Filter **** -->
|
<xsd:complexType name="Filter">
|
<xsd:group ref="FilterGroup"/>
|
</xsd:complexType>
|
<xsd:group name="FilterGroup">
|
<xsd:sequence>
|
<xsd:choice>
|
<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 ref="FilterGroup" minOccurs="0" maxOccurs="unbounded"/>
|
</xsd:sequence>
|
</xsd:complexType>
|
<xsd:complexType name="AttributeValueAssertion">
|
<xsd:sequence>
|
<xsd:element name="value" type="DsmlValue"/>
|
</xsd:sequence>
|
<xsd:attribute name="name" type="AttributeDescriptionValue" use="required"/>
|
</xsd:complexType>
|
<xsd:complexType name="AttributeDescription">
|
<xsd:attribute name="name" type="AttributeDescriptionValue" use="required"/>
|
</xsd:complexType>
|
<xsd:complexType name="SubstringFilter">
|
<xsd:sequence>
|
<xsd:element name="initial" type="DsmlValue" minOccurs="0"/>
|
<xsd:element name="any" type="DsmlValue" minOccurs="0" maxOccurs="unbounded"/>
|
<xsd:element name="final" type="DsmlValue" minOccurs="0"/>
|
</xsd:sequence>
|
<xsd:attribute name="name" type="AttributeDescriptionValue" use="required"/>
|
</xsd:complexType>
|
<xsd:complexType name="MatchingRuleAssertion">
|
<xsd:sequence>
|
<xsd:element name="value" type="DsmlValue"/>
|
</xsd:sequence>
|
<xsd:attribute name="dnAttributes" type="xsd:boolean" use="optional" default="false"/>
|
<xsd:attribute name="matchingRule" type="xsd:string" use="optional"/>
|
<xsd:attribute name="name" type="AttributeDescriptionValue" use="optional"/>
|
</xsd:complexType>
|
<!-- *************** DSML MESSAGE ******************** -->
|
<xsd:complexType name="DsmlMessage">
|
<xsd:sequence>
|
<xsd:element name="control" type="Control" minOccurs="0" maxOccurs="unbounded"/>
|
</xsd:sequence>
|
<xsd:attribute name="requestID" type="RequestID" use="optional"/>
|
</xsd:complexType>
|
<!-- *************** LDAP RESULT ********************* -->
|
<xsd:simpleType name="LDAPResultCode">
|
<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="aliasDereferencingProblem"/>
|
<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" use="required"/>
|
<xsd:attribute name="descr" type="LDAPResultCode" use="optional"/>
|
</xsd:complexType>
|
<xsd:complexType name="LDAPResult">
|
<xsd:complexContent>
|
<xsd:extension base="DsmlMessage">
|
<xsd:sequence>
|
<xsd:element name="resultCode" type="ResultCode"/>
|
<xsd:element name="errorMessage" type="xsd:string" minOccurs="0"/>
|
<xsd:element name="referral" type="xsd:anyURI" minOccurs="0" maxOccurs="unbounded"/>
|
</xsd:sequence>
|
<xsd:attribute name="matchedDN" type="DsmlDN" use="optional"/>
|
</xsd:extension>
|
</xsd:complexContent>
|
</xsd:complexType>
|
<xsd:complexType name="ErrorResponse">
|
<xsd:sequence>
|
<xsd:element name="message" type="xsd:string" minOccurs="0"/>
|
<xsd:element name="detail" minOccurs="0">
|
<xsd:complexType>
|
<xsd:sequence>
|
<xsd:any/>
|
</xsd:sequence>
|
</xsd:complexType>
|
</xsd:element>
|
</xsd:sequence>
|
<xsd:attribute name="requestID" type="RequestID" use="optional"/>
|
<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="malformedRequest"/>
|
<xsd:enumeration value="gatewayInternalError"/>
|
<xsd:enumeration value="authenticationFailed"/>
|
<xsd:enumeration value="unresolvableURI"/>
|
<xsd:enumeration value="other"/>
|
</xsd:restriction>
|
</xsd:simpleType>
|
</xsd:attribute>
|
</xsd:complexType>
|
<!-- *************** Auth ********************* -->
|
<xsd:complexType name="AuthRequest">
|
<xsd:complexContent>
|
<xsd:extension base="DsmlMessage">
|
<xsd:attribute name="principal" type="xsd:string" use="required"/>
|
</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" type="Filter"/>
|
<xsd:element name="attributes" type="AttributeDescriptions" minOccurs="0"/>
|
</xsd:sequence>
|
<xsd:attribute name="dn" type="DsmlDN" use="required"/>
|
<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" type="MAXINT" use="optional" default="0"/>
|
<xsd:attribute name="timeLimit" type="MAXINT" use="optional" default="0"/>
|
<xsd:attribute name="typesOnly" type="xsd:boolean" use="optional" default="false"/>
|
</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" type="DsmlAttr" minOccurs="0" maxOccurs="unbounded"/>
|
</xsd:sequence>
|
<xsd:attribute name="dn" type="DsmlDN" use="required"/>
|
</xsd:extension>
|
</xsd:complexContent>
|
</xsd:complexType>
|
<xsd:complexType name="DsmlAttr">
|
<xsd:sequence>
|
<xsd:element name="value" type="DsmlValue" minOccurs="0" maxOccurs="unbounded"/>
|
</xsd:sequence>
|
<xsd:attribute name="name" type="AttributeDescriptionValue" use="required"/>
|
</xsd:complexType>
|
<xsd:complexType name="DsmlModification">
|
<xsd:sequence>
|
<xsd:element name="value" type="DsmlValue" minOccurs="0" maxOccurs="unbounded"/>
|
</xsd:sequence>
|
<xsd:attribute name="name" type="AttributeDescriptionValue" use="required"/>
|
<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" type="xsd:anyURI" maxOccurs="unbounded"/>
|
</xsd:sequence>
|
</xsd:extension>
|
</xsd:complexContent>
|
</xsd:complexType>
|
<!-- ************* MODIFY ******************** -->
|
<xsd:complexType name="ModifyRequest">
|
<xsd:complexContent>
|
<xsd:extension base="DsmlMessage">
|
<xsd:sequence>
|
<xsd:element name="modification" type="DsmlModification" minOccurs="0" maxOccurs="unbounded"/>
|
</xsd:sequence>
|
<xsd:attribute name="dn" type="DsmlDN" use="required"/>
|
</xsd:extension>
|
</xsd:complexContent>
|
</xsd:complexType>
|
<!-- *************** ADD ********************* -->
|
<xsd:complexType name="AddRequest">
|
<xsd:complexContent>
|
<xsd:extension base="DsmlMessage">
|
<xsd:sequence>
|
<xsd:element name="attr" type="DsmlAttr" minOccurs="0" maxOccurs="unbounded"/>
|
</xsd:sequence>
|
<xsd:attribute name="dn" type="DsmlDN" use="required"/>
|
</xsd:extension>
|
</xsd:complexContent>
|
</xsd:complexType>
|
<!-- *************** DELETE ********************* -->
|
<xsd:complexType name="DelRequest">
|
<xsd:complexContent>
|
<xsd:extension base="DsmlMessage">
|
<xsd:attribute name="dn" type="DsmlDN" use="required"/>
|
</xsd:extension>
|
</xsd:complexContent>
|
</xsd:complexType>
|
<!-- *************** MODIFY DN ********************* -->
|
<xsd:complexType name="ModifyDNRequest">
|
<xsd:complexContent>
|
<xsd:extension base="DsmlMessage">
|
<xsd:attribute name="dn" type="DsmlDN" use="required"/>
|
<xsd:attribute name="newrdn" type="DsmlRDN" use="required"/>
|
<xsd:attribute name="deleteoldrdn" type="xsd:boolean" use="optional" default="true"/>
|
<xsd:attribute name="newSuperior" type="DsmlDN" use="optional"/>
|
</xsd:extension>
|
</xsd:complexContent>
|
</xsd:complexType>
|
<!-- ************* COMPARE ******************** -->
|
<xsd:complexType name="CompareRequest">
|
<xsd:complexContent>
|
<xsd:extension base="DsmlMessage">
|
<xsd:sequence>
|
<xsd:element name="assertion" type="AttributeValueAssertion"/>
|
</xsd:sequence>
|
<xsd:attribute name="dn" type="DsmlDN" use="required"/>
|
</xsd:extension>
|
</xsd:complexContent>
|
</xsd:complexType>
|
<!-- ***** ABANDON ***** -->
|
<xsd:complexType name="AbandonRequest">
|
<xsd:complexContent>
|
<xsd:extension base="DsmlMessage">
|
<xsd:attribute name="abandonID" type="RequestID" use="required"/>
|
</xsd:extension>
|
</xsd:complexContent>
|
</xsd:complexType>
|
<!-- ************* EXTENDED OPERATION ******************** -->
|
<xsd:complexType name="ExtendedRequest">
|
<xsd:complexContent>
|
<xsd:extension base="DsmlMessage">
|
<xsd:sequence>
|
<xsd:element name="requestName" type="NumericOID"/>
|
<xsd:element name="requestValue" type="xsd:anyType" minOccurs="0"/>
|
</xsd:sequence>
|
</xsd:extension>
|
</xsd:complexContent>
|
</xsd:complexType>
|
<xsd:complexType name="ExtendedResponse">
|
<xsd:complexContent>
|
<xsd:extension base="LDAPResult">
|
<xsd:sequence>
|
<xsd:element name="responseName" type="NumericOID" minOccurs="0"/>
|
<xsd:element name="response" type="xsd:anyType" minOccurs="0"/>
|
</xsd:sequence>
|
</xsd:extension>
|
</xsd:complexContent>
|
</xsd:complexType>
|
<!-- ********************END base SCHEMA ********************* -->
|
</xsd:schema>
|