Projet

Général

Profil

Télécharger (11,9 ko) Statistiques
| Branche: | Tag: | Révision:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:ypsilon="urn:unicaen:iota:ypsilon:xsd"
targetNamespace="urn:unicaen:iota:ypsilon:xsd"
elementFormDefault="unqualified"
attributeFormDefault="unqualified"
version="1.0">

<!-- SIMPLE TYPES -->

<xs:simpleType name="tLeaseSeconds">
<xs:restriction base="xs:int">
<xs:minInclusive value="0"/>
<xs:maxExclusive value="3600"/>
</xs:restriction>
</xs:simpleType>

<!-- ENUM TYPES -->

<xs:simpleType name="tMethod">
<xs:restriction base="xs:token">
<xs:enumeration value="hello"/>
<xs:enumeration value="login"/>
<xs:enumeration value="logout"/>
<xs:enumeration value="create"/>
<xs:enumeration value="update"/>
<xs:enumeration value="delete"/>
<xs:enumeration value="info"/>
<xs:enumeration value="lookup"/>
</xs:restriction>
</xs:simpleType>

<!-- SIMPLE ID TYPES -->

<xs:simpleType name="tSessionID">
<xs:restriction base="xs:token">
<xs:minLength value="32"/>
<xs:maxLength value="32"/>
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="tUserID">
<xs:restriction base="xs:token">
<xs:minLength value="2"/>
<xs:maxLength value="64"/>
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="tAlias">
<xs:restriction base="xs:token">
<xs:minLength value="2"/>
<xs:maxLength value="64"/>
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="tOwnerID">
<xs:restriction base="xs:token">
<xs:minLength value="2"/>
<xs:maxLength value="64"/>
</xs:restriction>
</xs:simpleType>

<xs:simpleType name="tSmallUID">
<xs:restriction base="xs:int"/>
</xs:simpleType>

<!-- LIST ITEM TYPES -->

<xs:complexType name="tUserItem">
<xs:attribute
name="id"
type="ypsilon:tUserID"
use="required"/>
</xs:complexType>

<xs:complexType name="tUserItemList">
<xs:sequence>
<xs:element
name="user"
type="ypsilon:tUserItem"
minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>


<!-- COMPLEX TYPES -->

<xs:complexType name="tResult">
<xs:attribute
name="desc"
type="xs:string"
use="required"/>
</xs:complexType>


<!-- ABSTRACT REQ(IN)/RSP(OUT) BASE TYPES -->

<xs:complexType name="tAbstractIn" abstract="true">
<xs:sequence>
<xs:element
name="sid"
type="ypsilon:tSessionID"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="tAbstractOut" abstract="true">
<xs:sequence>
<xs:element
name="result"
type="ypsilon:tResult"/>
</xs:sequence>
</xs:complexType>

<!-- GLOBAL METHODS -->

<xs:complexType name="HelloIn">
<xs:complexContent>
<xs:extension base="ypsilon:tAbstractIn">
<xs:sequence>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<xs:complexType name="HelloOut">
<xs:complexContent>
<xs:extension base="ypsilon:tAbstractOut">
<xs:sequence>
<xs:element
name="serverIdentity"
type="xs:token"/>
<xs:element
name="serverTS"
type="xs:dateTime"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<!-- USER METHODS -->

<xs:complexType name="UserLookupIn">
<xs:complexContent>
<xs:extension base="ypsilon:tAbstractIn">
<xs:sequence>
<xs:element
name="userID"
type="ypsilon:tUserID"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<xs:complexType name="UserLookupOut">
<xs:complexContent>
<xs:extension base="ypsilon:tAbstractOut">
<xs:sequence>
<xs:element
name="userList"
type="ypsilon:tUserItemList"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<xs:complexType name="UserCreateIn">
<xs:complexContent>
<xs:extension base="ypsilon:tAbstractIn">
<xs:sequence>
<xs:element
name="userID"
type="ypsilon:tUserID"/>
<xs:element
name="ownerID"
type="ypsilon:tOwnerID"/>
<xs:element
name="alias"
type="ypsilon:tAlias"/>
<xs:element
name="sessionLease"
type="ypsilon:tLeaseSeconds"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<xs:complexType name="UserCreateOut">
<xs:complexContent>
<xs:extension base="ypsilon:tAbstractOut">
</xs:extension>
</xs:complexContent>
</xs:complexType>

