<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:systypes="http://www.plcs.org/System/Types" xmlns:plcstypes="http://www.plcs.org/PLMServices/Types" xmlns="http://www.plcs.org/Document" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="http://www.plcs.org/Document" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:import namespace="http://www.plcs.org/System/Types" schemaLocation="..\..\..\ws\xsd\System.xsd"/>
	<xs:import namespace="http://www.plcs.org/PLMServices/Types" schemaLocation="..\..\..\ws\xsd\types.xsd"/>
	<xs:element name="CreateDocument">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="document" type="plcstypes:Document"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="CreateDocumentResponse">
		<xs:annotation>
			<xs:documentation>This is the response message when a Document is created. The created Document instance might be different from the requested Document.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="document" type="plcstypes:Document"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="CreateDocument_version">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="document_version" type="plcstypes:Document_version"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="CreateDocument_versionResponse">
		<xs:annotation>
			<xs:documentation>This is the response message when a Document_version is created. The created Document _versioninstance might be different from the requested Document_version.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="document_version" type="plcstypes:Document_version"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="DownloadFile">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="digital_file" type="plcstypes:Digital_file"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="DownloadFileResponse">
		<xs:annotation>
			<xs:documentation>This is the response message when a digital file is being downloaded by a client.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="binary" type="xs:base64Binary"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="CreateDigital_file">
		<xs:annotation>
			<xs:documentation>This message is used to create a digital file.

The actual file can be either a file which is submitted, or a reference to an external file, in which case the address is submitted.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="digital_file" type="plcstypes:Digital_file"/>
				<xs:element name="definition" type="plcstypes:Digital_document_definition"/>
				<xs:element name="the_file" type="xs:base64Binary" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="CreateDigital_fileResponse">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="digital_file" type="plcstypes:Digital_file"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="UpdateDocument">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="document" type="plcstypes:Document"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="UpdateDocumentResponse">
		<xs:annotation>
			<xs:documentation>This is the response message when a Document is updated. The created Document instance might be different from the requested Document.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="document" type="plcstypes:Document"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<!-- -->
	<xs:element name="UpdateDocument_version">
		<xs:annotation>
			<xs:documentation>An update of a Document version can be configured by a Document version update header. An update message reconcile an existing Document version with the submitted Document version instance. The update Document version applies to characteristics that does not have explicit methods/services for update.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="document_version" type="plcstypes:Document_version"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="UpdateDocument_versionResponse">
		<xs:annotation>
			<xs:documentation>This is the response message when a Document version is updated. The created Document version instance might be different from the requested Document version.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="document_version" type="plcstypes:Document_version"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="CheckInDocument_version">
		<xs:annotation>
			<xs:documentation>This method check in the document version. Normally only the user who have checked out the dcument version should be allowed to check in the document version. This rule might be implemented differently on a system to system basis. Also, a common rule is that a document version can only be checked in if it is checked out.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="document_version" type="plcstypes:Document_version"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="CheckInDocument_versionResponse">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="document_version" type="plcstypes:Document_version"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="CheckOutDocument_version">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="document_version" type="plcstypes:Document_version"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="CheckOutDocument_versionResponse">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="document_version" type="plcstypes:Document_version"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="GetCheckedOutDocument_versions">
		<xs:annotation>
			<xs:documentation>This method retreives document versions that are checked out. Either all checked out Document_versions are retreived, or only the document versions being checked out by this user.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="onlyCheckedOutByMe" type="xs:boolean"/>
				<xs:element name="after" type="xs:dateTime" minOccurs="0"/>
				<xs:element name="before" type="xs:dateTime" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="GetCheckedOutDocument_versionsResponse">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="assignments" type="plcstypes:Document_assignment" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="GetCheckedInDocument_versions">
		<xs:annotation>
			<xs:documentation>This method retreives document versions that are checked in. Either all checked in document versions are retreived, or only the document versions being checked in by this user.</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element name="onlyCheckedInByMe" type="xs:boolean"/>
				<xs:element name="after" type="xs:dateTime" minOccurs="0"/>
				<xs:element name="before" type="xs:dateTime" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="GetCheckedInDocument_versionsResponse">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="document_assignment" type="plcstypes:Document_assignment" minOccurs="0" maxOccurs="unbounded"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>

