<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.3 U (http://www.xmlspy.com) by Jens-S. Vöckler (University of Chicago) -->
<xs:schema targetNamespace="http://www.griphyn.org/working_groups/VDS" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.griphyn.org/working_groups/VDS" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:element name="vdl-script">
		<xs:annotation>
			<xs:documentation>virtual data modification language</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:choice minOccurs="0" maxOccurs="unbounded">
				<xs:element name="transformation">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="formal-parameter">
								<xs:complexType>
									<xs:sequence minOccurs="0" maxOccurs="unbounded">
										<xs:element name="declare">
											<xs:complexType>
												<xs:simpleContent>
													<xs:extension base="xs:string">
														<xs:attribute name="name" type="xs:NMTOKEN" use="required"/>
														<xs:attribute name="type" type="myAnyType" default="scalar"/>
														<xs:attribute name="vdlns" type="xs:string" use="optional"/>
													</xs:extension>
												</xs:simpleContent>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="transformation-body" minOccurs="0">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="temporary" minOccurs="0"/>
										<xs:element name="parameter-file" minOccurs="0" maxOccurs="unbounded">
											<xs:complexType/>
										</xs:element>
										<xs:choice>
											<xs:sequence>
												<xs:element name="application">
													<xs:complexType>
														<xs:sequence>
															<xs:element name="pre-script" type="runnableType" minOccurs="0">
															</xs:element>
															<xs:element name="executable" type="runnableType">
															</xs:element>
															<xs:element name="post-script" type="runnableType" minOccurs="0">
															</xs:element>
														</xs:sequence>
													</xs:complexType>
												</xs:element>
												<xs:element name="argument" minOccurs="0">
													<xs:complexType/>
												</xs:element>
											</xs:sequence>
											<xs:element name="call" maxOccurs="unbounded"/>
										</xs:choice>
										<xs:element name="environment" minOccurs="0" maxOccurs="unbounded"/>
										<xs:element name="condor" minOccurs="0" maxOccurs="unbounded"/>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
						<xs:attribute name="name" type="xs:NMTOKEN" use="required"/>
						<xs:attribute name="version" type="xs:string" use="optional"/>
						<xs:attribute name="vdlns" type="xs:string" use="optional"/>
					</xs:complexType>
				</xs:element>
				<xs:element name="derivation">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="actual-parameter"/>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:choice>
			<xs:attribute name="version" type="xs:string" use="required"/>
			<xs:attribute name="vdlns" type="xs:string" use="optional"/>
		</xs:complexType>
	</xs:element>
	<xs:complexType name="runnableType" mixed="true">
		<xs:choice>
			<xs:element name="lfn">
				<xs:complexType>
					<xs:simpleContent>
						<xs:extension base="xs:string">
							<xs:attribute name="universe" type="universeType"/>
						</xs:extension>
					</xs:simpleContent>
				</xs:complexType>
			</xs:element>
		</xs:choice>
		<xs:attribute/>
	</xs:complexType>
	<xs:simpleType name="myAnyType">
		<xs:restriction base="xs:NMTOKEN">
			<xs:enumeration value="scalar"/>
			<xs:enumeration value="vector"/>
			<xs:enumeration value="hash"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="universeType">
		<xs:restriction base="xs:NMTOKEN">
			<xs:enumeration value="scheduler"/>
			<xs:enumeration value="vanilla"/>
			<xs:enumeration value="standard"/>
			<xs:enumeration value="globus"/>
			<xs:enumeration value="pvm"/>
			<xs:enumeration value="mpi"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>
