<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v5 rel. 4 U (http://www.xmlspy.com) by Rory Steele (Cancer Research UK) -->
<xs:schema targetNamespace="http://www.cancerresearchuk.org/acl/proforma/content#" xmlns="http://www.cancerresearchuk.org/acl/proforma/content#" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="guideline">
		<xs:annotation>
			<xs:documentation>Comment describing your root element</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence maxOccurs="unbounded">
				<xs:choice>
					<xs:element name="action">
						<xs:complexType>
							<xs:complexContent>
								<xs:extension base="taskContentType">
									<xs:sequence>
										<xs:element name="procedure" type="contentType" minOccurs="0"/>
									</xs:sequence>
								</xs:extension>
							</xs:complexContent>
						</xs:complexType>
					</xs:element>
					<xs:element name="decision">
						<xs:complexType>
							<xs:complexContent>
								<xs:extension base="enquiryContentType">
									<xs:sequence>
										<xs:element name="candidates" minOccurs="0">
											<xs:complexType>
												<xs:sequence>
													<xs:element name="candidate" maxOccurs="unbounded">
														<xs:complexType>
															<xs:complexContent>
																<xs:extension base="namedContentType">
																	<xs:sequence>
																		<xs:element name="arguments" minOccurs="0">
																			<xs:complexType>
																				<xs:sequence>
																					<xs:element name="argument" type="namedContentType" maxOccurs="unbounded"/>
																				</xs:sequence>
																			</xs:complexType>
																		</xs:element>
																	</xs:sequence>
																</xs:extension>
															</xs:complexContent>
														</xs:complexType>
													</xs:element>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
									<xs:attribute name="maxRecommendations" type="xs:int" use="optional"/>
									<xs:attribute name="comparator" type="xs:string" use="optional" default="org.cruk.struts.modules.shared.beans.DefaultCandidateComparator"/>
								</xs:extension>
							</xs:complexContent>
						</xs:complexType>
					</xs:element>
					<xs:element name="enquiry" type="enquiryContentType"/>
					<xs:element name="plan">
						<xs:complexType>
							<xs:complexContent>
								<xs:extension base="taskContentType">
									<xs:sequence>
										<xs:element name="grouping" type="componentNamesType" minOccurs="0"/>
									</xs:sequence>
								</xs:extension>
							</xs:complexContent>
						</xs:complexType>
					</xs:element>
					<xs:element name="task">
						<xs:complexType>
							<xs:complexContent>
								<xs:extension base="taskContentType"/>
							</xs:complexContent>
						</xs:complexType>
					</xs:element>
				</xs:choice>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="enquiryContentType">
		<xs:complexContent>
			<xs:extension base="taskContentType">
				<xs:sequence>
					<xs:element name="sources" minOccurs="0">
						<xs:complexType>
							<xs:sequence>
								<xs:element name="source" maxOccurs="unbounded">
									<xs:complexType>
										<xs:complexContent>
											<xs:extension base="namedContentType">
												<xs:attribute name="position" type="xs:int" use="optional"/>
												<xs:attribute name="dropdown" type="xs:boolean" use="optional" default="false"/>
											</xs:extension>
										</xs:complexContent>
									</xs:complexType>
								</xs:element>
							</xs:sequence>
						</xs:complexType>
					</xs:element>
					<xs:element name="dependency" minOccurs="0" maxOccurs="unbounded">
						<xs:complexType>
							<xs:simpleContent>
								<xs:extension base="componentNamesType">
									<xs:attribute name="source" type="xs:string" use="required"/>
									<xs:attribute name="keyword" type="xs:string" use="required"/>
								</xs:extension>
							</xs:simpleContent>
						</xs:complexType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:complexType name="contentType" mixed="true">
		<xs:sequence>
			<xs:any namespace="##any" processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="namedContentType">
		<xs:sequence>
			<xs:element name="caption" type="contentType" minOccurs="0"/>
			<xs:element name="description" type="contentType" minOccurs="0"/>
		</xs:sequence>
		<xs:attribute name="definition" type="xs:string" use="required"/>
	</xs:complexType>
	<xs:complexType name="taskContentType">
		<xs:complexContent>
			<xs:extension base="namedContentType">
				<xs:sequence>
					<xs:element name="context" type="contentType" minOccurs="0"/>
				</xs:sequence>
				<xs:attribute name="uri" type="xs:anyURI" use="optional"/>
				<xs:attribute name="script" type="xs:string" use="optional"/>
				<xs:attribute name="stylesheet" type="xs:string" use="optional"/>
				<xs:attribute name="confirmation" type="xs:string" use="optional" default="confirmTask"/>
				<xs:attribute name="delegate" type="xs:string" use="optional"/>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>
	<xs:simpleType name="componentNamesType">
		<xs:list itemType="xs:string"/>
	</xs:simpleType>
</xs:schema>

