<?xml version="1.0" encoding="UTF-8"?>
<!--
	The OGF takes no position regarding the validity or scope of any 
intellectual property or other rights that might be claimed to pertain 
to the implementation or use of the technology described in this 
document or the extent to which any license under such rights might or 
might not be available; neither does it represent that it has made any 
effort to identify any such rights.  Copies of claims of rights made 
available for publication and any assurances of licenses to be made 
available, or the result of an attempt made to obtain a general license 
or permission for the use of such proprietary rights by implementers or 
users of this specification can be obtained from the OGF Secretariat.
	
	The OGF invites any interested party to bring to its attention any 
copyrights, patents or patent applications, or other proprietary rights 
which may cover technology that may be required to practice this 
recommendation.  Please address the information to the OGF Executive 
Director.
	
	This document and the information contained herein is provided on an 
"As Is" basis and the OGF disclaims all warranties, express or implied, 
including but not limited to any warranty that the use of the 
information herein will not infringe any rights or any implied
warranties of merchantability or fitness for a particular purpose.
	
	Copyright (C) Open Grid Forum (2006, 2007). All Rights Reserved. 
	
	This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it or
assist in its implementation may be prepared, copied, published and 
distributed, in whole or in part, without restriction of any kind, 
provided that the above copyright notice and this paragraph are included 
on all such copies and derivative works. However, this document itself 
may not be modified in any way, such as by removing the copyright notice
or references to the OGF or other organizations, except as needed for
the purpose of developing Grid Recommendations in which case the
procedures for copyrights defined in the OGF Document process must be
followed, or as required to translate it into languages other than 
English. 
	
	The limited permissions granted above are perpetual and will not be 
revoked by the OGF or its successors or assignees.
-->

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	xmlns:jsdl-posix="http://schemas.ggf.org/jsdl/2005/11/jsdl-posix"
	xmlns="http://schemas.ogf.org/jsdl/2007/02/jsdl-spmd"
	xmlns:jsdl-spmd="http://schemas.ogf.org/jsdl/2007/02/jsdl-spmd"
	targetNamespace="http://schemas.ogf.org/jsdl/2007/02/jsdl-spmd" 
		elementFormDefault="qualified">
	<xsd:import namespace="http://schemas.ggf.org/jsdl/2005/11/jsdl-posix"
		schemaLocation="http://schemas.ggf.org/jsdl/2005/11/jsdl-posix"/>
	<!--==========================================================-->
	<xsd:complexType name="NumberOfProcesses_Type">
		<xsd:simpleContent>
			<xsd:extension base="xsd:positiveInteger">
				<xsd:attribute name="actualtotalcpucount" 
					type="xsd:boolean" use="optional"/>
				<xsd:anyAttribute namespace="##other" 
					processContents="lax"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<!--==========================================================-->
	<xsd:complexType name="ProcessesPerHost_Type">
		<xsd:simpleContent>
			<xsd:extension base="xsd:positiveInteger">
				<xsd:anyAttribute namespace="##other" 
					processContents="lax"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	<!--==========================================================-->
	<xsd:complexType name="ThreadsPerProcess_Type">
		<xsd:simpleContent>
			<xsd:extension base="xsd:positiveInteger">
				<xsd:attribute name="actualindividualcpucount" 
					type="xsd:boolean" use="optional"/>
				<xsd:anyAttribute namespace="##other" 
					processContents="lax"/>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>	
	<!--==========================================================-->
	<xsd:complexType name="SPMDApplication_Type">
		<xsd:sequence>
			<xsd:element ref="jsdl-posix:Executable" minOccurs="0"/>
			<xsd:element ref="jsdl-posix:Argument" minOccurs="0" 
				maxOccurs="unbounded"/>
			<xsd:element ref="jsdl-posix:Input" minOccurs="0"/>
			<xsd:element ref="jsdl-posix:Output" minOccurs="0"/>
			<xsd:element ref="jsdl-posix:Error" minOccurs="0"/>
			<xsd:element ref="jsdl-posix:WorkingDirectory" minOccurs="0"/>
			<xsd:element ref="jsdl-posix:Environment" minOccurs="0" 
				maxOccurs="unbounded"/>
			<xsd:element ref="jsdl-posix:UserName" minOccurs="0"/>
			<xsd:element ref="jsdl-spmd:NumberOfProcesses" minOccurs="0"/>
			<xsd:element ref="jsdl-spmd:ProcessesPerHost" minOccurs="0"/>
			<xsd:element ref="jsdl-spmd:ThreadsPerProcess" minOccurs="0"/>
			<xsd:element ref="jsdl-spmd:SPMDVariation" minOccurs="1" maxOccurs="1"/>
			<xsd:any namespace="##other" processContents="lax"
				minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="name" type="xsd:NCName" use="optional"/>
		<xsd:anyAttribute namespace="##other" processContents="lax"/>
	</xsd:complexType>
	<!--==========================================================-->
	<xsd:element name="SPMDApplication" type="SPMDApplication_Type"/>
	<xsd:element name="NumberOfProcesses" 
		type="jsdl-spmd:NumberOfProcesses_Type" nillable="true"/>
	<xsd:element name="ProcessesPerHost" 
		type="jsdl-spmd:ProcessesPerHost_Type"/>
	<xsd:element name="ThreadsPerProcess" 
		type="jsdl-spmd:ThreadsPerProcess_Type" nillable="true"/>
	<xsd:element name="SPMDVariation" type="xsd:anyURI"/>
</xsd:schema>
