<?xml version = "1.0" encoding = "UTF-8"?>
<!--
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    #
    # Copyright (C) 2003-2011 Open Microscopy Environment
    #       Massachusetts Institute of Technology,
    #       National Institutes of Health,
    #       University of Dundee,
    #       University of Wisconsin at Madison
    #
    # This work is licensed under the
    #       Creative Commons Attribution 3.0 Unported License.
    # To view a copy of this license, visit
    #       http://creativecommons.org/licenses/by/3.0/
    # or send a letter to
    #       Creative Commons, 444 Castro Street, Suite 900,
    #       Mountain View, California, 94041, USA.
    # For attribution instructions, visit
    #       http://www.openmicroscopy.org/info/attribution
    #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-->
<!--
	#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	# Written by:  Ilya G. Goldberg, Josiah Johnston, Andrew J Patterson 
	#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-->
<xsd:schema xmlns = "http://www.openmicroscopy.org/Schemas/AnalysisChain/2008-09"
	targetNamespace = "http://www.openmicroscopy.org/Schemas/AnalysisChain/2008-09"
	xmlns:OME = "http://www.openmicroscopy.org/Schemas/OME/2008-09"
	xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
	version = "1"
	elementFormDefault = "qualified">
	
	<xsd:element name = "AnalysisChain"> <!-- top level definition -->
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref = "Nodes" minOccurs="1" maxOccurs="1"/>
				<xsd:element ref = "Links" minOccurs="1" maxOccurs="1"/>
			</xsd:sequence>
			<xsd:attribute name = "Name" use = "required" type = "xsd:string"/>
			<xsd:attribute name = "Locked" default = "false" use="optional" type = "xsd:boolean"/>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name = "Nodes"> <!-- top level definition -->
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref = "Node" minOccurs = "0" maxOccurs = "unbounded"/>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name = "Node"> <!-- top level definition -->
		<xsd:complexType>
			<xsd:attribute name = "NodeID" use = "required" type = "xsd:string"/>
			<xsd:attribute name = "ProgramName" use = "required" type = "xsd:string"/>
			<xsd:attribute name = "IteratorTag" use="optional" type = "xsd:string"/>
			<xsd:attribute name = "NewRegionTag" use="optional" type = "xsd:string"/>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name = "Links"> <!-- top level definition -->
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref = "Link" minOccurs = "0" maxOccurs = "unbounded"/>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name = "Link"> <!-- top level definition -->
		<xsd:complexType>
			<xsd:attribute name = "FromNodeID" use = "required" type = "xsd:string"/>
			<xsd:attribute name = "FromOutputName" use = "required" type = "xsd:string"/>
			<xsd:attribute name = "ToNodeID" use = "required" type = "xsd:string"/>
			<xsd:attribute name = "ToInputName" use = "required" type = "xsd:string"/>
		</xsd:complexType>
	</xsd:element>
	<xsd:element name = "AnalysisChains"> <!-- top level definition -->
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element ref = "AnalysisChain" minOccurs = "0" maxOccurs = "unbounded"/>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
</xsd:schema>