<xs:complexType name="UserInfoIn">
<xs:complexContent>
<xs:extension base="ypsilon:tAbstractIn">
<xs:sequence>
<xs:element
name="userID"
type="ypsilon:tUserID"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<xs:complexType name="UserInfoOut">
<xs:complexContent>
<xs:extension base="ypsilon:tAbstractOut">
<xs:sequence>
<xs:element
name="userID"
type="ypsilon:tUserID"/>
<xs:element
name="ownerID"
type="ypsilon:tOwnerID"/>
<xs:element
name="sessionLease"
type="ypsilon:tLeaseSeconds"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<xs:complexType name="UserUpdateIn">
<xs:complexContent>
<xs:extension base="ypsilon:tAbstractIn">
<xs:sequence>
<xs:element
name="userUID"
type="ypsilon:tSmallUID"/>
<xs:element
name="userID"
type="ypsilon:tUserID"
minOccurs="0"/>
<xs:element
name="sessionLease"
type="ypsilon:tLeaseSeconds"
minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<xs:complexType name="UserUpdateOut">
<xs:complexContent>
<xs:extension base="ypsilon:tAbstractOut">
<xs:sequence>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<xs:complexType name="UserDeleteIn">
<xs:complexContent>
<xs:extension base="ypsilon:tAbstractIn">
<xs:sequence>
<xs:element
name="userID"
type="ypsilon:tUserID"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<xs:complexType name="UserDeleteOut">
<xs:complexContent>
<xs:extension base="ypsilon:tAbstractOut">
<xs:sequence>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<xs:complexType name="UserCertLoginIn">
<xs:element
name="userID"
type="ypsilon:tUserID"/>
</xs:complexType>

<xs:complexType name="UserLoginOut">
<xs:complexContent>
<xs:extension base="ypsilon:tAbstractOut">
<xs:sequence>
<xs:element
name="sid"
type="ypsilon:tSessionID"/>
<xs:element
name="sessionLease"
type="ypsilon:tLeaseSeconds"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<xs:complexType name="UserLogoutIn">
<xs:complexContent>
<xs:extension base="ypsilon:tAbstractIn">
<xs:sequence>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

<xs:complexType name="UserLogoutOut">
<xs:complexContent>
<xs:extension base="ypsilon:tAbstractOut">
<xs:sequence>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>


<!-- ELEMENT REFERENCES -->

<xs:element
name="Hello"
type="ypsilon:HelloIn"/>
<xs:element
name="HelloResult"
type="ypsilon:HelloOut"/>
<xs:element
name="UserLookup"
type="ypsilon:UserLookupIn"/>
<xs:element
name="UserLookupResult"
type="ypsilon:UserLookupOut"/>
<xs:element
name="UserCreate"
type="ypsilon:UserCreateIn"/>
<xs:element
name="UserCreateResult"
type="ypsilon:UserCreateOut"/>
<xs:element
name="UserInfo"
type="ypsilon:UserInfoIn"/>
<xs:element
name="UserInfoResult"
type="ypsilon:UserInfoOut"/>
<xs:element
name="UserUpdate"
type="ypsilon:UserUpdateIn"/>
<xs:element
name="UserUpdateResult"
type="ypsilon:UserUpdateOut"/>
<xs:element
name="UserDelete"
type="ypsilon:UserDeleteIn"/>
<xs:element
name="UserDeleteResult"
type="ypsilon:UserDeleteOut"/>
<xs:element
name="UserCertLogin"
type="ypsilon:UserCertLoginIn"/>
<xs:element
name="UserLoginResult"
type="ypsilon:UserLoginOut"/>
<xs:element
name="UserLogout"
type="ypsilon:UserLogoutIn"/>
<xs:element
name="UserLogoutResult"
type="ypsilon:UserLogoutOut"/>


<!-- EXCEPTIONS -->

<xs:element name="UserException" type="ypsilon:UserException"/>
<xs:complexType name="UserException">
<xs:sequence>
<xs:element name="reason" type="xs:string"/>
<xs:element name="queryName" type="xs:string"/>
</xs:sequence>
</xs:complexType>

<xs:element name="ImplementationException" type="ypsilon:ImplementationException"/>
<xs:complexType name="ImplementationException">
<xs:complexContent>
<xs:extension base="ypsilon:UserException">
<xs:sequence>
<xs:element name="severity" type="ypsilon:ImplementationExceptionSeverity"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:simpleType name="ImplementationExceptionSeverity">
<xs:restriction base="xs:NCName">
<xs:enumeration value="ERROR"/>
<xs:enumeration value="SEVERE"/>
</xs:restriction>
</xs:simpleType>

<xs:element name="SecurityException" type="ypsilon:SecurityException"/>
<xs:complexType name="SecurityException">
<xs:complexContent>
<xs:extension base="ypsilon:UserException">
<xs:sequence/>
</xs:extension>
</xs:complexContent>
</xs:complexType>

</xs:schema>
(2-2/2)