<?xml version="1.0" encoding="UTF-8"?>
<!--
     Content Management Interoperability Services (CMIS) Version 1.1
     Committee Specification 01
     12 November 2012
     Copyright (c) OASIS Open 2012. All Rights Reserved.
	 Source: http://docs.oasis-open.org/cmis/CMIS/v1.1/cs01/schema/
     -->
<!--
		CMIS 1.1 Core Schema
	-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
	elementFormDefault="qualified" targetNamespace="http://docs.oasis-open.org/ns/cmis/core/200908/"
	xmlns:atom="http://www.w3.org/2005/Atom" xmlns:xhtml="http://www.w3.org/1999/xhtml"
	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.1"
	xmlns:cmis="http://docs.oasis-open.org/ns/cmis/core/200908/" version="1.0">

	<!--  enums -->
	<xs:simpleType name="enumDecimalPrecision">
		<xs:restriction base="xs:integer">
			<xs:enumeration value="32" />
			<xs:enumeration value="64" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="enumContentStreamAllowed">
		<xs:restriction base="xs:string">
			<xs:enumeration value="notallowed" />
			<xs:enumeration value="allowed" />
			<xs:enumeration value="required" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="enumCardinality">
		<xs:restriction base="xs:string">
			<xs:enumeration value="single" />
			<xs:enumeration value="multi" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="enumUpdatability">
		<xs:restriction base="xs:string">
			<xs:enumeration value="readonly" />
			<xs:enumeration value="readwrite" />
			<xs:enumeration value="whencheckedout" />
			<xs:enumeration value="oncreate" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="enumDateTimeResolution">
		<xs:restriction base="xs:string">
			<xs:enumeration value="year" />
			<xs:enumeration value="date" />
			<xs:enumeration value="time" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="enumPropertyType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="boolean" />
			<xs:enumeration value="id" />
			<xs:enumeration value="integer" />
			<xs:enumeration value="datetime" />
			<xs:enumeration value="decimal" />
			<xs:enumeration value="html" />
			<xs:enumeration value="string" />
			<xs:enumeration value="uri" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="enumBaseObjectTypeIds">
		<xs:restriction base="xs:string">
			<xs:enumeration value="cmis:document" />
			<xs:enumeration value="cmis:folder" />
			<xs:enumeration value="cmis:relationship" />
			<xs:enumeration value="cmis:policy" />
			<xs:enumeration value="cmis:item" />
			<xs:enumeration value="cmis:secondary" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="enumCapabilityQuery">
		<xs:restriction base="xs:string">
			<xs:enumeration value="none" />
			<xs:enumeration value="metadataonly" />
			<xs:enumeration value="fulltextonly" />
			<xs:enumeration value="bothseparate" />
			<xs:enumeration value="bothcombined" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="enumCapabilityJoin">
		<xs:restriction base="xs:string">
			<xs:enumeration value="none" />
			<xs:enumeration value="inneronly" />
			<xs:enumeration value="innerandouter" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="enumCapabilityContentStreamUpdates">
		<xs:restriction base="xs:string">
			<xs:enumeration value="anytime" />
			<xs:enumeration value="pwconly" />
			<xs:enumeration value="none" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="enumVersioningState">
		<xs:restriction base="xs:string">
			<xs:enumeration value="none" />
			<xs:enumeration value="checkedout" />
			<xs:enumeration value="minor" />
			<xs:enumeration value="major" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="enumUnfileObject">
		<xs:restriction base="xs:string">
			<xs:enumeration value="unfile" />
			<xs:enumeration value="deletesinglefiled" />
			<xs:enumeration value="delete" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="enumRelationshipDirection">
		<xs:restriction base="xs:string">
			<xs:enumeration value="source" />
			<xs:enumeration value="target" />
			<xs:enumeration value="either" />
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="enumIncludeRelationships">
		<xs:restriction base="xs:string">
			<xs:enumeration value="none" />
			<xs:enumeration value="source" />
			<xs:enumeration value="target" />
			<xs:enumeration value="both" />
		</xs:restriction>
	</xs:simpleType>

	<!--  properties in CMIS -->
	<xs:simpleType name="enumPropertiesBase">
		<xs:restriction base="xs:string">
			<xs:enumeration value="cmis:name" />
			<xs:enumeration value="cmis:description" />
			<xs:enumeration value="cmis:objectId" />
			<xs:enumeration value="cmis:objectTypeId" />
			<xs:enumeration value="cmis:baseTypeId" />
			<xs:enumeration value="cmis:secondaryObjectTypeIds" />
			<xs:enumeration value="cmis:createdBy" />
			<xs:enumeration value="cmis:creationDate" />
			<xs:enumeration value="cmis:lastModifiedBy" />
			<xs:enumeration value="cmis:lastModificationDate" />
			<xs:enumeration value="cmis:changeToken" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="enumPropertiesDocument">
		<xs:restriction base="xs:string">
			<xs:enumeration value="cmis:isImmutable" />
			<xs:enumeration value="cmis:isLatestVersion" />
			<xs:enumeration value="cmis:isMajorVersion" />
			<xs:enumeration value="cmis:isLatestMajorVersion" />
			<xs:enumeration value="cmis:isPrivateWorkingCopy" />			
			<xs:enumeration value="cmis:versionLabel" />
			<xs:enumeration value="cmis:versionSeriesId" />
			<xs:enumeration value="cmis:isVersionSeriesCheckedOut" />
			<xs:enumeration value="cmis:versionSeriesCheckedOutBy" />
			<xs:enumeration value="cmis:versionSeriesCheckedOutId" />
			<xs:enumeration value="cmis:checkinComment" />
			<xs:enumeration value="cmis:contentStreamLength" />
			<xs:enumeration value="cmis:contentStreamMimeType" />
			<xs:enumeration value="cmis:contentStreamFileName" />
			<xs:enumeration value="cmis:contentStreamId" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="enumPropertiesFolder">
		<xs:restriction base="xs:string">
			<xs:enumeration value="cmis:parentId" />
			<xs:enumeration value="cmis:allowedChildObjectTypeIds" />
			<xs:enumeration value="cmis:path" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="enumPropertiesRelationship">
		<xs:restriction base="xs:string">
			<xs:enumeration value="cmis:sourceId" />
			<xs:enumeration value="cmis:targetId" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="enumPropertiesPolicy">
		<xs:restriction base="xs:string">
			<xs:enumeration value="cmis:policyText" />
		</xs:restriction>
	</xs:simpleType>

	<xs:attributeGroup name="cmisUndefinedAttribute">
		<xs:anyAttribute namespace="##other" processContents="lax" />
	</xs:attributeGroup>

	<!--  main cmis object -->
	<xs:complexType name="cmisObjectType">
		<xs:sequence>
			<xs:element name="properties" type="cmis:cmisPropertiesType"
				minOccurs="0" maxOccurs="1" />

			<xs:element name="allowableActions" type="cmis:cmisAllowableActionsType"
				minOccurs="0" maxOccurs="1" />

			<xs:element name="relationship" type="cmis:cmisObjectType"
				minOccurs="0" maxOccurs="unbounded" />

			<!--  if change log -->
			<xs:element name="changeEventInfo" type="cmis:cmisChangeEventType"
				minOccurs="0" maxOccurs="1" />

			<!--  ACL -->
			<xs:element name="acl" type="cmis:cmisAccessControlListType"
				minOccurs="0" maxOccurs="1" />

			<xs:element name="exactACL" type="xs:boolean" minOccurs="0"
				maxOccurs="1" />

			<!-- Applied Policy IDs -->
			<xs:element name="policyIds" type="cmis:cmisListOfIdsType"
				minOccurs="0" maxOccurs="1" />

			<!--  Rendition -->
			<xs:element name="rendition" type="cmis:cmisRenditionType"
				minOccurs="0" maxOccurs="unbounded" />

			<!--  extensions -->
			<xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"
				namespace="##other" />
		</xs:sequence>
		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
	</xs:complexType>


	<!-- property bag -->

	<xs:complexType name="cmisPropertiesType">
		<xs:sequence>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:appinfo>
						<jaxb:property name="property" />
					</xs:appinfo>
				</xs:annotation>
				<xs:element name="propertyBoolean" type="cmis:cmisPropertyBoolean"
					nillable="true" />
				<xs:element name="propertyId" type="cmis:cmisPropertyId"
					nillable="true" />
				<xs:element name="propertyInteger" type="cmis:cmisPropertyInteger"
					nillable="true" />
				<xs:element name="propertyDateTime" type="cmis:cmisPropertyDateTime"
					nillable="true" />
				<xs:element name="propertyDecimal" type="cmis:cmisPropertyDecimal"
					nillable="true" />
				<xs:element name="propertyHtml" type="cmis:cmisPropertyHtml"
					nillable="true" />
				<xs:element name="propertyString" type="cmis:cmisPropertyString"
					nillable="true" />
				<xs:element name="propertyUri" type="cmis:cmisPropertyUri"
					nillable="true" />
			</xs:choice>
			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
				processContents="lax" />
		</xs:sequence>
		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
	</xs:complexType>


	<!-- start the prop definitions -->
	<xs:complexType name="cmisProperty">
		<xs:attribute name="propertyDefinitionId" type="xs:string" use="optional">
			<xs:annotation>
				<xs:documentation>
					This is the property definition id for this
					property instance. This is not required to be set when used
					as a default value. This is required to be set when used for 
					query result set or returning properties on an object.
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="localName" type="xs:string" use="optional">
			<xs:annotation>
				<xs:documentation>
					This is the localname as defined by the property
					definition.
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="displayName" type="xs:string" use="optional">
			<xs:annotation>
				<xs:documentation>
					This is the displayname as defined by the property
					definition.
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attribute name="queryName" type="xs:string" use="optional">
			<xs:annotation>
				<xs:documentation>
					This is the queryName. This must be specified if
					this is the result of a query. If aliases are used, the alias is to
					be specified here instead of the queryName.
				</xs:documentation>
			</xs:annotation>
		</xs:attribute>
		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
	</xs:complexType>
	
	<xs:complexType name="cmisPropertyBoolean">
		<xs:complexContent>
			<xs:extension base="cmis:cmisProperty">
				<xs:sequence>
					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
						type="xs:boolean" />
					<xs:any processContents="lax" namespace="##other" minOccurs="0"
						maxOccurs="unbounded" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	
	<xs:complexType name="cmisPropertyId">
		<xs:complexContent>
			<xs:extension base="cmis:cmisProperty">
				<xs:sequence>
					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
						type="xs:string" />
					<xs:any processContents="lax" namespace="##other" minOccurs="0"
						maxOccurs="unbounded" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	
	<xs:complexType name="cmisPropertyInteger">
		<xs:complexContent>
			<xs:extension base="cmis:cmisProperty">
				<xs:sequence>
					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
						type="xs:integer" />
					<xs:any processContents="lax" namespace="##other" minOccurs="0"
						maxOccurs="unbounded" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	
	<xs:complexType name="cmisPropertyDateTime">
		<xs:complexContent>
			<xs:extension base="cmis:cmisProperty">
				<xs:sequence>
					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
						type="xs:dateTime" />
					<xs:any processContents="lax" namespace="##other" minOccurs="0"
						maxOccurs="unbounded" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	
	<xs:complexType name="cmisPropertyDecimal">
		<xs:complexContent>
			<xs:extension base="cmis:cmisProperty">
				<xs:sequence>
					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
						type="xs:decimal" />
					<xs:any processContents="lax" namespace="##other" minOccurs="0"
						maxOccurs="unbounded" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	
	<xs:complexType name="cmisPropertyHtml">
		<xs:complexContent>
			<xs:extension base="cmis:cmisProperty">
				<xs:sequence>
					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
						type="xs:string" />
					<xs:any processContents="lax" namespace="##other" minOccurs="0"
						maxOccurs="unbounded" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="cmisPropertyString">
		<xs:complexContent>
			<xs:extension base="cmis:cmisProperty">
				<xs:sequence>
					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
						type="xs:string" />
					<xs:any processContents="lax" namespace="##other" minOccurs="0"
						maxOccurs="unbounded" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	
	<xs:complexType name="cmisPropertyUri">
		<xs:complexContent>
			<xs:extension base="cmis:cmisProperty">
				<xs:sequence>
					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
						type="xs:anyURI" />
					<xs:any processContents="lax" namespace="##other" minOccurs="0"
						maxOccurs="unbounded" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>


	<!-- cmis choice -->
	<xs:complexType name="cmisChoice">
		<xs:attribute name="displayName" type="xs:string" use="required" />
		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
	</xs:complexType>
	<xs:complexType name="cmisChoiceBoolean">
		<xs:complexContent>
			<xs:extension base="cmis:cmisChoice">
				<xs:sequence>
					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
						type="xs:boolean" />
					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
						type="cmis:cmisChoiceBoolean" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="cmisChoiceId">
		<xs:complexContent>
			<xs:extension base="cmis:cmisChoice">
				<xs:sequence>
					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
						type="xs:string" />
					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
						type="cmis:cmisChoiceId" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="cmisChoiceInteger">
		<xs:complexContent>
			<xs:extension base="cmis:cmisChoice">
				<xs:sequence>
					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
						type="xs:integer" />
					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
						type="cmis:cmisChoiceInteger" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="cmisChoiceDateTime">
		<xs:complexContent>
			<xs:extension base="cmis:cmisChoice">
				<xs:sequence>
					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
						type="xs:dateTime" />
					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
						type="cmis:cmisChoiceDateTime" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="cmisChoiceDecimal">
		<xs:complexContent>
			<xs:extension base="cmis:cmisChoice">
				<xs:sequence>
					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
						type="xs:decimal" />
					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
						type="cmis:cmisChoiceDecimal" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="cmisChoiceHtml">
		<xs:complexContent>
			<xs:extension base="cmis:cmisChoice">
				<xs:sequence>
					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
						type="xs:string" />
					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
						type="cmis:cmisChoiceHtml" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="cmisChoiceString">
		<xs:complexContent>
			<xs:extension base="cmis:cmisChoice">
				<xs:sequence>
					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
						type="xs:string" />
					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
						type="cmis:cmisChoiceString" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="cmisChoiceUri">
		<xs:complexContent>
			<xs:extension base="cmis:cmisChoice">
				<xs:sequence>
					<xs:element minOccurs="0" maxOccurs="unbounded" name="value"
						type="xs:anyURI" />
					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
						type="cmis:cmisChoiceUri" />
				</xs:sequence>

			</xs:extension>
		</xs:complexContent>
	</xs:complexType>


	<!--  allowable actions -->
	<xs:complexType name="cmisAllowableActionsType">
		<xs:sequence>
			<xs:element name="canDeleteObject" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="canUpdateProperties" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="canGetFolderTree" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="canGetProperties" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="canGetObjectRelationships" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="canGetObjectParents" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="canGetFolderParent" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="canGetDescendants" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="canMoveObject" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="canDeleteContentStream" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="canCheckOut" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="canCancelCheckOut" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="canCheckIn" type="xs:boolean" minOccurs="0"
				maxOccurs="1" />
			<xs:element name="canSetContentStream" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="canGetAllVersions" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="canAddObjectToFolder" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="canRemoveObjectFromFolder" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="canGetContentStream" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="canApplyPolicy" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="canGetAppliedPolicies" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="canRemovePolicy" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="canGetChildren" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="canCreateDocument" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="canCreateFolder" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="canCreateRelationship" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="canCreateItem" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="canDeleteTree" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />

			<!-- renditions -->
			<xs:element name="canGetRenditions" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />

			<!-- ACL -->
			<xs:element name="canGetACL" type="xs:boolean" minOccurs="0"
				maxOccurs="1" />
			<xs:element name="canApplyACL" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />

			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
				processContents="lax" />
		</xs:sequence>
		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
	</xs:complexType>


	<xs:complexType name="cmisListOfIdsType">
		<xs:sequence>
			<xs:element name="id" type="xs:string" minOccurs="1"
				maxOccurs="unbounded" />

			<!--  extension -->
			<xs:any processContents="lax" namespace="##other" minOccurs="0"
				maxOccurs="unbounded" />
		</xs:sequence>
		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
	</xs:complexType>

	<!-- bulkUpdateProperties -->
	<xs:complexType name="cmisObjectIdAndChangeTokenType">
		<xs:sequence>
			<xs:element name="id" type="xs:string" minOccurs="1"
				maxOccurs="1" />
			<xs:element name="newId" type="xs:string" minOccurs="0"
				maxOccurs="1" />
			<xs:element name="changeToken" type="xs:string" minOccurs="0"
				maxOccurs="1" />

			<xs:any processContents="lax" namespace="##other" minOccurs="0"
				maxOccurs="unbounded" />
		</xs:sequence>
		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
	</xs:complexType>

	<xs:complexType name="cmisBulkUpdateType">
		<xs:sequence>
			<xs:element name="objectIdAndChangeToken" type="cmis:cmisObjectIdAndChangeTokenType"
				minOccurs="1" maxOccurs="unbounded" />
			<xs:element name="properties" type="cmis:cmisPropertiesType"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="addSecondaryTypeIds" type="xs:string"
				minOccurs="0" maxOccurs="unbounded" />
			<xs:element name="removeSecondaryTypeIds" type="xs:string"
				minOccurs="0" maxOccurs="unbounded" />
				
			<!--  extension -->
			<xs:any processContents="lax" namespace="##other" minOccurs="0"
				maxOccurs="unbounded" />
		</xs:sequence>
		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
	</xs:complexType>


	<!-- Property Attributes -->
	<xs:complexType name="cmisPropertyDefinitionType">
		<xs:sequence>
			<xs:element name="id" type="xs:string" minOccurs="1"
				maxOccurs="1" />
			<xs:element name="localName" type="xs:string" minOccurs="1"
				maxOccurs="1" />
			<xs:element name="localNamespace" type="xs:anyURI"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="displayName" type="xs:string" minOccurs="0"
				maxOccurs="1" />
			<xs:element name="queryName" type="xs:string" minOccurs="0"
				maxOccurs="1" />
			<xs:element name="description" type="xs:string" minOccurs="0"
				maxOccurs="1" />
			<xs:element name="propertyType" type="cmis:enumPropertyType"
				minOccurs="1" maxOccurs="1" />
			<xs:element name="cardinality" type="cmis:enumCardinality"
				minOccurs="1" maxOccurs="1" />
			<xs:element name="updatability" type="cmis:enumUpdatability"
				minOccurs="1" maxOccurs="1" />

			<!-- flags -->
			<xs:element name="inherited" type="xs:boolean" minOccurs="0"
				maxOccurs="1" />
			<xs:element name="required" type="xs:boolean" minOccurs="1"
				maxOccurs="1" />
			<xs:element name="queryable" type="xs:boolean" minOccurs="1"
				maxOccurs="1" />
			<xs:element name="orderable" type="xs:boolean" minOccurs="1"
				maxOccurs="1" />

			<xs:element name="openChoice" type="xs:boolean" minOccurs="0"
				maxOccurs="1" />

			<!--  extension -->
			<xs:any processContents="lax" namespace="##other" minOccurs="0"
				maxOccurs="unbounded" />
		</xs:sequence>
		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
	</xs:complexType>

	<!--  type specific definitions -->
	<xs:complexType name="cmisPropertyBooleanDefinitionType">
		<xs:complexContent>
			<xs:extension base="cmis:cmisPropertyDefinitionType">
				<xs:sequence>
					<xs:element minOccurs="0" maxOccurs="1" name="defaultValue"
						type="cmis:cmisPropertyBoolean" />
					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
						type="cmis:cmisChoiceBoolean" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="cmisPropertyIdDefinitionType">
		<xs:complexContent>
			<xs:extension base="cmis:cmisPropertyDefinitionType">
				<xs:sequence>
					<xs:element minOccurs="0" maxOccurs="1" name="defaultValue"
						type="cmis:cmisPropertyId" />
					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
						type="cmis:cmisChoiceId" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="cmisPropertyIntegerDefinitionType">
		<xs:complexContent>
			<xs:extension base="cmis:cmisPropertyDefinitionType">
				<xs:sequence>
					<xs:element minOccurs="0" maxOccurs="1" name="defaultValue"
						type="cmis:cmisPropertyInteger" />
					<xs:element name="maxValue" type="xs:integer" minOccurs="0"
						maxOccurs="1" />
					<xs:element name="minValue" type="xs:integer" minOccurs="0"
						maxOccurs="1" />
					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
						type="cmis:cmisChoiceInteger" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="cmisPropertyDateTimeDefinitionType">
		<xs:complexContent>
			<xs:extension base="cmis:cmisPropertyDefinitionType">
				<xs:sequence>
					<xs:element minOccurs="0" maxOccurs="1" name="defaultValue"
						type="cmis:cmisPropertyDateTime" />
					<xs:element minOccurs="0" maxOccurs="1" name="resolution"
						type="cmis:enumDateTimeResolution" />
					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
						type="cmis:cmisChoiceDateTime" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="cmisPropertyDecimalDefinitionType">
		<xs:complexContent>
			<xs:extension base="cmis:cmisPropertyDefinitionType">
				<xs:sequence>
					<xs:element minOccurs="0" maxOccurs="1" name="defaultValue"
						type="cmis:cmisPropertyDecimal" />
					<xs:element name="maxValue" type="xs:decimal" minOccurs="0"
						maxOccurs="1" />
					<xs:element name="minValue" type="xs:decimal" minOccurs="0"
						maxOccurs="1" />
					<xs:element name="precision" type="cmis:enumDecimalPrecision"
						minOccurs="0" maxOccurs="1" />
					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
						type="cmis:cmisChoiceDecimal" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="cmisPropertyHtmlDefinitionType">
		<xs:complexContent>
			<xs:extension base="cmis:cmisPropertyDefinitionType">
				<xs:sequence>
					<xs:element minOccurs="0" maxOccurs="1" name="defaultValue"
						type="cmis:cmisPropertyHtml" />
					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
						type="cmis:cmisChoiceHtml" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="cmisPropertyStringDefinitionType">
		<xs:complexContent>
			<xs:extension base="cmis:cmisPropertyDefinitionType">
				<xs:sequence>
					<xs:element minOccurs="0" maxOccurs="1" name="defaultValue"
						type="cmis:cmisPropertyString" />
					<xs:element name="maxLength" type="xs:integer"
						minOccurs="0" maxOccurs="1" />
					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
						type="cmis:cmisChoiceString" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="cmisPropertyUriDefinitionType">
		<xs:complexContent>
			<xs:extension base="cmis:cmisPropertyDefinitionType">
				<xs:sequence>
					<xs:element minOccurs="0" maxOccurs="1" name="defaultValue"
						type="cmis:cmisPropertyUri" />
					<xs:element minOccurs="0" maxOccurs="unbounded" name="choice"
						type="cmis:cmisChoiceUri" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>


	<!-- type definition -->
	<xs:complexType name="cmisTypeDefinitionType">
		<xs:sequence>
			<!--  primary identifying attribute -->
			<xs:element name="id" type="xs:string" minOccurs="1"
				maxOccurs="1" />
			<xs:element name="localName" type="xs:string" minOccurs="1"
				maxOccurs="1" />
			<xs:element name="localNamespace" type="xs:anyURI"
				minOccurs="1" maxOccurs="1" nillable="true" />
			<xs:element name="displayName" type="xs:string" minOccurs="0"
				maxOccurs="1" />
			<xs:element name="queryName" type="xs:string" minOccurs="0"
				maxOccurs="1" />
			<xs:element name="description" type="xs:string" minOccurs="0"
				maxOccurs="1" />

			<!--  base type -->
			<xs:element name="baseId" type="cmis:enumBaseObjectTypeIds"
				minOccurs="1" maxOccurs="1" />

			<!-- parent -->
			<xs:element name="parentId" type="xs:string" minOccurs="0"
				maxOccurs="1">
				<xs:annotation>
					<xs:documentation>
						This is the id for the parent type definition.
						If this is a base type, this is MUST NOT be present.
					</xs:documentation>
				</xs:annotation>
			</xs:element>

			<!-- flags -->
			<xs:element name="creatable" type="xs:boolean" minOccurs="1"
				maxOccurs="1" />
			<xs:element name="fileable" type="xs:boolean" minOccurs="1"
				maxOccurs="1" />
			<xs:element name="queryable" type="xs:boolean" minOccurs="1"
				maxOccurs="1" />
			<xs:element name="fulltextIndexed" type="xs:boolean"
				minOccurs="1" maxOccurs="1" />
			<xs:element name="includedInSupertypeQuery" type="xs:boolean"
				minOccurs="1" maxOccurs="1" default="true" />

			<!-- controllable -->
			<xs:element name="controllablePolicy" type="xs:boolean"
				minOccurs="1" maxOccurs="1" />
			<xs:element name="controllableACL" type="xs:boolean"
				minOccurs="1" maxOccurs="1" />
				
			<!-- type mutability-->
			<xs:element name="typeMutability" type="cmis:cmisTypeMutabilityCapabilitiesType"
				minOccurs="0" maxOccurs="1" />

			<!-- property definitions -->
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:annotation>
					<xs:appinfo>
						<jaxb:property name="propertyDefinition" />
					</xs:appinfo>
				</xs:annotation>
				<xs:element name="propertyBooleanDefinition" type="cmis:cmisPropertyBooleanDefinitionType" />
				<xs:element name="propertyDateTimeDefinition" type="cmis:cmisPropertyDateTimeDefinitionType" />
				<xs:element name="propertyDecimalDefinition" type="cmis:cmisPropertyDecimalDefinitionType" />
				<xs:element name="propertyIdDefinition" type="cmis:cmisPropertyIdDefinitionType" />
				<xs:element name="propertyIntegerDefinition" type="cmis:cmisPropertyIntegerDefinitionType" />
				<xs:element name="propertyHtmlDefinition" type="cmis:cmisPropertyHtmlDefinitionType" />
				<xs:element name="propertyStringDefinition" type="cmis:cmisPropertyStringDefinitionType" />
				<xs:element name="propertyUriDefinition" type="cmis:cmisPropertyUriDefinitionType" />
			</xs:choice>

			<!-- extension -->
			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
				processContents="lax" />
		</xs:sequence>
		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
	</xs:complexType>


	<!-- type specific typedefs -->
	<xs:complexType name="cmisTypeDocumentDefinitionType">
		<xs:complexContent>
			<xs:extension base="cmis:cmisTypeDefinitionType">
				<xs:sequence>
					<xs:element name="versionable" type="xs:boolean"
						minOccurs="1" maxOccurs="1" />
					<xs:element name="contentStreamAllowed" type="cmis:enumContentStreamAllowed"
						minOccurs="1" maxOccurs="1" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="cmisTypeFolderDefinitionType">
		<xs:complexContent>
			<xs:extension base="cmis:cmisTypeDefinitionType">
				<xs:sequence>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="cmisTypeRelationshipDefinitionType">
		<xs:complexContent>
			<xs:extension base="cmis:cmisTypeDefinitionType">
				<xs:sequence>
					<xs:element name="allowedSourceTypes" type="xs:string"
						minOccurs="0" maxOccurs="unbounded" />
					<xs:element name="allowedTargetTypes" type="xs:string"
						minOccurs="0" maxOccurs="unbounded" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="cmisTypePolicyDefinitionType">
		<xs:complexContent>
			<xs:extension base="cmis:cmisTypeDefinitionType">
				<xs:sequence>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="cmisTypeItemDefinitionType">
		<xs:complexContent>
			<xs:extension base="cmis:cmisTypeDefinitionType">
				<xs:sequence>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="cmisTypeSecondaryDefinitionType">
		<xs:complexContent>
			<xs:extension base="cmis:cmisTypeDefinitionType">
				<xs:sequence>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>	

	<!--  query -->
	<xs:complexType name="cmisQueryType">
		<xs:sequence>
			<xs:element name="statement" type="xs:string" minOccurs="1"
				maxOccurs="1" />
			<xs:element name="searchAllVersions" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />

			<xs:element name="includeAllowableActions" type="xs:boolean"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="includeRelationships" type="cmis:enumIncludeRelationships"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="renditionFilter" type="xs:string"
				minOccurs="0" maxOccurs="1" />

			<xs:element name="maxItems" type="xs:integer" minOccurs="0"
				maxOccurs="1" />
			<xs:element name="skipCount" type="xs:integer" minOccurs="0"
				maxOccurs="1" />

			<xs:any maxOccurs="unbounded" minOccurs="0" namespace="##other"
				processContents="lax" />
		</xs:sequence>
		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
	</xs:complexType>



	<!--  repository info -->
	<xs:complexType name="cmisRepositoryInfoType">
		<xs:sequence minOccurs="1">
			<xs:element name="repositoryId" type="xs:string"
				minOccurs="1" maxOccurs="1" />
			<xs:element name="repositoryName" type="xs:string"
				minOccurs="1" maxOccurs="1" />
			<xs:element name="repositoryDescription" type="xs:string"
				minOccurs="1" maxOccurs="1" />
			<xs:element name="vendorName" type="xs:string" minOccurs="1"
				maxOccurs="1" />
			<xs:element name="productName" type="xs:string" minOccurs="1"
				maxOccurs="1" />
			<xs:element name="productVersion" type="xs:string"
				minOccurs="1" maxOccurs="1" />
			<xs:element name="rootFolderId" type="xs:string" minOccurs="1"
				maxOccurs="1"/>
			<xs:element name="latestChangeLogToken" type="xs:string"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="capabilities" type="cmis:cmisRepositoryCapabilitiesType"
				minOccurs="1" maxOccurs="1" />
			<xs:element name="aclCapability" type="cmis:cmisACLCapabilityType"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="cmisVersionSupported" type="xs:string"
				minOccurs="1" maxOccurs="1" />
			<xs:element name="thinClientURI" type="xs:anyURI"
				minOccurs="0" maxOccurs="1" />
			<xs:element name="changesIncomplete" type="xs:boolean"
				maxOccurs="1" minOccurs="0" />
			<xs:element name="changesOnType" type="cmis:enumBaseObjectTypeIds"
				minOccurs="0" maxOccurs="unbounded" />

			<xs:element name="principalAnonymous" type="xs:string"
				minOccurs="0" maxOccurs="1">
				<xs:annotation>
					<xs:documentation>
						If set, this field holds the principal who is
						used for anonymous access. This principal can then be 
						passed to the ACL services to specify what permissions
						anonymous users should have.
					</xs:documentation>
				</xs:annotation>
			</xs:element>

			<xs:element name="principalAnyone" type="xs:string"
				minOccurs="0" maxOccurs="1">
				<xs:annotation>
					<xs:documentation>
						If set, this field holds the principal who is
						used for everyone's access. This principal can then be 
						passed to the ACL services to specify what permissions
						everyone should have.
					</xs:documentation>
				</xs:annotation>
			</xs:element>

			<xs:element name="extendedFeatures"
				type="cmis:cmisExtensionFeatureType" maxOccurs="unbounded" minOccurs="0">
			</xs:element>

			<xs:any namespace="##other" processContents="lax" minOccurs="0"
				maxOccurs="unbounded" />
		</xs:sequence>
		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
	</xs:complexType>

	<xs:complexType name="cmisRepositoryCapabilitiesType">
		<xs:sequence>
			<xs:element name="capabilityACL" type="cmis:enumCapabilityACL"
				maxOccurs="1" minOccurs="1" />
			<xs:element name="capabilityAllVersionsSearchable" type="xs:boolean"
				minOccurs="1" maxOccurs="1" />
			<xs:element name="capabilityChanges" type="cmis:enumCapabilityChanges" />

			<xs:element name="capabilityContentStreamUpdatability"
				type="cmis:enumCapabilityContentStreamUpdates" minOccurs="1"
				maxOccurs="1" />
			<xs:element name="capabilityGetDescendants" type="xs:boolean"
				maxOccurs="1" minOccurs="1" />
			<xs:element name="capabilityGetFolderTree" type="xs:boolean"
				maxOccurs="1" minOccurs="1" />
			<xs:element name="capabilityOrderBy" type="cmis:enumCapabilityOrderBy"
				maxOccurs="1" minOccurs="1" />

			<xs:element name="capabilityMultifiling" type="xs:boolean"
				minOccurs="1" maxOccurs="1" />
			<xs:element name="capabilityPWCSearchable" type="xs:boolean"
				minOccurs="1" maxOccurs="1" />
			<xs:element name="capabilityPWCUpdatable" type="xs:boolean"
				minOccurs="1" maxOccurs="1" />
			<xs:element name="capabilityQuery" type="cmis:enumCapabilityQuery"
				minOccurs="1" maxOccurs="1" />
			<xs:element name="capabilityRenditions" type="cmis:enumCapabilityRendition"
				minOccurs="1" maxOccurs="1" />
			<xs:element name="capabilityUnfiling" type="xs:boolean"
				minOccurs="1" maxOccurs="1" />
			<xs:element name="capabilityVersionSpecificFiling" type="xs:boolean"
				minOccurs="1" maxOccurs="1" />
			<xs:element name="capabilityJoin" type="cmis:enumCapabilityJoin"
				minOccurs="1" maxOccurs="1" />

			<xs:element name="capabilityCreatablePropertyTypes"
				type="cmis:cmisCreatablePropertyTypesType" maxOccurs="1" minOccurs="0">
			</xs:element>
			<xs:element name="capabilityNewTypeSettableAttributes"
				type="cmis:cmisNewTypeSettableAttributes" maxOccurs="1" minOccurs="0">
			</xs:element>

			<!-- extension -->
			<xs:any namespace="##other" processContents="skip" minOccurs="0"
				maxOccurs="unbounded" />
		</xs:sequence>
		<xs:attributeGroup ref="cmis:cmisUndefinedAttribute" />
	</xs:complexType>

	<!-- Unified Search -->
	<xs:simpleType name="enumTypeOfChanges">
		<xs:restriction base="xs:string">
			<!-- content with a new ID has been created -->
			<xs:enumeration value="created" />
			<!-- content with an existing ID has been modified -->
			<xs:enumeration value="updated" />
			<!-- content with an existing ID has been deleted -->
			<xs:enumeration value="deleted" />
			<!-- content with an existing ID has had its security policy changed-->
			<xs:enumeration value="security" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="enumCapabilityChanges">
		<xs:restriction base="xs:string">
			<xs:enumeration value="none" />
			<xs:enumeration value="objectidsonly" />
			<xs:enumeration value="properties" />
			<xs:enumeration value="all" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="enumCapabilityOrderBy">
		<xs:restriction base="xs:string">
			<xs:enumeration value="none" />
			<xs:enumeration value="common" />
			<xs:enumeration value="custom" />
		</xs:restriction>
	</xs:simpleType>

	<xs:complexType name="cmisChangeEventType">
		<xs:sequence>
			<xs:element name="changeType" type="cmis:enumTypeOfChanges" />
			<xs:element name="changeTime" type="xs:dateTime" />

			<!--  extension -->
			<xs:any processContents="lax" namespace="##other" minOccurs="0"
				maxOccurs="unbounded" />
		</xs:sequence>
	</xs:complexType>

	<!-- ACL -->
	<xs:simpleType name="enumACLPropagation">
		<xs:restriction base="xs:string">
			<xs:enumeration value="repositorydetermined" />
			<xs:enumeration value="objectonly" />
			<xs:enumeration value="propagate" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="enumCapabilityACL">
		<xs:restriction base="xs:string">
			<xs:enumeration value="none" />
			<xs:enumeration value="discover" />
			<xs:enumeration value="manage" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="enumBasicPermissions">
		<xs:restriction base="xs:string">
			<xs:enumeration value="cmis:read" />
			<xs:enumeration value="cmis:write" />
			<xs:enumeration value="cmis:all" />
		</xs:restriction>
	</xs:simpleType>

	<xs:complexType name="cmisPermissionDefinition">
		<xs:sequence>
			<xs:element name="permission" type="xs:string" />
			<xs:element name="description" type="xs:string" minOccurs="0"
				maxOccurs="1" />
			<xs:any namespace="##other" minOccurs="0" processContents="lax"
				maxOccurs="unbounded" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="cmisPermissionMapping">
		<xs:sequence>
			<xs:element name="key" type="cmis:enumAllowableActionsKey"
				minOccurs="1" maxOccurs="1" />
			<xs:element name="permission" type="xs:string" minOccurs="1"
				maxOccurs="unbounded">
				<xs:annotation>
					<xs:documentation>
						Multiple entries are OR'ed together. Any
						permission that specified is sufficient to 
						provide rights required in key
					</xs:documentation>
				</xs:annotation>
			</xs:element>
			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
				processContents="lax" />
		</xs:sequence>
	</xs:complexType>


	<xs:simpleType name="enumAllowableActionsKey">
		<xs:restriction base="xs:string">
			<xs:enumeration value="canGetDescendents.Folder" />
			<xs:enumeration value="canGetChildren.Folder" />
			<xs:enumeration value="canGetParents.Folder" />
			<xs:enumeration value="canGetFolderParent.Object" />
			<xs:enumeration value="canCreateDocument.Folder" />
			<xs:enumeration value="canCreateFolder.Folder" />
			<xs:enumeration value="canCreateRelationship.Source" />
			<xs:enumeration value="canCreateRelationship.Target" />
			<xs:enumeration value="canGetProperties.Object" />
			<xs:enumeration value="canViewContent.Object" />
			<xs:enumeration value="canUpdateProperties.Object" />
			<xs:enumeration value="canMove.Object" />
			<xs:enumeration value="canMove.Target" />
			<xs:enumeration value="canMove.Source" />
			<xs:enumeration value="canDelete.Object" />
			<xs:enumeration value="canDeleteTree.Folder" />
			<xs:enumeration value="canSetContent.Document" />
			<xs:enumeration value="canDeleteContent.Document" />
			<xs:enumeration value="canAddToFolder.Object" />
			<xs:enumeration value="canAddToFolder.Folder" />
			<xs:enumeration value="canRemoveFromFolder.Object" />
			<xs:enumeration value="canRemoveFromFolder.Folder" />
			<xs:enumeration value="canCheckout.Document" />
			<xs:enumeration value="canCancelCheckout.Document" />
			<xs:enumeration value="canCheckin.Document" />
			<xs:enumeration value="canGetAllVersions.VersionSeries" />
			<xs:enumeration value="canGetObjectRelationships.Object" />
			<xs:enumeration value="canAddPolicy.Object" />
			<xs:enumeration value="canAddPolicy.Policy" />
			<xs:enumeration value="canRemovePolicy.Object" />
			<xs:enumeration value="canRemovePolicy.Policy" />
			<xs:enumeration value="canGetAppliedPolicies.Object" />
			<xs:enumeration value="canGetACL.Object" />
			<xs:enumeration value="canApplyACL.Object" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="enumUsers">
		<xs:restriction base="xs:string">
			<xs:enumeration value="cmis:user">
				<xs:annotation>
					<xs:documentation>
						This user can be used on setting ACLs to specify
						the permission this
						user context should have.
			</xs:documentation>
				</xs:annotation>
			</xs:enumeration>
		</xs:restriction>
	</xs:simpleType>

	<!-- ACL on objects -->
	<xs:complexType name="cmisAccessControlPrincipalType">
		<xs:sequence>
			<xs:element name="principalId" type="xs:string" />

			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
				processContents="lax" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="cmisAccessControlEntryType">
		<xs:sequence>
			<xs:element name="principal" type="cmis:cmisAccessControlPrincipalType" />
			<xs:element name="permission" type="xs:string" minOccurs="1"
				maxOccurs="unbounded" />
			<xs:element name="direct" type="xs:boolean" />

			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
				processContents="lax" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="cmisAccessControlListType">
		<xs:sequence>
			<xs:element name="permission" type="cmis:cmisAccessControlEntryType"
				minOccurs="0" maxOccurs="unbounded" />
			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
				processContents="lax" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="cmisACLCapabilityType">
		<xs:sequence>
			<xs:element name="supportedPermissions" type="cmis:enumSupportedPermissions" />
			<xs:element name="propagation" type="cmis:enumACLPropagation" />
			<xs:element name="permissions" type="cmis:cmisPermissionDefinition"
				minOccurs="1" maxOccurs="unbounded" />
			<xs:element name="mapping" type="cmis:cmisPermissionMapping"
				minOccurs="0" maxOccurs="unbounded" />
		</xs:sequence>
	</xs:complexType>

	<xs:simpleType name="enumSupportedPermissions">
		<xs:restriction base="xs:string">
			<xs:enumeration value="basic" />
			<xs:enumeration value="repository" />
			<xs:enumeration value="both" />
		</xs:restriction>
	</xs:simpleType>

	<!-- renditions -->
	<xs:simpleType name="enumCapabilityRendition">
		<xs:restriction base="xs:string">
			<xs:enumeration value="none" />
			<xs:enumeration value="read" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="enumRenditionKind">
		<xs:restriction base="xs:string">
			<xs:enumeration value="cmis:thumbnail" />
		</xs:restriction>
	</xs:simpleType>

	<xs:complexType name="cmisRenditionType">
		<xs:sequence>
			<xs:element name="streamId" type="xs:string" />
			<xs:element name="mimetype" type="xs:string" />
			<xs:element name="length" type="xs:integer" />
			<xs:element name="kind" type="xs:string" />
			<xs:element name="title" type="xs:string" minOccurs="0" />
			<xs:element name="height" type="xs:integer" minOccurs="0" />
			<xs:element name="width" type="xs:integer" minOccurs="0" />
			<xs:element name="renditionDocumentId" type="xs:string"
				minOccurs="0" />

			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
				processContents="lax" />
		</xs:sequence>
	</xs:complexType>


	<!-- elements -->
	<xs:element name="allowableActions" type="cmis:cmisAllowableActionsType">
		<xs:annotation>
			<xs:documentation>
				This is the root tag for a CMIS AllowableActions
				Document Type
			</xs:documentation>
		</xs:annotation>
	</xs:element>

	<xs:element name="query" type="cmis:cmisQueryType">
		<xs:annotation>
			<xs:documentation>
				This is the root tag for a CMIS Query Document Type
			</xs:documentation>
		</xs:annotation>
	</xs:element>
	<xs:element name="acl" type="cmis:cmisAccessControlListType">
		<xs:annotation>
			<xs:documentation>
				This is the root tag for a CMIS ACL Document Type
			</xs:documentation>
		</xs:annotation>
	</xs:element>
	
	<!-- type mutability -->
	<xs:complexType name="cmisTypeMutabilityCapabilitiesType"> 
		<xs:sequence> 
			<xs:element name="create" type="xs:boolean"/>
			<xs:element name="update" type="xs:boolean"/>
			<xs:element name="delete" type="xs:boolean"/>
			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
				processContents="lax" />
		</xs:sequence> 
	</xs:complexType> 

	<xs:complexType name="cmisCreatablePropertyTypesType">
		<xs:sequence>
			<xs:element name="canCreate" type="cmis:enumPropertyType"
				minOccurs="0" maxOccurs="unbounded"/>
			<xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded"
				processContents="lax" />
		</xs:sequence>
	</xs:complexType>
	
	<xs:complexType name="cmisNewTypeSettableAttributes">
		<xs:sequence>
			<xs:element name="id" type="xs:boolean" minOccurs="1" maxOccurs="1" />
			<xs:element name="localName" type="xs:boolean" minOccurs="1" maxOccurs="1" />
			<xs:element name="localNamespace" type="xs:boolean" minOccurs="1" maxOccurs="1"/>
			<xs:element name="displayName" type="xs:boolean" minOccurs="1" maxOccurs="1" />
			<xs:element name="queryName" type="xs:boolean" minOccurs="1" maxOccurs="1" />
			<xs:element name="description" type="xs:boolean" minOccurs="1" maxOccurs="1" />
			<xs:element name="creatable" type="xs:boolean" minOccurs="1" maxOccurs="1" />
			<xs:element name="fileable" type="xs:boolean" minOccurs="1" maxOccurs="1" />
			<xs:element name="queryable" type="xs:boolean" minOccurs="1" maxOccurs="1" />
			<xs:element name="fulltextIndexed" type="xs:boolean" minOccurs="1" maxOccurs="1" />
			<xs:element name="includedInSupertypeQuery" type="xs:boolean" minOccurs="1" maxOccurs="1"/>
			<xs:element name="controllablePolicy" type="xs:boolean" minOccurs="1" maxOccurs="1" />
			<xs:element name="controllableACL" type="xs:boolean" minOccurs="1" maxOccurs="1" />
		</xs:sequence>
	</xs:complexType>

	<!-- feature extensions -->
	<xs:complexType name="cmisExtensionFeatureKeyValuePair">	
		<xs:sequence>
			<xs:element minOccurs="1" maxOccurs="1" name="key" type="xs:string" />
			<xs:element minOccurs="1" maxOccurs="1" name="value" type="xs:string" />
		</xs:sequence>
	</xs:complexType> 

	<xs:complexType name="cmisExtensionFeatureType">	
		<xs:sequence>
			<!-- id is the only mandatory field - typically will be a URN-->
			<xs:element minOccurs="1" maxOccurs="1" name="id" type="xs:anyURI" />
			<!-- optional url for a site describing the extension -->
			<xs:element minOccurs="0" maxOccurs="1" name="url" type="xs:anyURI" />
			<!-- optional short name for standard i.e. FooStandard -->
			<xs:element minOccurs="0" maxOccurs="1" name="commonName" type="xs:string" />
			<!-- optional version label-->
			<xs:element minOccurs="0" maxOccurs="1" name="versionLabel" type="xs:string" />
			<xs:element minOccurs="0" maxOccurs="1" name="description" type="xs:string" />
			<xs:element name="featureData" type="cmis:cmisExtensionFeatureKeyValuePair" minOccurs="0" maxOccurs="unbounded" />
			<xs:any processContents="lax" namespace="##other" minOccurs="0" maxOccurs="unbounded" />
		</xs:sequence>
	</xs:complexType> 
	
</xs:schema>
	<!-- EOF -->