<?xml version="1.0" encoding="UTF-8"?><!-- edited with XMLSpy v2006 U (http://www.altova.com) by Gaurang Mehta (USC ISI) --><!-- edited with XMLSPY v2004 rel. 3 U (http://www.xmlspy.com) by Rebecca Y Jordan (UNIV OF SOUTHERN CALIF) --><xs:schema targetNamespace="http://pegasus.isi.edu/schema/sitecatalog" xmlns="http://pegasus.isi.edu/schema/sitecatalog" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="4.0">	<xs:simpleType name="ProfileNamespace">		<xs:annotation>			<xs:documentation>defines the legal namespaces of execution profiles.</xs:documentation>		</xs:annotation>		<xs:restriction base="xs:NMTOKEN">			<xs:enumeration value="pegasus"/>			<xs:enumeration value="condor"/>			<xs:enumeration value="dagman"/>			<xs:enumeration value="env"/>			<xs:enumeration value="hints"/>			<xs:enumeration value="globus"/>		</xs:restriction>	</xs:simpleType>	<xs:simpleType name="SchedulerType">		<xs:annotation>			<xs:documentation>Different Schedulers on the Grid</xs:documentation>		</xs:annotation>		<xs:restriction base="xs:NMTOKEN">			<xs:enumeration value="Fork"/>			<xs:enumeration value="PBS"/>			<xs:enumeration value="LSF"/>			<xs:enumeration value="Condor"/>			<xs:enumeration value="SGE"/>			<xs:enumeration value="unknown"/>		</xs:restriction>	</xs:simpleType>	<xs:simpleType name="GridType">		<xs:annotation>			<xs:documentation>Different Grid Type's that  can be supported by Pegasus. Mirror the Condor grid types.			  http://research.cs.wisc.edu/htcondor/manual/v7.9/5_3Grid_Universe.html			</xs:documentation>		</xs:annotation>		<xs:restriction base="xs:NMTOKEN">			<xs:enumeration value="gt2"/>			<xs:enumeration value="gt4"/>			<xs:enumeration value="gt5"/>			<xs:enumeration value="condor"/>			<xs:enumeration value="cream"/>			<xs:enumeration value="batch"/>			<xs:enumeration value="pbs"/>			<xs:enumeration value="lsf"/>			<xs:enumeration value="sge"/>			<xs:enumeration value="nordugrid"/>			<xs:enumeration value="unicore"/>			<xs:enumeration value="ec2"/>			<xs:enumeration value="deltacloud"/>		</xs:restriction>	</xs:simpleType>	<xs:simpleType name="JobType">		<xs:annotation>			<xs:documentation>Type of Jobs in the executable workflow this Grid Supports</xs:documentation>		</xs:annotation>		<xs:restriction base="xs:NMTOKEN">			<xs:enumeration value="compute"/>			<xs:enumeration value="auxillary"/>			<xs:enumeration value="transfer"/>			<xs:enumeration value="register"/>			<xs:enumeration value="cleanup"/>		</xs:restriction>	</xs:simpleType>	<xs:element name="sitecatalog">		<xs:annotation>			<xs:documentation>root element aggregating all sites information there is.</xs:documentation>		</xs:annotation>		<xs:complexType>			<xs:sequence maxOccurs="unbounded">				<xs:element name="site">					<xs:annotation>						<xs:documentation>Describes a single site</xs:documentation>					</xs:annotation>					<xs:complexType>						<xs:sequence>							<xs:element name="grid" minOccurs="0" maxOccurs="unbounded">								<xs:annotation>									<xs:documentation>Each site supports various (usually two) jobmanagers.</xs:documentation>								</xs:annotation>								<xs:complexType>									<xs:attribute name="type" type="GridType" use="required">										<xs:annotation>											<xs:documentation>The universe name is actually the primary key for the jobmanager identification.</xs:documentation>										</xs:annotation>									</xs:attribute>									<xs:attribute name="contact" type="xs:string" use="required">										<xs:annotation>											<xs:documentation>The contact string is the secondary key for any job manager.</xs:documentation>										</xs:annotation>									</xs:attribute>									<xs:attribute name="scheduler" type="SchedulerType" use="required"/>									<xs:attribute name="jobtype" type="JobType" use="optional"/>									<xs:attribute name="free-mem" type="xs:string" use="optional"/>									<xs:attribute name="total-mem" type="xs:string" use="optional"/>									<xs:attribute name="max-count" type="xs:string" use="optional"/>									<xs:attribute name="max-cpu-time" type="xs:string" use="optional"/>									<xs:attribute name="running-jobs" type="xs:nonNegativeInteger" use="optional"/>									<xs:attribute name="jobs-in-queue" type="xs:nonNegativeInteger" use="optional"/>									<xs:attribute name="idle-nodes" type="xs:nonNegativeInteger" use="optional"/>									<xs:attribute name="total-nodes" type="xs:nonNegativeInteger" use="optional"/>									<xs:attributeGroup ref="SystemInformationGroup"/>								</xs:complexType>							</xs:element>							<xs:element name="directory" type="DirectoryLayoutType" minOccurs="0" maxOccurs="unbounded"/>							<xs:element name="replica-catalog" minOccurs="0" maxOccurs="unbounded">								<xs:annotation>									<xs:documentation>Each site may report to multiple LRCs.</xs:documentation>								</xs:annotation>								<xs:complexType>									<xs:sequence>										<xs:element name="alias" minOccurs="0" maxOccurs="unbounded">											<xs:complexType>												<xs:attribute name="name" type="xs:string" use="required"/>											</xs:complexType>										</xs:element>										<xs:element name="connection" minOccurs="0" maxOccurs="unbounded">											<xs:complexType>												<xs:simpleContent>													<xs:extension base="xs:string">														<xs:attribute name="key" type="xs:string" use="required"/>													</xs:extension>												</xs:simpleContent>											</xs:complexType>										</xs:element>									</xs:sequence>									<xs:attribute name="type" type="xs:string" use="required"/>									<xs:attribute name="url" type="xs:string" use="required"/>								</xs:complexType>							</xs:element>							<xs:element name="profile" minOccurs="0" maxOccurs="unbounded">								<xs:annotation>									<xs:documentation>Administrative profile defaults associated with a site.</xs:documentation>								</xs:annotation>								<xs:complexType>									<xs:simpleContent>										<xs:extension base="xs:string">											<xs:attribute name="namespace" type="ProfileNamespace" use="required"/>											<xs:attribute name="key" type="xs:string" use="required"/>										</xs:extension>									</xs:simpleContent>								</xs:complexType>							</xs:element>						</xs:sequence>						<xs:attribute name="handle" type="xs:ID" use="required"/>						<xs:attributeGroup ref="SystemInformationGroup"/>					</xs:complexType>				</xs:element>			</xs:sequence>			<xs:attribute name="version" type="xs:decimal" use="optional" default="4.0"/>		</xs:complexType>	</xs:element>	<xs:complexType name="FileServerType">		<xs:annotation>			<xs:documentation>Describes the fileserver to access data from outside</xs:documentation>		</xs:annotation>		<xs:sequence>			<xs:element name="profile" minOccurs="0" maxOccurs="unbounded">				<xs:annotation>					<xs:documentation>Administrative profile defaults associated with a site.</xs:documentation>				</xs:annotation>				<xs:complexType>					<xs:simpleContent>						<xs:extension base="xs:string">							<xs:attribute name="namespace" type="ProfileNamespace" use="required"/>							<xs:attribute name="key" type="xs:string" use="required"/>						</xs:extension>					</xs:simpleContent>				</xs:complexType>			</xs:element>		</xs:sequence>		<xs:attribute name="url" type="xs:anyURI" use="required"/>		<xs:attribute name="operation" type="FileServerOperationType" use="optional"/>	</xs:complexType>	<xs:simpleType name="ArchitectureType">		<xs:annotation>			<xs:documentation>Defines the valid architecture types</xs:documentation>		</xs:annotation>		<xs:restriction base="xs:NMTOKENS">			<xs:enumeration value="x86"/>			<xs:enumeration value="x86_64"/>			<xs:enumeration value="ppc"/>			<xs:enumeration value="ppc_64"/>			<xs:enumeration value="ia64"/>			<xs:enumeration value="sparcv7"/>			<xs:enumeration value="sparcv9"/>			<xs:enumeration value="amd64"/>		</xs:restriction>	</xs:simpleType>	<xs:simpleType name="OSType">		<xs:annotation>			<xs:documentation>Defines the valid OS types</xs:documentation>		</xs:annotation>		<xs:restriction base="xs:NMTOKENS">			<xs:enumeration value="LINUX"/>			<xs:enumeration value="SUNOS"/>			<xs:enumeration value="AIX"/>			<xs:enumeration value="MACOSX"/>			<xs:enumeration value="WINDOWS"/>		</xs:restriction>	</xs:simpleType>	<xs:attributeGroup name="SystemInformationGroup">		<xs:annotation>			<xs:documentation>Defines the attributes to define system information</xs:documentation>		</xs:annotation>		<xs:attribute name="arch" type="ArchitectureType" use="optional" default="x86"/>		<xs:attribute name="os" type="OSType" use="optional" default="LINUX"/>		<xs:attribute name="osrelease" type="xs:string" use="optional"/>		<xs:attribute name="osversion" type="xs:string" use="optional"/>		<xs:attribute name="glibc" type="xs:string" use="optional"/>	</xs:attributeGroup>	<xs:attributeGroup name="DirectoryInformationGroup">		<xs:annotation>			<xs:documentation>Defines the attributes to define directory such as internal path and size</xs:documentation>		</xs:annotation>		<xs:attribute name="type" type="DirectoryType" use="required"/>		<xs:attribute name="path" type="xs:string" use="optional"/>		<xs:attribute name="free-size" type="xs:string" use="optional"/>		<xs:attribute name="total-size" type="xs:string" use="optional"/>	</xs:attributeGroup>	<xs:complexType name="DirectoryLayoutType">		<xs:annotation>			<xs:documentation>Defines a directory's external and internal view/mount-point and access parameters</xs:documentation>		</xs:annotation>		<xs:sequence>			<xs:element name="file-server" type="FileServerType" maxOccurs="unbounded"/>		</xs:sequence>		<xs:attributeGroup ref="DirectoryInformationGroup"/>	</xs:complexType>	<xs:simpleType name="DirectoryType">		<xs:annotation>			<xs:documentation>Different types of directories supported for a site</xs:documentation>		</xs:annotation>		<xs:restriction base="xs:NMTOKENS">			<xs:enumeration value="shared-scratch"/>			<xs:enumeration value="shared-storage"/>			<xs:enumeration value="local-scratch"/>			<xs:enumeration value="local-storage"/>		</xs:restriction>	</xs:simpleType>	<xs:simpleType name="FileServerOperationType">		<xs:annotation>			<xs:documentation>Different types of operations supported by a file server</xs:documentation>		</xs:annotation>		<xs:restriction base="xs:NMTOKENS">			<xs:enumeration value="get"/>			<xs:enumeration value="put"/>			<xs:enumeration value="all"/>		</xs:restriction>	</xs:simpleType></xs:schema>