Fichiers schémas CDK Cast Iron
Les fichiers schémas XML fournissent la syntaxe et définissent la manière dont les éléments et les attributs sont représentés dans les fichiers XML. Vous importez les fichiers schémas CDK Cast Iron dans votre environnement de développement Studio, puis créez vos noeuds finaux et connexions en faisant glisser les éléments de schéma de l'onglet Projet de la boîte à outils vers votre orchestration.
Les fichiers schémas CDK sont les suivants :
ci-connector-config.xsd : ce fichier est utilisé par
Studio et le moteur de déploiement pour définir les options de configuration de base
disponibles pour votre connecteur. Les métadonnées de plug-in sont stockées en tant
qu'éléments dans votre fichier XML et une fois configurées, les propriétés de noeud final
définissent ce que les utilisateurs finaux voient et les activités auxquelles ils sont
exposés.
Voici le fichier ci-connector-config.xsd :
<xs:schema
id="ci-cdk-config"
version="1.0"
targetNamespace="http://www.approuter.com/schemas/cdk/config/"
xmlns:tns="http://www.approuter.com/schemas/cdk/config/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jaxb:extensionBindingPrefixes="xjc"
jaxb:version="2.0"
elementFormDefault="qualified">
<xs:annotation>
<xs:appinfo>
<jaxb:schemaBindings>
<jaxb:package
name="com.approuter.studio.connectors.cdk.config" />
</jaxb:schemaBindings>
<jaxb:globalBindings>
<xjc:simple />
</jaxb:globalBindings>
</xs:appinfo>
</xs:annotation>
<xs:element
name="connectorConfiguration">
<xs:complexType>
<xs:sequence>
<!-- Description du connecteur -->
<xs:element
name="description"
type="xs:string" />
<!-- Définition du formulaire de noeud final -->
<xs:element
name="endpoint"
type="tns:EndpointForm" />
<!-- Activités du connecteur -->
<xs:element
name="activity-group"
type="tns:ActivityGroup" />
<xs:element
name="operations"
minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element
name="operation"
type="tns:operationType"
minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
<!--
Emplacement du noeud final par défaut pour les
opérations qui n'en définissent aucun ou qui ne sont
pas définies
-->
<xs:attribute
name="default-endpoint-location"
type="xs:string"
use="optional" />
</xs:complexType>
</xs:element>
<!-- Version client minimale -->
<xs:element
name="clients"
minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element
name="client"
type="tns:CompatibleClient"
minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- Publication de la documentation -->
<xs:element
name="release-documentation"
type="tns:ReleaseDocumentation"
minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
<!--
Nom interne du connecteur. Ne modifiez pas
les noms d'une édition à l'autre du connecteur
-->
<xs:attribute
name="name"
type="xs:string"
use="required" />
<!-- Etiquette lisible pour le connecteur -->
<xs:attribute
name="label"
type="xs:string"
use="required" />
<!--
Espace de nom de connexion. Permet d'associer
les activités aux noeuds finaux dans Studio
-->
<xs:attribute
name="connection-ns"
type="xs:string"
use="required" />
<!-- Version de ce connecteur -->
<xs:attribute
name="version"
type="xs:string"
use="required" />
<!-- Remarques -->
<xs:attribute
name="notes"
type="xs:string" />
<!-- Date d'édition -->
<xs:attribute
name="release-date"
type="xs:dateTime"
use="optional" />
<!--
Astuces générales destinées au consommateur et
à sa classification
-->
<xs:attribute
name="category"
type="tns:ConnectorCategory" />
</xs:complexType>
</xs:element>
<xs:complexType
name="ReleaseDocumentation">
<xs:simpleContent>
<xs:extension
base="xs:string">
<!-- Version du connecteur de plug-in correspondante -->
<xs:attribute
name="release-version"
type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType
name="CompatibleClient">
<xs:attribute
name="clientName"
type="xs:string"
default="castiron-studio" />
<xs:attribute
name="minimumClientVersion"
type="xs:string"
default="6.0" />
</xs:complexType>
<!--
Formulaire de noeud final. Action de test de la connexion requise.
-->
<xs:complexType
name="EndpointForm">
<xs:complexContent>
<xs:extension
base="tns:Form">
<xs:sequence>
<xs:element
name="test-connection-action"
type="tns:TestConnectionAction" />
<!-- Description du connecteur -->
<xs:element
name="endpoint-description"
type="xs:string" />
</xs:sequence>
<!--
Utilisé pour l'intégration au menu Studio (par ex.
option de menu Noeuds finaux, nom d'instance
de noeud final par défaut)
-->
<xs:attribute
name="endpoint-name"
type="xs:string"
use="required" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType
name="Form">
<xs:sequence>
<!-- Zones du formulaire -->
<xs:element
name="field"
type="tns:FormField"
minOccurs="0"
maxOccurs="unbounded" />
<!-- Vous pouvez grouper des zones -->
<xs:element
name="field-group"
type="tns:FieldGroup"
minOccurs="0"
maxOccurs="unbounded" />
<!-- Actions du formulaire. -->
<xs:element
name="actions"
type="tns:Actions"
minOccurs="0"
maxOccurs="1" />
</xs:sequence>
<xs:attribute
name="name"
type="xs:string"
use="required" />
</xs:complexType>
<!-- Les zones peuvent être membres d'un groupe -->
<xs:complexType
name="FieldGroup">
<xs:sequence>
<xs:element
name="field"
type="tns:FormField"
minOccurs="0"
maxOccurs="unbounded" />
<xs:element
name="field-group"
type="tns:FieldGroup"
minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
<xs:attribute
name="name"
type="xs:string"
use="required" />
<!-- Etiquette de groupe lisible -->
<xs:attribute
name="label"
type="xs:string"
use="optional" />
<!--
Groupes prédéfinis. S'ils sont spécifiés, il n'est pas
nécessaire de spécifier une étiquette, des groupes ou des zones. sont spécifiés, ils seront ignorés.
-->
<xs:attribute
name="type"
use="optional">
<xs:simpleType>
<xs:restriction
base="xs:string">
<xs:enumeration
value="connection-timeout" />
<xs:enumeration
value="connection-proxy" />
<!-- A déterminer (autres) -->
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
<xs:complexType
name="FormField">
<xs:annotation>
<xs:appinfo>
<jaxb:bindings
node="//xs:complexType[@name='FormField']">
<jaxb:class
implClass="com.approuter.studio.connectors.cdk.config.ConnectorFormField" />
</jaxb:bindings>
</xs:appinfo>
</xs:annotation>
<xs:complexContent>
<xs:extension
base="tns:FieldDescriptor">
<xs:sequence>
<!-- Texte descriptif récapitulatif -->
<xs:element
name="short-description"
type="xs:string"
minOccurs="0" />
<!-- Texte descriptif détaillé -->
<xs:element
name="long-description"
type="xs:string"
minOccurs="0" />
<!-- Texte de l'astuce -->
<xs:element
name="hint"
type="xs:string"
minOccurs="0" />
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType
name="Actions">
<xs:sequence>
<xs:element
name="action"
type="tns:Action"
maxOccurs="unbounded" />
<!-- Texte descriptif récapitulatif -->
<xs:element
name="short-description"
type="xs:string"
minOccurs="0" />
</xs:sequence>
<xs:attribute
name="label"
type="xs:string"
use="optional" />
</xs:complexType>
<xs:complexType
name="Action">
<xs:simpleContent>
<xs:extension
base="xs:string">
<xs:attribute
name="label"
type="xs:string" />
<!--
L'opération qui doit être appelée en
réponse à l'action
-->
<xs:attribute
name="operation-name" />
<!-- Texte descriptif récapitulatif -->
<xs:attribute
name="short-description"
type="xs:string"
use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType
name="TestConnectionAction">
<xs:simpleContent>
<xs:restriction
base="tns:Action">
<xs:attribute
name="operation-name"
fixed="TestConnection" />
<xs:attribute
name="label"
type="xs:string"
fixed="Test Connection" />
</xs:restriction>
</xs:simpleContent>
</xs:complexType>
<!-- Catégories de connecteur prédéfinies -->
<!--
utilisées pour indiquer le type de solution d'entreprise
-->
<xs:simpleType
name="ConnectorCategory">
<xs:restriction
base="xs:string">
<xs:enumeration
value="CRM" />
<xs:enumeration
value="SCM" />
<xs:enumeration
value="ERP" />
<xs:enumeration
value="ECM" />
<xs:enumeration
value="SFA" />
<xs:enumeration
value="BPM" />
<xs:enumeration
value="IBP" />
<xs:enumeration
value="ORM" />
<xs:enumeration
value="MIS" />
<xs:enumeration
value="SIS" />
<xs:enumeration
value="COM" />
<xs:enumeration
value="MOM" />
<xs:enumeration
value="PIM" />
<xs:enumeration
value="Database" />
<!-- etc -->
</xs:restriction>
</xs:simpleType>
<!-- Activités -->
<xs:complexType
name="ActivityGroup">
<xs:sequence>
<xs:element
name="activity"
type="tns:Activity"
minOccurs="1"
maxOccurs="unbounded" />
</xs:sequence>
<!--
Etiquette du groupe sous lequel les
activités vont apparaître
-->
<xs:attribute
name="label"
type="xs:string"
use="optional" />
</xs:complexType>
<!-- Activité -->
<xs:complexType
name="Activity">
<xs:sequence>
<!-- Opération WSDL -->
<xs:element
name="operation-name"
type="xs:string" />
<xs:element
name="description"
type="xs:string" />
<xs:element
name="task-list"
type="tns:Tasks" />
</xs:sequence>
<xs:attribute
name="name"
type="xs:string"
use="required" />
<!--
Etiquette de l'activité qui apparaît
sous un groupe d'activité
-->
<xs:attribute
name="label"
type="xs:string"
use="optional" />
</xs:complexType>
<!-- Tâches d'activité -->
<xs:complexType
name="Tasks">
<xs:sequence>
<xs:element
name="configure-task"
type="tns:ConfigureTask" />
</xs:sequence>
</xs:complexType>
<!--
Amélioration possible : déterminez la "capacité de navigation"
selon que les données entrées sont une extension de type
abstrait.
-->
<xs:complexType
name="ConfigureTask">
<xs:sequence>
<xs:element
name="type"
type="tns:ConfigurationType"
default="browse" />
<xs:element
name="applies-to"
type="tns:AppliesTo"
minOccurs="0"
default="inputs" />
</xs:sequence>
</xs:complexType>
<!-- Données pouvant être parcourues ou non -->
<!--
Amélioration possible : déterminez la capacité de navigation
selon que les données entrées sont une extension de type
abstrait.
-->
<xs:simpleType
name="ConfigurationType">
<xs:restriction
base="xs:string">
<xs:enumeration
value="none" />
<xs:enumeration
value="browse" />
</xs:restriction>
</xs:simpleType>
<!-- Les entrées ou sorties sont-elles configurées ? -->
<!--
Amélioration possible : déterminez la capacité de navigation
selon que les données entrées sont une extension de type
abstrait.
-->
<xs:simpleType
name="AppliesTo">
<xs:restriction
base="xs:string">
<xs:enumeration
value="inputs" />
<xs:enumeration
value="outputs" />
<xs:enumeration
value="both" />
</xs:restriction>
</xs:simpleType>
<!-- ******************* -->
<!-- Descripteurs... -->
<xs:simpleType
name="allNNI">
<xs:annotation>
<xs:documentation> for maxOccurs
</xs:documentation>
</xs:annotation>
<xs:union
memberTypes="xs:nonNegativeInteger">
<xs:simpleType>
<xs:restriction
base="xs:NMTOKEN">
<xs:enumeration
value="unbounded" />
</xs:restriction>
</xs:simpleType>
</xs:union>
</xs:simpleType>
<xs:attributeGroup
name="counts">
<xs:attribute
name="minCount"
type="xs:nonNegativeInteger"
use="optional"
default="1" />
<xs:attribute
name="maxCount"
type="tns:allNNI"
use="optional"
default="1" />
</xs:attributeGroup>
<xs:complexType
name="Descriptor"
abstract="true">
<xs:sequence />
<xs:attribute
name="name"
type="xs:string"
use="required" />
<!-- Texte de l'étiquette lisible -->
<xs:attribute
name="label"
type="xs:string"
use="optional" />
<xs:attributeGroup
ref="tns:counts" />
</xs:complexType>
<!--
Les noeuds enfant marqués "volatile" indiquent
que le noeud de texte est défini hors de
la mise en oeuvre du connecteur (par ex. lorsque l'utilisateur final
génère un projet qui utilise le connecteur)
-->
<xs:complexType
name="FieldDescriptor">
<xs:complexContent>
<xs:extension
base="tns:Descriptor">
<xs:sequence>
<!-- Type de zone (par ex. chaîne, zone booléenne, ...) -->
<xs:element
name="type"
type="tns:FieldType" />
<!-- type XSD associé -->
<xs:element
name="soap-type"
type="tns:SoapType"
minOccurs="0" />
<!--
Définissez une valeur par défaut pour la zone,
le cas échéant
-->
<xs:element
name="default-value"
type="xs:string"
minOccurs="0" />
<!--
Indiquez si les valeurs ont un format particulier
par ex. : mot de passe, etc.
-->
<xs:element
name="format"
type="tns:FieldFormat"
minOccurs="0" />
<!--
Définissez si les valeurs possibles forment une collection
(par exemple, une plage ou un ensemble de valeurs)
-->
<xs:element
name="field-restriction"
type="tns:FieldRestriction"
minOccurs="0" />
<!--
Définissez si les valeurs doivent exclusivement être conformes à un masque
d'expression régulière
-->
<xs:element
name="value-restriction"
type="tns:ValueRestriction"
minOccurs="0" />
<!--
Volatile : valeur en cours ou définie. (exemple :
valeur "postée" à partir du panneau de noeud final lorsque
l'utilisateur final appuie sur le bouton
Tester la connexion.)
-->
<xs:element
name="value"
type="xs:string"
minOccurs="0">
<xs:annotation>
<xs:appinfo>volatile</xs:appinfo>
</xs:annotation>
</xs:element>
</xs:sequence>
<!--
<xs:attribute name="readable"
type="xs:boolean" use="optional"
default="true"/> <xs:attribute
name="writable" type="xs:boolean"
default="true" use="optional"/>
-->
<!-- Espace de nom de ce FieldDescriptor -->
<xs:attribute
name="ns"
type="xs:anyURI" />
<!--
Une propriété de configuration peut-elle être appliquée à
cette zone ?
-->
<xs:attribute
name="configurable"
type="xs:boolean"
default="false" />
<!-- Interne -->
<xs:attribute
name="used"
type="xs:boolean"
default="true">
<xs:annotation>
<xs:appinfo>volatile</xs:appinfo>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!--
Le descripteur autorise les consommateurs à obtenir une description
d'objet détaillée. Par exemple,
-->
<!--
le générateur de l'interface utilisateur de Studio est autorisé
à générer une interface associée à différents types de composants d'interface
et comportements (de manière cohérente.)
-->
<!--
Remarque: ObjectDescriptor fait partie de
la réponse de description d'objet définie dans le fichier
ci-connector-api.xsd
-->
<xs:complexType
name="ObjectDescriptor">
<xs:complexContent>
<xs:extension
base="tns:Descriptor">
<xs:sequence>
<xs:element
name="field"
type="tns:FieldDescriptor"
minOccurs="0"
maxOccurs="unbounded" />
<xs:element
name="object"
type="tns:ObjectDescriptor"
minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
<!-- Espace de nom de cet ObjectDescriptor -->
<xs:attribute
name="ns"
type="xs:anyURI" />
<!-- Interne -->
<xs:attribute
name="used"
type="xs:boolean"
default="true">
<xs:annotation>
<xs:appinfo>volatile</xs:appinfo>
</xs:annotation>
</xs:attribute>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- Types pris en charge -->
<xs:simpleType
name="FieldType">
<xs:restriction
base="xs:string">
<xs:enumeration
value="string" />
<xs:enumeration
value="base64" />
<xs:enumeration
value="boolean" />
<xs:enumeration
value="int" />
<xs:enumeration
value="decimal" />
<xs:enumeration
value="date" />
<xs:enumeration
value="dateTime" />
<xs:enumeration
value="anyType" />
<!-- L'une des valeurs ci-dessus (par ex. chaîne, nombre entier, etc.) -->
</xs:restriction>
</xs:simpleType>
<!-- Type XSD correspondant -->
<xs:simpleType
name="SoapType">
<xs:restriction
base="xs:string">
<xs:enumeration
value="xs:base64Binary" />
<xs:enumeration
value="xs:boolean" />
<xs:enumeration
value="xs:decimal" />
<xs:enumeration
value="xs:int" />
<xs:enumeration
value="xs:string" />
<xs:enumeration
value="xs:date" />
<xs:enumeration
value="xs:dateTime" />
<xs:enumeration
value="xs:anyType" />
<!--
Il peut s'agir d'un ID, d'une valeur booléenne, décimale, d'un nombre entier, d'une chaîne,
d'une date, d'une date-heure
-->
</xs:restriction>
</xs:simpleType>
<!-- Types de formats pris en charge -->
<xs:simpleType
name="FieldFormat">
<xs:restriction
base="xs:string">
<xs:enumeration
value="string" />
<xs:enumeration
value="password" />
<xs:enumeration
value="percent" />
<xs:enumeration
value="phone" />
<!--
<xsd:enumeration value="date"/> date
formats???
-->
<xs:enumeration
value="url" />
<xs:enumeration
value="email" />
<xs:enumeration
value="currency" />
</xs:restriction>
</xs:simpleType>
<!--
Les valeurs possibles forment une collection bien définie
-->
<xs:complexType
name="FieldRestriction">
<xs:choice>
<!-- La valeur doit être comprise dans une plage de valeurs -->
<xs:element
name="value-range"
type="tns:ValueRange" />
<!-- La valeur doit être comprise dans un jeu de valeurs -->
<xs:element
name="value-set"
type="tns:ValueSet" />
</xs:choice>
</xs:complexType>
<!-- Les valeurs possibles forment un jeu -->
<xs:complexType
name="ValueSet">
<xs:sequence>
<xs:element
name="entry"
type="tns:ValueSetEntry"
maxOccurs="unbounded" />
</xs:sequence>
<!--
Le jeu de valeurs est-il ouvert ou fermé aux
additions ?
-->
<xs:attribute
name="restricted"
type="xs:boolean"
use="optional"
default="true" />
</xs:complexType>
<xs:complexType
name="ValueSetEntry">
<xs:sequence>
<xs:element
name="label"
type="xs:string"
minOccurs="0" />
<!--
La valeur doit être analysable pour le type de zone spécifié
-->
<xs:element
name="value"
type="xs:string" />
</xs:sequence>
</xs:complexType>
<!--
Les valeurs possibles sont comprises dans une plage définie
-->
<xs:complexType
name="ValueRange">
<xs:sequence>
<!--
Les valeurs minimales et maximales doivent être analysables pour le type de zone
spécifié
-->
<xs:element
name="min"
type="xs:string"
minOccurs="0" />
<xs:element
name="max"
type="xs:string"
minOccurs="0" />
<!--
Par ex., pour le type de zone 'int' où min=0, max = 4
et step=2, les seules valeurs de zone autorisées sont
0, 2 et 4
-->
<xs:element
name="step"
type="xs:string"
minOccurs="0"
default="1" />
</xs:sequence>
</xs:complexType>
<!--
La valeur est une expression régulière ou sa longueur est
restreinte
-->
<xs:complexType
name="ValueRestriction">
<xs:sequence>
<xs:element
ref="tns:length"
minOccurs="0" />
<xs:element
ref="tns:min-length"
minOccurs="0" />
<xs:element
ref="tns:max-length"
minOccurs="0" />
<xs:element
ref="tns:pattern"
minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType
name="ValueAttrib">
<xs:complexContent>
<xs:extension
base="xs:anyType">
<xs:attribute
name="value"
use="required" />
<xs:attribute
name="fixed"
type="xs:boolean"
use="optional"
default="false" />
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType
name="NumAttrib">
<xs:complexContent>
<xs:restriction
base="tns:ValueAttrib">
<xs:attribute
name="value"
type="xs:nonNegativeInteger"
use="required" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<!-- Les valeurs sont conformes à une expression régulière -->
<xs:complexType
name="Pattern">
<xs:complexContent>
<xs:restriction
base="tns:ValueAttrib">
<xs:attribute
name="value"
type="xs:string"
use="required" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:element
name="length"
id="length"
type="tns:NumAttrib" />
<xs:element
name="min-length"
id="minLength"
type="tns:NumAttrib" />
<xs:element
name="max-length"
id="maxLength"
type="tns:NumAttrib" />
<xs:element
name="pattern"
id="pattern"
type="tns:Pattern" />
<!-- ...Descripteurs -->
<!-- ******************** -->
<!--
Le type d'opération autorise la définition d'un emplacement de noeud final
pour chaque opération.
-->
<xs:complexType
name="operationType">
<xs:sequence>
<xs:element
name="endpoint-location"
type="xs:string" />
</xs:sequence>
<xs:attribute
name="name">
<xs:simpleType>
<xs:restriction
base="xs:string">
<xs:enumeration
value="testConnection" />
<xs:enumeration
value="listObjects" />
<xs:enumeration
value="describeObject" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:schema>
ci-connector-api.xsd : avant que vous puissiez accéder à un noeud final,
votre application doit pouvoir communiquer avec le connecteur approprié
via les appels provenant de l'API de connecteur. Ce fichier décrit
les types de requête/réponse pour les API TestConnection, ListObjects et
DescribeObject. Voici le fichier ci-connector-api.xsd :
<xs:schema
id="ci-cdk-api"
version="1.0"
targetNamespace="http://www.approuter.com/schemas/cdk/api/"
xmlns:tns="http://www.approuter.com/schemas/cdk/api/"
xmlns:ccc="http://www.approuter.com/schemas/cdk/config/"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
jaxb:extensionBindingPrefixes="xjc"
jaxb:version="2.0"
elementFormDefault="qualified">
<xs:import
namespace="http://www.approuter.com/schemas/cdk/config/"
schemaLocation="ci-connector-config.xsd" />
<xs:annotation>
<xs:appinfo>
<jaxb:schemaBindings>
<jaxb:package
name="com.approuter.studio.connectors.cdk.api" />
</jaxb:schemaBindings>
</xs:appinfo>
</xs:annotation>
<xs:complexType
name="TestConnection">
<xs:sequence>
<xs:element
name="endpoint"
type="ccc:EndpointForm" />
</xs:sequence>
</xs:complexType>
<xs:complexType
name="TestConnectionResponse">
<xs:sequence>
<xs:element
name="success"
type="xs:boolean" />
<xs:element
name="message"
type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType
name="ListObjects">
<xs:sequence>
<xs:element
name="endpoint"
type="ccc:EndpointForm" />
<xs:element
name="operation"
type="xs:string"
minOccurs="1" />
</xs:sequence>
</xs:complexType>
<xs:complexType
name="ListObjectsResponse">
<xs:sequence>
<xs:element
name="objectType"
type="tns:ObjectType"
minOccurs="1"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType
name="ObjectType">
<xs:simpleContent>
<xs:extension
base="xs:string">
<xs:attribute
name="label"
type="xs:string"
use="optional" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType
name="DescribeObject">
<xs:sequence>
<xs:element
name="endpoint"
type="ccc:EndpointForm"
minOccurs="1" />
<xs:element
name="objectType"
type="xs:string"
minOccurs="1" />
<xs:element
name="operation-name"
type="xs:string" />
</xs:sequence>
</xs:complexType>
<xs:complexType
name="DescribeObjectResponse">
<xs:sequence>
<xs:element
name="object"
type="ccc:ObjectDescriptor" />
<xs:element
name="responseObject"
type="ccc:ObjectDescriptor" />
</xs:sequence>
<!-- Nom de composant local de type dérivé -->
<xs:attribute
name="name"
type="xs:string" />
<xs:attribute
name="description"
type="xs:string" />
<!-- Espace de nom de type dérivé -->
<xs:attribute
name="typeNS"
type="xs:string" />
<!-- Espace de nom de type de base/abstrait -->
<xs:attribute
name="baseTypeNS"
type="xs:string" />
<!-- Nom de composant local de type de base/dérivé -->
<xs:attribute
name="baseType"
type="xs:string" />
</xs:complexType>
</xs:schema>