<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.3 U (http://www.xmlspy.com) by Christopher Scott Taylor (Nanshu Densetsu) -->
<xs:schema targetNamespace="http://jakarta.apache.org/slide/schema/slide_1_0_16.xsd" xmlns="http://jakarta.apache.org/slide/schema/slide_1_0_16.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="slide">
		<xs:annotation>
			<xs:documentation>Top Level node in the Domain file.  Responsible for configuring Slide's view of the world</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/>
				<xs:element name="namespace" maxOccurs="unbounded">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="definition">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="store" minOccurs="0" maxOccurs="unbounded">
											<xs:complexType>
												<xs:complexContent>
													<xs:extension base="storeType">
														<xs:sequence>
															<xs:element name="nodestore" type="childstoreType"/>
															<xs:element name="securitystore" type="childstoreType"/>
															<xs:element name="lockstore" type="childstoreType"/>
															<xs:element name="revisiondescriptorsstore" type="childstoreType"/>
															<xs:element name="revisiondescriptorstore" type="childstoreType"/>
															<xs:element name="contentstore" type="childstoreType"/>
														</xs:sequence>
														<xs:attribute name="name" type="xs:string" use="required"/>
													</xs:extension>
												</xs:complexContent>
											</xs:complexType>
										</xs:element>
										<xs:element name="scope" minOccurs="0" maxOccurs="unbounded">
											<xs:complexType>
												<xs:attribute name="match" type="xs:string" use="required"/>
												<xs:attribute name="store" type="xs:string" use="required"/>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="configuration">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="default-action" type="xs:string"/>
										<xs:element name="read-object" type="xs:string"/>
										<xs:element name="create-object" type="xs:string"/>
										<xs:element name="remove-object" type="xs:string"/>
										<xs:element name="grant-permission" type="xs:string"/>
										<xs:element name="revoke-permission" type="xs:string"/>
										<xs:element name="read-permissions" type="xs:string"/>
										<xs:element name="lock-object" type="xs:string"/>
										<xs:element name="kill-lock" type="xs:string"/>
										<xs:element name="read-locks" type="xs:string"/>
										<xs:element name="read-revision-metadata" type="xs:string"/>
										<xs:element name="create-revision-metadata" type="xs:string"/>
										<xs:element name="modify-revision-metadata" type="xs:string"/>
										<xs:element name="remove-revision-metadata" type="xs:string"/>
										<xs:element name="read-revision-content" type="xs:string"/>
										<xs:element name="create-revision-content" type="xs:string"/>
										<xs:element name="modify-revision-content" type="xs:string"/>
										<xs:element name="remove-revision-content" type="xs:string"/>
										<xs:element name="userspath" type="xs:string" minOccurs="0"/>
										<xs:element name="guestpath" type="xs:string" minOccurs="0"/>
										<xs:element name="filespath" type="xs:string" minOccurs="0"/>
										<xs:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/>
										<xs:element name="role" minOccurs="0" maxOccurs="unbounded">
											<xs:complexType>
												<xs:simpleContent>
													<xs:extension base="xs:string">
														<xs:attribute name="name" type="xs:string" use="required"/>
													</xs:extension>
												</xs:simpleContent>
											</xs:complexType>
										</xs:element>
										<xs:element name="auto-create-users" type="xs:boolean" minOccurs="0"/>
										<xs:element name="auto-create-users-role" type="xs:boolean" minOccurs="0"/>
										<xs:element name="default-property" minOccurs="0" maxOccurs="unbounded">
											<xs:complexType>
												<xs:attribute name="name" type="xs:string" use="required"/>
												<xs:attribute name="value" type="xs:string" use="optional"/>
												<xs:attribute name="namespace" type="xs:string" use="optional"/>
												<xs:attribute name="role" type="xs:string" use="required"/>
											</xs:complexType>
										</xs:element>
										<xs:element name="content-interceptor" minOccurs="0" maxOccurs="unbounded">
											<xs:complexType>
												<xs:sequence>
													<xs:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/>
												</xs:sequence>
												<xs:attribute name="class" type="xs:string" use="required"/>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="data" minOccurs="0">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="objectnode" type="objectnodeType" minOccurs="0" maxOccurs="unbounded"/>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="services" minOccurs="0">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="service" minOccurs="0" maxOccurs="unbounded">
											<xs:complexType>
												<xs:sequence>
													<xs:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/>
												</xs:sequence>
												<xs:attribute name="classname" type="xs:string" use="required"/>
												<xs:attribute name="name" type="xs:string" use="required"/>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
						<xs:attribute name="name" type="xs:string" use="required"/>
						<xs:attribute name="logger" type="xs:string" use="optional"/>
						<xs:attribute name="logger-level" type="xs:integer" use="optional"/>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="logger" type="xs:string" default="org.apache.slide.util.logger.SimpleLogger"/>
			<xs:attribute name="logger-level" type="xs:integer" default="4"/>
			<xs:attribute name="default" type="xs:string" default="slide"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="parameter">
		<xs:complexType>
			<xs:simpleContent>
				<xs:extension base="xs:string">
					<xs:attribute name="name" type="xs:string" use="required"/>
				</xs:extension>
			</xs:simpleContent>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="storeType">
		<xs:sequence>
			<xs:element ref="parameter" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="classname" type="xs:string" use="optional"/>
	</xs:complexType>
	<xs:complexType name="childstoreType">
		<xs:complexContent>
			<xs:extension base="storeType">
				<xs:sequence>
					<xs:element name="reference" minOccurs="0">
						<xs:complexType>
							<xs:attribute name="store">
								<xs:simpleType>
									<xs:restriction base="xs:string">
										<xs:enumeration value="nodestore"/>
										<xs:enumeration value="securitystore"/>
										<xs:enumeration value="lockstore"/>
										<xs:enumeration value="revisiondescriptorsstore"/>
										<xs:enumeration value="revisiondescriptorstore"/>
										<xs:enumeration value="contentstore"/>
									</xs:restriction>
								</xs:simpleType>
							</xs:attribute>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="objectnodeType">
		<xs:sequence>
			<xs:element name="revision" minOccurs="0">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="property">
							<xs:complexType>
								<xs:simpleContent>
									<xs:extension base="xs:string">
										<xs:attribute name="name" type="xs:string" use="required"/>
									</xs:extension>
								</xs:simpleContent>
							</xs:complexType>
						</xs:element>
					</xs:sequence>
				</xs:complexType>
			</xs:element>
			<xs:element name="permission" minOccurs="0" maxOccurs="unbounded">
				<xs:complexType>
					<xs:attribute name="action" type="xs:string" use="required"/>
					<xs:attribute name="subject" type="xs:string" use="required"/>
					<xs:attribute name="inheritable" type="xs:boolean" use="optional"/>
					<xs:attribute name="negative" type="xs:boolean" use="optional"/>
				</xs:complexType>
			</xs:element>
			<xs:element name="objectnode" type="objectnodeType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:attribute name="classname" type="xs:string" use="required"/>
		<xs:attribute name="uri" type="xs:string" use="required"/>
		<xs:attribute name="linkedUri" type="xs:string" use="optional"/>
	</xs:complexType>
</xs:schema>
