<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XML Spy v4.4 U (http://www.xmlspy.com) by Luis Jevons (Affymetrix, Inc.) -->
<!--
Entries in associated XML files are initialized by the Calvin system.
Modifying the files directly must be done with care.
Please see the comments below for areas of particular concern.
Modifying GUIDs is particularly dangerous.  The Calvin system populates empty GUIDs
whenever possible.  An error will be generated by the Calvin system if
an invalid or non-unique GUID is found.
-->

<!ELEMENT ArraySetFile (PhysicalArrays?, UserAttributes?)>

<!ELEMENT TemplateFile (UserAttributes?)>
<!--
The OriginalProjectName attribute is used as a "hint" when an orphaned ArraySetFile is found and its project
association is unclear.  The attribute is NOT used by the Calvin system.
The GUID attribute must be unique within the Calvin system.  The Calvin system will populate this GUID.
-->

<!ATTLIST ArraySetFile
	Type CDATA #FIXED "affymetrix-calvin-arraysetfile"
	Version CDATA #FIXED "1.0"
	GUID CDATA #REQUIRED
	OriginalProjectName CDATA #IMPLIED
	CreatedDateTime CDATA #IMPLIED
	CreatedBy CDATA #IMPLIED
	CreatedStep (None | ArrayRegistration | Scanning | Gridding | CELAnalysis | From | JobOrderServer | FileIndexer | Other) #IMPLIED
>
<!-- The GUID attribute must be unique within the Calvin system.  The Calvin system will populate this GUID. -->

<!ATTLIST TemplateFile
	Type CDATA #FIXED "affymetrix-calvin-template"
	Version CDATA #FIXED "1.0"
	GUID CDATA #REQUIRED
	CreatedDateTime CDATA #IMPLIED
	CreatedBy CDATA #IMPLIED
>

<!ELEMENT PhysicalArrays (PhysicalArray+)>

<!ELEMENT PhysicalArray (ArrayAttribute*)>
<!--
The GUID attribute must be unique within the Calvin system.
The Calvin system will populate this GUID.
The ArrayName attribute must be unique within the ArraySetFile.
The AffyBarcode attribute must be unique within the Calvin system.
The MediaFileName attribute refers to a Media File containing information about the physical media which houses the array.
The MediaFileGUID attribute is the GUID for the MediaFileName.
The LibraryPackageName attribute must refer to a "libraryPackageName" attribute within a specific FluidicsScripts element inside a Media File, and/or the "name" attribute of a specific LibraryFilePackage element within a Master File.
The MasterFileName and MediaFileName attributes are used as a "hint" for the user.
The Calvin system uses the MasterFileGUID and MediaFileGUID attributes to
uniquely identify the Master File or Media File, and does NOT use the value in the
MasterFileName or MediaFileName attributes.
-->

<!ATTLIST PhysicalArray
	Type CDATA #FIXED "affymetrix-calvin-array"
	GUID CDATA #REQUIRED
	ArrayName CDATA #REQUIRED
	AffyBarcode CDATA #IMPLIED
	MediaType (Cartridge | PlateOrStrip) #REQUIRED
	MediaRow CDATA #IMPLIED
	MediaCol CDATA #IMPLIED
	MediaFileName CDATA #IMPLIED
	MediaFileGUID CDATA #IMPLIED
	LibraryPackageName CDATA #REQUIRED
	MasterFileName CDATA #IMPLIED
	MasterFileGUID CDATA #REQUIRED
	PATAssignmentMethod (None | AffyBarcode | UserSelected | Other) #IMPLIED
	CreatedDateTime CDATA #IMPLIED
	CreatedBy CDATA #IMPLIED
	CreatedStep (None | ArrayRegistration | Scanning | Gridding | CELAnalysis | From | JobOrderServer | FileIndexer | Other) #IMPLIED
	Comment CDATA #IMPLIED
>

<!ELEMENT ArrayAttribute (#PCDATA)>
<!ATTLIST ArrayAttribute
	Name CDATA #REQUIRED
>

<!ELEMENT UserAttributes (UserAttribute*)>
<!ELEMENT UserAttribute (UserAttributeValue*, Control*)>
<!-- If the Required attribute is not present, the UserAttribute is NOT required. -->
<!-- If the DefaultValue attribute is not present, no default is assigned. -->
<!ATTLIST UserAttribute
	Name CDATA #REQUIRED
	Type (String | Int | Float | Date | Time | SingleControl | MultiControl) #REQUIRED
	Required (true | false) #IMPLIED
	DefaultValue CDATA #IMPLIED
  Namespace CDATA #IMPLIED
>

<!ELEMENT UserAttributeValue (#PCDATA)>

<!ELEMENT Control EMPTY>
<!ATTLIST Control
	Value CDATA #REQUIRED
>
