Files
alfresco-community-repo/source/wsdl/cmisObjectTypes.xsd
David Caruana f51be032bc Merge from SEAMIST3
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@10722 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
2008-09-04 10:44:42 +00:00

241 lines
14 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!--W3C Schema generated by XMLSpy v2006 sp2 U (http://www.altova.com)-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.cmis.org/ns/1.0" targetNamespace="http://www.cmis.org/ns/1.0" elementFormDefault="qualified">
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Common Data Structures -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<xs:simpleType name="objectID">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="ID">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Object Type Structures -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Property definition -->
<xs:complexType name="propertyAttributesType">
<xs:sequence>
<xs:element name="propertyName" type="xs:string"/>
<xs:element name="displayName" type="xs:string"/>
<xs:element name="description" type="xs:string" minOccurs="0"/>
<xs:element name="propertyType" type="xs:string"/>
<xs:element name="cardinality" type="cardinalityEnum"/>
<xs:element name="maximumLength" type="xs:integer"/>
<xs:element name="choice" type="choiceType" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="required" type="xs:boolean"/>
<xs:element name="defaultValue" type="xs:string" minOccurs="0"/>
<!-- the type is actually dependent on the propertyType - XSD doesn't support this type of expression -->
<xs:element name="updatability" type="updatabilityEnum"/>
<xs:element name="queryable" type="xs:boolean"/>
<xs:element name="orderable" type="xs:boolean"/>
</xs:sequence>
</xs:complexType>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Core object definition -->
<xs:simpleType name="cardinalityEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="singleValued"/>
<xs:enumeration value="multiValued"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="updatabilityEnum">
<xs:restriction base="xs:string">
<xs:enumeration value="readOnly"/>
<xs:enumeration value="readWrite"/>
<xs:enumeration value="readWriteWhenCheckedOut"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="choiceType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="index" type="xs:integer" use="required"/>
<xs:attribute name="key" type="xs:string" use="required"/>
</xs:extension>
<!-- the type is actually dependent on the propertyType - XSD doesn't support this type of expression -->
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="objectTypeDefinitionType">
<xs:sequence>
<xs:element name="objectTypeID" type="ID"/>
<xs:element name="objectTypeName" type="xs:string"/>
<xs:element name="displayName" type="xs:string" minOccurs="0"/>
<xs:element name="parentTypeName" type="xs:string" minOccurs="0"/>
<xs:element name="rootTypeName" type="xs:string" minOccurs="0"/>
<!-- TBD - should the two above really be names or should they be IDs? -->
<xs:element name="description" type="xs:string" minOccurs="0"/>
<xs:element name="queryable" type="xs:boolean" minOccurs="0"/>
<xs:element name="versionable" type="xs:boolean" minOccurs="0"/>
<xs:element name="constraints" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
<xs:element name="property" type="propertyAttributesType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Object elements -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Folder elements -->
<xs:element name="parent" type="objectID"/>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Relationship elements -->
<xs:element name="sourceOID" type="objectID"/>
<xs:element name="targetOID" type="objectID"/>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- extended properties -->
<xs:element name="property">
<xs:complexType mixed="true">
<xs:attribute name="name" use="required"/>
<xs:attribute name="index" use="optional"/>
</xs:complexType>
</xs:element>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Object types and collections -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Base Object (abstract) -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Elements in common with folders and documents -->
<xs:element name="name" type="xs:string"/>
<xs:complexType name="objectTypeBase" abstract="true">
<xs:sequence>
<!-- base properties -->
<xs:element name="objectID" type="objectID" minOccurs="0"/>
<xs:element name="uri" type="xs:anyURI" minOccurs="0"/>
<xs:element name="objectTypeID" type="ID" minOccurs="0"/>
<xs:element name="baseObjectType" type="xs:string" minOccurs="0"/>
<!-- TBD - does baseObjectType remain? Is it a string - enumerated type for "document", "folder", "relationship" -->
<xs:element name="createdBy" type="xs:string" minOccurs="0"/>
<xs:element name="creationDate" type="xs:dateTime" minOccurs="0"/>
<xs:element name="lastModifiedBy" type="xs:string" minOccurs="0"/>
<xs:element name="lastModificationDate" type="xs:dateTime" minOccurs="0"/>
<xs:element name="changeToken" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Document Object -->
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<xs:complexType name="documentObjectType">
<xs:complexContent>
<xs:extension base="objectTypeBase">
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0"/>
<xs:element name="isImmutable" type="xs:boolean" minOccurs="0"/>
<xs:element name="isLatestVersion" type="xs:boolean" minOccurs="0"/>
<xs:element name="isMajorVersion" type="xs:boolean" minOccurs="0"/>
<xs:element name="isLatestMajorVersion" type="xs:boolean" minOccurs="0"/>
<xs:element name="versionSeriesIsCheckedOut" type="xs:boolean" minOccurs="0"/>
<xs:element name="versionSeriesCheckedOutBy" type="xs:string" minOccurs="0"/>
<xs:element name="versionSeriesCheckedOutOID" type="objectID" minOccurs="0"/>
<xs:element name="checkinComment" type="xs:string" minOccurs="0"/>
<xs:element name="contentStreamLength" type="xs:integer" minOccurs="0"/>
<xs:element name="contentStreamMimeType" type="xs:string" minOccurs="0"/>
<xs:element name="contentStreamFilename" type="xs:string" minOccurs="0"/>
<xs:element name="contentStreamURI" type="xs:anyURI" minOccurs="0"/>
<!-- extension -->
<xs:element ref="property" minOccurs="0" maxOccurs="unbounded"/>
<!--<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> An alternative for extended properties-->
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Folder Object -->
<xs:element name="children">
<xs:complexType>
<xs:sequence>
<xs:element name="object" type="documentOrFolderObjectType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="folderObjectType">
<xs:complexContent>
<xs:extension base="objectTypeBase">
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0"/>
<xs:element ref="parent" minOccurs="0"/>
<xs:element ref="children" minOccurs="0"/>
<!-- extension -->
<xs:element ref="property" minOccurs="0" maxOccurs="unbounded"/>
<!--<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> An alternative for extended properties-->
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Relationship Object -->
<xs:complexType name="relationshipObjectType">
<xs:complexContent>
<xs:extension base="objectTypeBase">
<xs:sequence>
<xs:element ref="sourceOID" minOccurs="0"/>
<xs:element ref="targetOID" minOccurs="0"/>
<!-- extension -->
<xs:element ref="property" minOccurs="0" maxOccurs="unbounded"/>
<!--<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"/> An alternative for extended properties-->
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Object Type for (Document or Folder) -->
<!-- Defined by extending Document type with parent and children properties -->
<xs:complexType name="documentOrFolderObjectType">
<xs:complexContent>
<xs:extension base="documentObjectType">
<xs:sequence>
<xs:element ref="parent" minOccurs="0"/>
<xs:element ref="children" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Object Type for (Document, Folder or Relationship) -->
<!-- Defined by extending (Document or Folder) type with sourceObjectId and targetObjectId properties -->
<xs:complexType name="documentFolderOrRelationshipObjectType">
<xs:complexContent>
<xs:extension base="documentOrFolderObjectType">
<xs:sequence>
<xs:element ref="sourceOID" minOccurs="0"/>
<xs:element ref="targetOID" minOccurs="0"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Collection of documents and folders - as might be returned from a getChildren invocation -->
<xs:element name="documentAndFolderCollection">
<xs:complexType>
<xs:sequence>
<xs:element name="object" type="documentOrFolderObjectType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Collection of folders -->
<xs:element name="folderCollection">
<xs:complexType>
<xs:sequence>
<xs:element name="object" type="folderObjectType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Collection of documents -->
<xs:element name="documentCollection">
<xs:complexType>
<xs:sequence>
<xs:element name="object" type="documentObjectType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- Collection of relationships -->
<xs:element name="relationshipCollection">
<xs:complexType>
<xs:sequence>
<xs:element name="object" type="relationshipObjectType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>