<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v5 rel. 4 U (http://www.xmlspy.com) by Arthur Nesterovsky -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
	<xs:element name="arg">
		<xs:annotation>
			<xs:documentation>determines an argument of such commands as transform and exec</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="xs:string">
					<xs:attribute name="name" type="xs:string"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:element name="mask">
		<xs:annotation>
			<xs:documentation>determines files/folders mask</xs:documentation>
		</xs:annotation>
		<xs:simpleType>
			<xs:restriction base="xs:anyURI"/>
		</xs:simpleType>
	</xs:element>
	<xs:element name="item">
		<xs:annotation>
			<xs:documentation>determines an repository item (path of file/project in the repository)</xs:documentation>
		</xs:annotation>
		<xs:simpleType>
			<xs:restriction base="xs:anyURI"/>
		</xs:simpleType>
	</xs:element>
	<!-- Command definitions -->
	<xs:element name="add">
		<xs:annotation>
			<xs:documentation>adds the specified file/folder to the repository</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence minOccurs="1" maxOccurs="unbounded">
				<xs:element ref="mask"/>
			</xs:sequence>
			<xs:attribute name="project" type="xs:anyURI" use="required"/>
			<xs:attribute name="recursive" type="xs:boolean" default="false"/>
			<xs:attribute name="comment" type="xs:string"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="delete">
		<xs:annotation>
			<xs:documentation>deletes the specified file/folder from the repository</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence minOccurs="1" maxOccurs="unbounded">
				<xs:element ref="item"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="destroy">
		<xs:annotation>
			<xs:documentation>destroy the specified file/folder from the repository</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence minOccurs="1" maxOccurs="unbounded">
				<xs:element ref="item"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="check-in">
		<xs:annotation>
			<xs:documentation>checks the specified file/folder in</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence minOccurs="1" maxOccurs="unbounded">
				<xs:element ref="item"/>
			</xs:sequence>
			<xs:attribute name="recursive" type="xs:boolean" default="false"/>
			<xs:attribute name="comment" type="xs:string"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="check-out">
		<xs:annotation>
			<xs:documentation>checks the specified file/folder out</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence minOccurs="1" maxOccurs="unbounded">
				<xs:element ref="item"/>
			</xs:sequence>
			<xs:attribute name="recursive" type="xs:boolean" default="false"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="undo-check-out">
		<xs:annotation>
			<xs:documentation>performs undo check out for the specified file/folder</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence minOccurs="1" maxOccurs="unbounded">
				<xs:element ref="item"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="get-version">
		<xs:annotation>
			<xs:documentation>gets the version number of the specified file</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="repository" type="xs:anyURI" use="required"/>
			<xs:attribute name="version" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="get-latest-version">
		<xs:annotation>
			<xs:documentation>gets the latest version of the specified file/folder</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence minOccurs="1" maxOccurs="unbounded">
				<xs:element ref="item"/>
			</xs:sequence>
			<xs:attribute name="recursive" type="xs:boolean" default="false"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="history">
		<xs:annotation>
			<xs:documentation>gets history list for the specified file/folder, store the result XML to the specified place </xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="repository" type="xs:anyURI" use="required"/>
			<xs:attribute name="recursive" type="xs:boolean" default="false"/>
			<xs:attribute name="to" type="xs:anyURI" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="label">
		<xs:annotation>
			<xs:documentation>creates label with the specified name</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence minOccurs="1" maxOccurs="unbounded">
				<xs:element ref="item"/>
			</xs:sequence>
			<xs:attribute name="name" type="xs:string"/>
			<xs:attribute name="recursive" type="xs:boolean" default="false"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="list">
		<xs:annotation>
			<xs:documentation>gets the current state of the specified file/folder</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="repository" type="xs:anyURI" use="required"/>
			<xs:attribute name="recursive" type="xs:boolean" default="false"/>
			<xs:attribute name="icludeDeleted" type="xs:boolean" default="false"/>
			<xs:attribute name="to" type="xs:anyURI" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="get-label">
		<xs:annotation>
			<xs:documentation>retrieves items, marked with the specified label starting from the specified entry point</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="repository" type="xs:anyURI" use="required"/>
			<xs:attribute name="label" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="move">
		<xs:annotation>
			<xs:documentation>moves list of files/projects into the repository to another parent project</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence minOccurs="1" maxOccurs="unbounded">
				<xs:element ref="item"/>
			</xs:sequence>
			<xs:attribute name="project" type="xs:anyURI" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="branch">
		<xs:annotation>
			<xs:documentation>creates a new branch for  the specified list of files/projects</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence minOccurs="1" maxOccurs="unbounded">
				<xs:element ref="item"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="share">
		<xs:annotation>
			<xs:documentation>share list of files/projects with the specified project</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence minOccurs="1" maxOccurs="unbounded">
				<xs:element ref="item"/>
			</xs:sequence>
			<xs:attribute name="project" type="xs:anyURI" use="required"/>
			<xs:attribute name="comment" type="xs:string"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="pin">
		<xs:annotation>
			<xs:documentation>pin the specified version of the file or folder</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="repository" type="xs:anyURI" use="required"/>
			<xs:attribute name="version" type="xs:string" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="unpin">
		<xs:annotation>
			<xs:documentation>unpin the specified list of files/projects</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence minOccurs="1" maxOccurs="unbounded">
				<xs:element ref="item"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="recover">
		<xs:annotation>
			<xs:documentation>recover previous deleted from the repository files or projects</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence minOccurs="1" maxOccurs="unbounded">
				<xs:element ref="item"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="cloak">
		<xs:annotation>
			<xs:documentation>mark projects as cloaked</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence minOccurs="1" maxOccurs="unbounded">
				<xs:element ref="item"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="uncloak">
		<xs:annotation>
			<xs:documentation>remove cloaked mark from projects</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence minOccurs="1" maxOccurs="unbounded">
				<xs:element ref="item"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<!-- common commands -->
	<xs:element name="comment">
		<xs:annotation>
			<xs:documentation>creates a comment message in the output stream</xs:documentation>
		</xs:annotation>
		<xs:simpleType>
			<xs:restriction base="xs:string"/>
		</xs:simpleType>
	</xs:element>
	<xs:element name="copy">
		<xs:annotation>
			<xs:documentation>copies files determined by list of mask objects to the specified folder</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence maxOccurs="unbounded">
				<xs:element ref="mask"/>
			</xs:sequence>
			<xs:attribute name="to" type="xs:anyURI" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="rename-move">
		<xs:annotation>
			<xs:documentation>moves/renames the specified file/folder</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="from" type="xs:anyURI" use="required"/>
			<xs:attribute name="to" type="xs:anyURI" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="remove">
		<xs:annotation>
			<xs:documentation>deletes the specified file/folder locally</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence maxOccurs="unbounded">
				<xs:element ref="mask"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="mkdir">
		<xs:annotation>
			<xs:documentation>creates folder with the specified name locally</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:attribute name="name" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="exec">
		<xs:annotation>
			<xs:documentation>executes the specified external applications with the list of arguments determined by children arg elements</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="arg"/>
			</xs:sequence>
			<xs:attribute name="name" type="xs:string"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="transform">
		<xs:annotation>
			<xs:documentation>performs XSL transformation of the specified xml-file, using of the specified xsl-file and store result to the specified place</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence minOccurs="0" maxOccurs="unbounded">
				<xs:element ref="arg"/>
			</xs:sequence>
			<xs:attribute name="xml" type="xs:anyURI"/>
			<xs:attribute name="xsl" type="xs:anyURI"/>
			<xs:attribute name="to" type="xs:anyURI"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="commands">
		<xs:annotation>
			<xs:documentation>determines the list of acceptable commands</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence minOccurs="0" maxOccurs="unbounded">
				<xs:choice minOccurs="0" maxOccurs="unbounded">
					<xs:element ref="add"/>
					<xs:element ref="delete"/>
					<xs:element ref="destroy"/>
					<xs:element ref="recover"/>
					<xs:element ref="check-in"/>
					<xs:element ref="check-out"/>
					<xs:element ref="undo-check-out"/>
					<xs:element ref="get-version"/>
					<xs:element ref="get-latest-version"/>
					<xs:element ref="history"/>
					<xs:element ref="label"/>
					<xs:element ref="list"/>
					<xs:element ref="get-label"/>
					<xs:element ref="move"/>
					<xs:element ref="branch"/>
					<xs:element ref="share"/>
					<xs:element ref="pin"/>
					<xs:element ref="unpin"/>
					<xs:element ref="cloak"/>
					<xs:element ref="uncloak"/>
					<xs:element ref="comment"/>
					<xs:element ref="copy"/>
					<xs:element ref="rename-move"/>
					<xs:element ref="remove"/>
					<xs:element ref="mkdir"/>
					<xs:element ref="transform"/>
					<xs:element ref="exec"/>
				</xs:choice>
			</xs:sequence>
			<xs:attribute name="working-folder" type="xs:anyURI" use="required"/>
		</xs:complexType>
	</xs:element>
</xs:schema>

