<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xs:include schemaLocation="Defaults.xsd"/>
	<xs:include schemaLocation="Fields.xsd"/>
	<xs:simpleType name="CONTENT-VERSION_Type">
		<xs:restriction base="xs:float">
			<xs:enumeration value="2019"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="PROD-DIST-METHOD_Type">
		<xs:restriction base="xs:string">
			<xs:enumeration value="URI"/>
			<xs:enumeration value="MSG"/>
			<xs:enumeration value="Notify"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:element name="PROD-SUBTYPE">
		<xs:complexType>
			<xs:all>
				<xs:element name="NAME" minOccurs="0">
					<xs:annotation>
						<xs:documentation>First subcategory of the product subtype. (Subject elements ME5, ME6, etc.)</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:simpleContent>
							<xs:extension base="xs:string">
								<xs:attribute name="TYPE" type="FIELD_Type" fixed="STRING"/>
							</xs:extension>
						</xs:simpleContent>
					</xs:complexType>
				</xs:element>
			</xs:all>
			<xs:attribute name="INDEX" type="xs:unsignedShort" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="FILE">
		<xs:complexType>
			<xs:all>
				<xs:element name="URI" minOccurs="0">
					<xs:annotation>
						<xs:documentation>URI specifying the location where the file of the product is stored</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:simpleContent>
							<xs:extension base="xs:string">
								<xs:attribute name="TYPE" type="FIELD_Type" fixed="STRING"/>
							</xs:extension>
						</xs:simpleContent>
					</xs:complexType>
				</xs:element>
				<xs:element name="NAME-PATTERN" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Describes the file name</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:simpleContent>
							<xs:extension base="xs:string">
								<xs:attribute name="TYPE" type="FIELD_Type" fixed="STRING"/>
							</xs:extension>
						</xs:simpleContent>
					</xs:complexType>
				</xs:element>
				<xs:element name="DESCRIPTION" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Description of the file in text or xml</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:simpleContent>
							<xs:extension base="xs:string">
								<xs:attribute name="TYPE" type="FIELD_Type" fixed="STRING"/>
							</xs:extension>
						</xs:simpleContent>
					</xs:complexType>
				</xs:element>
				<xs:element name="FORMAT" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Describes the file format.</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:simpleContent>
							<xs:extension base="xs:string">
								<xs:attribute name="TYPE" type="FIELD_Type" fixed="STRING"/>
							</xs:extension>
						</xs:simpleContent>
					</xs:complexType>
				</xs:element>
				<xs:element name="VERSION" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Identifies the version ID of the file</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:simpleContent>
							<xs:extension base="xs:string">
								<xs:attribute name="TYPE" type="FIELD_Type" fixed="STRING"/>
							</xs:extension>
						</xs:simpleContent>
					</xs:complexType>
				</xs:element>
				<xs:element name="SIZE" minOccurs="0">
					<xs:annotation>
						<xs:documentation>Size of the included file</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:simpleContent>
							<xs:extension base="xs:unsignedInt">
								<xs:attribute name="TYPE" type="FIELD_Type" fixed="U32"/>
							</xs:extension>
						</xs:simpleContent>
					</xs:complexType>
				</xs:element>
				<xs:element name="DATA" minOccurs="0">
					<xs:annotation>
						<xs:documentation>The file content</xs:documentation>
					</xs:annotation>
					<xs:complexType>
						<xs:simpleContent>
							<xs:extension base="xs:hexBinary">
								<xs:attribute name="TYPE" type="FIELD_Type" fixed="BINARY"/>
							</xs:extension>
						</xs:simpleContent>
					</xs:complexType>
				</xs:element>
			</xs:all>
			<xs:attribute name="INDEX" type="xs:unsignedShort" use="required"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="MSG.PROD">
		<xs:complexType>
			<xs:all>
				<xs:element name="SUBJECT" type="C2MS_SUBJECT_Type"/>
				<xs:element name="CONTENT">
					<xs:complexType>
						<xs:all>
							<xs:element name="CONTENT-VERSION">
								<xs:annotation>
									<xs:documentation>Version Number for this message content description</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:simpleContent>
										<xs:extension base="CONTENT-VERSION_Type">
											<xs:attribute name="TYPE" type="FIELD_Type" fixed="F32"/>
										</xs:extension>
									</xs:simpleContent>
								</xs:complexType>
							</xs:element>
							<xs:element name="RESPONSE-STATUS" minOccurs="0">
								<xs:annotation>
									<xs:documentation>Identifies the status of the Product Message that was processed. Note: Even though a Request is valid, a product may not be able to be successfully generated. In this case the following Product Message would indicate a Failed Completion.</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:simpleContent>
										<xs:extension base="RESPONSE-STATUS_Type">
											<xs:attribute name="TYPE" type="FIELD_Type" fixed="I16"/>
										</xs:extension>
									</xs:simpleContent>
								</xs:complexType>
							</xs:element>
							<xs:element name="FINAL-MESSAGE" minOccurs="0">
								<xs:annotation>
									<xs:documentation>When true, indicates the last message in the stream.</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:simpleContent>
										<xs:extension base="xs:boolean">
											<xs:attribute name="TYPE" type="FIELD_Type" fixed="BOOLEAN"/>
										</xs:extension>
									</xs:simpleContent>
								</xs:complexType>
							</xs:element>
							<xs:element name="TIME-COMPLETED" minOccurs="0">
								<xs:annotation>
									<xs:documentation>Time application created the product</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:simpleContent>
										<xs:extension base="TIME_Type">
											<xs:attribute name="TYPE" type="FIELD_Type" fixed="STRING"/>
										</xs:extension>
									</xs:simpleContent>
								</xs:complexType>
							</xs:element>
							<xs:element name="RETURN-VALUE" minOccurs="0">
								<xs:annotation>
									<xs:documentation>Return value or status based on the RESPONSE-STATUS. Used to provide function call status or error code in the case of failed completion</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:simpleContent>
										<xs:extension base="xs:int">
											<xs:attribute name="TYPE" type="FIELD_Type" fixed="I32"/>
										</xs:extension>
									</xs:simpleContent>
								</xs:complexType>
							</xs:element>
							<xs:element name="DELIVER-VIA-REFERENCE" minOccurs="0">
								<xs:annotation>
									<xs:documentation>Indicates the product is referenced by a URI. A product can be included in a message, referenced by a URI, or both.</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:simpleContent>
										<xs:extension base="xs:boolean">
											<xs:attribute name="TYPE" type="FIELD_Type" fixed="BOOLEAN"/>
										</xs:extension>
									</xs:simpleContent>
								</xs:complexType>
							</xs:element>
							<xs:element name="DELIVER-VIA-INCLUDE" minOccurs="0">
								<xs:annotation>
									<xs:documentation>Indicates the product is included in this message. A product can be included in a message, referenced by a URI, or both.</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:simpleContent>
										<xs:extension base="xs:boolean">
											<xs:attribute name="TYPE" type="FIELD_Type" fixed="BOOLEAN"/>
										</xs:extension>
									</xs:simpleContent>
								</xs:complexType>
							</xs:element>
							<xs:element name="PROD-MSGS-TO-SEND" minOccurs="0">
								<xs:annotation>
									<xs:documentation>Indicates the number of Product Messages that will be published to satisfy the PROD REQ</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:simpleContent>
										<xs:extension base="xs:unsignedShort">
											<xs:attribute name="TYPE" type="FIELD_Type" fixed="U16"/>
										</xs:extension>
									</xs:simpleContent>
								</xs:complexType>
							</xs:element>
							<xs:element name="PROD-SEQ-NUM" minOccurs="0">
								<xs:annotation>
									<xs:documentation>Indicates which message this is in the sequence of Product Messages that constitutes a product</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:simpleContent>
										<xs:extension base="NATURAL_Type">
											<xs:attribute name="TYPE" type="FIELD_Type" fixed="U16"/>
										</xs:extension>
									</xs:simpleContent>
								</xs:complexType>
							</xs:element>
							<xs:element name="PROD-NAME" minOccurs="0">
								<xs:annotation>
									<xs:documentation>Name of the product</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:simpleContent>
										<xs:extension base="xs:string">
											<xs:attribute name="TYPE" type="FIELD_Type" fixed="STRING"/>
										</xs:extension>
									</xs:simpleContent>
								</xs:complexType>
							</xs:element>
							<xs:element name="PROD-DESCRIPTION" minOccurs="0">
								<xs:annotation>
									<xs:documentation>Description of the product in text or xml</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:simpleContent>
										<xs:extension base="xs:string">
											<xs:attribute name="TYPE" type="FIELD_Type" fixed="STRING"/>
										</xs:extension>
									</xs:simpleContent>
								</xs:complexType>
							</xs:element>
							<xs:element name="PROD-TYPE">
								<xs:annotation>
									<xs:documentation>Category of product. Could be echo of the PROD-TYPE field from the Product Request message</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:simpleContent>
										<xs:extension base="PROD-TYPE_Type">
											<xs:attribute name="TYPE" type="FIELD_Type" fixed="STRING"/>
										</xs:extension>
									</xs:simpleContent>
								</xs:complexType>
							</xs:element>
							<xs:element name="PROD-SUBTYPE">
								<xs:annotation>
									<xs:documentation>Subcategory of the product. Could be echo of the PROD-SUBTYPE field of the Product Request Message</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:simpleContent>
										<xs:extension base="xs:string">
											<xs:attribute name="TYPE" type="FIELD_Type" fixed="STRING"/>
										</xs:extension>
									</xs:simpleContent>
								</xs:complexType>
							</xs:element>
							<xs:element name="REQUEST-ID">
								<xs:annotation>
									<xs:documentation>This field’s value is to be the same as the REQUEST-ID the associated REQ message. </xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:simpleContent>
										<xs:extension base="xs:unsignedShort">
											<xs:attribute name="TYPE" type="FIELD_Type" fixed="U16"/>
										</xs:extension>
									</xs:simpleContent>
								</xs:complexType>
							</xs:element>
							<xs:element name="NUM-OF-PROD-SUBTYPES" minOccurs="0">
								<xs:annotation>
									<xs:documentation>Number of further delineations / categories beyond the product subtype. Also, used as msg subject elements ME5, ME6, etc. in Product Message.</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:simpleContent>
										<xs:extension base="NATURAL_Type">
											<xs:attribute name="TYPE" type="FIELD_Type" fixed="U16"/>
										</xs:extension>
									</xs:simpleContent>
								</xs:complexType>
							</xs:element>
							<xs:element name="PROD-SUBTYPES" minOccurs="0">
								<xs:complexType>
									<xs:sequence>
										<xs:element ref="PROD-SUBTYPE" minOccurs="0" maxOccurs="100"/>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
							<xs:element name="NUM-OF-FILES">
								<xs:annotation>
									<xs:documentation>Indicates the number of files included in this response message.</xs:documentation>
								</xs:annotation>
								<xs:complexType>
									<xs:simpleContent>
										<xs:extension base="xs:unsignedShort">
											<xs:attribute name="TYPE" type="FIELD_Type" fixed="U16"/>
										</xs:extension>
									</xs:simpleContent>
								</xs:complexType>
							</xs:element>
							<xs:element name="FILES" minOccurs="0">
								<xs:complexType>
									<xs:sequence>
										<xs:element ref="FILE" minOccurs="0" maxOccurs="100"/>
									</xs:sequence>
								</xs:complexType>
							</xs:element>
						</xs:all>
					</xs:complexType>
				</xs:element>
			</xs:all>
		</xs:complexType>
	</xs:element>
</xs:schema>
