<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="marineData">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="dateTime" type="DATE_TIME" minOccurs="2" maxOccurs="2"/>
				<xs:element name="area">
					<xs:complexType>
						<xs:simpleContent>
							<xs:extension base="xs:string">
								<xs:attribute name="countryCode" type="xs:string" fixed="CA" use="required"/>
								<xs:attribute name="region" type="xs:string" use="required"/>
								<xs:attribute name="subRegion" type="xs:string" use="required"/>
							</xs:extension>
						</xs:simpleContent>
					</xs:complexType>
				</xs:element>
				<xs:element name="warnings">
					<xs:complexType>
						<xs:sequence minOccurs="0" maxOccurs="3">
							<xs:element name="location">
								<xs:complexType>
									<xs:sequence maxOccurs="5">
										<xs:element name="event">
											<xs:complexType>
												<xs:sequence minOccurs="2" maxOccurs="2">
													<xs:element name="dateTime" type="DATE_TIME"/>
												</xs:sequence>
												<xs:attribute name="type" type="xs:string" use="required"/>
												<xs:attribute name="category" type="WARNING_CATEGORY_ENUM" use="required"/>
												<xs:attribute name="name" type="xs:string" use="required"/>
												<xs:attribute name="status" type="xs:string" use="required"/>
											</xs:complexType>
										</xs:element>
									</xs:sequence>
									<xs:attribute name="name" type="xs:string"/>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="regularForecast">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="dateTime" type="DATE_TIME" minOccurs="2" maxOccurs="2"/>
							<xs:element name="location" maxOccurs="3">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="weatherCondition">
											<xs:complexType>
												<xs:sequence minOccurs="0">
													<xs:element name="periodOfCoverage" type="xs:string"/>
													<xs:element name="wind" type="xs:string"/>
													<xs:element name="weatherVisibility" type="xs:string"/>
													<xs:element name="airTemperature" type="xs:string"/>
													<xs:element name="freezingSpray" type="xs:string"/>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
										<xs:element name="statusStatement" type="STATUS_STATEMENT"/>
									</xs:sequence>
									<xs:attribute name="name" type="xs:string"/>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="extendedForecast">
					<xs:complexType>
						<xs:sequence>
							<xs:element name="dateTime" type="DATE_TIME" minOccurs="0" maxOccurs="2"/>
							<xs:element name="location" minOccurs="0" maxOccurs="3">
								<xs:complexType>
									<xs:sequence minOccurs="0">
										<xs:element name="weatherCondition">
											<xs:complexType>
												<xs:sequence minOccurs="3" maxOccurs="3">
													<xs:element name="forecastPeriod">
														<xs:complexType>
															<xs:simpleContent>
																<xs:extension base="xs:string">
																	<xs:attribute name="name" type="DAY_NAME_ENUM"  use="required"/>
																</xs:extension>
															</xs:simpleContent>
														</xs:complexType>
													</xs:element>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
										<xs:element name="statusStatement" type="STATUS_STATEMENT"/>
									</xs:sequence>
									<xs:attribute name="name" type="xs:string"/>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
				<xs:element name="waveForecast">
					<xs:complexType>
						<xs:sequence minOccurs="0">
							<xs:element name="dateTime" type="DATE_TIME" maxOccurs="2"/>
							<xs:element name="location" maxOccurs="3">
								<xs:complexType>
									<xs:sequence>
										<xs:element name="weatherCondition">
											<xs:complexType>
												<xs:sequence minOccurs="0">
													<xs:element name="periodOfCoverage" type="xs:string"/>
													<xs:element name="textSummary" type="xs:string"/>
												</xs:sequence>
											</xs:complexType>
										</xs:element>
										<xs:element name="statusStatement" type="STATUS_STATEMENT"/>
									</xs:sequence>
									<xs:attribute name="name" type="xs:string"/>
								</xs:complexType>
							</xs:element>
						</xs:sequence>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	
	<xs:complexType name="DATE_TIME">
		<xs:sequence>
			<xs:element name="year" type="xs:short"/>
			<xs:element name="month">
				<xs:complexType>
					<xs:simpleContent>
						<xs:extension base="MONTH_ENUM">
							<xs:attribute name="name" type="MONTH_NAME_ENUM"/>
						</xs:extension>
					</xs:simpleContent>
				</xs:complexType>
			</xs:element>
			<xs:element name="day">
				<xs:complexType>
					<xs:simpleContent>
						<xs:extension base="DAY_ENUM">
							<xs:attribute name="name" type="DAY_NAME_ENUM"/>
						</xs:extension>
					</xs:simpleContent>
				</xs:complexType>
			</xs:element>
			<xs:element name="hour" type="HOUR_ENUM"/>
			<xs:element name="minute" type="MINUTE_ENUM"/>
			<xs:element name="timeStamp" type="xs:long"/>
			<xs:element name="textSummary" type="xs:string"/>
		</xs:sequence>
		<xs:attribute name="name" type="DATE_TIME_NAME_ENUM"  use="required"/>
		<xs:attribute name="zone" type="ZONE_ENUM" use="required"/>
		<xs:attribute name="UTCOffset" type="xs:decimal" use="required"/>
	</xs:complexType>
	
	<xs:complexType name="STATUS_STATEMENT">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="href" type="xs:anyURI"/>
				<xs:attribute name="note" type="xs:string"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	
	<xs:simpleType name="DATE_TIME_NAME_ENUM">
		<xs:restriction base="xs:string">
			<xs:enumeration value="xmlCreation"/>
			<xs:enumeration value="Issued"/>
			<xs:enumeration value="Émis"/>
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="ZONE_ENUM">
		<xs:restriction base="xs:string">
			<xs:enumeration value="UTC"/>
			<xs:enumeration value="NDT"/>
			<xs:enumeration value="NST"/>
			<xs:enumeration value="ADT"/>
			<xs:enumeration value="AST"/>
			<xs:enumeration value="EDT"/>
			<xs:enumeration value="EST"/>
			<xs:enumeration value="CDT"/>
			<xs:enumeration value="CST"/>
			<xs:enumeration value="MDT"/>
			<xs:enumeration value="MST"/>
			<xs:enumeration value="PDT"/>
			<xs:enumeration value="PST"/>
			<xs:enumeration value="HAT"/>
			<xs:enumeration value="HNT"/>
			<xs:enumeration value="HAA"/>
			<xs:enumeration value="HNA"/>
			<xs:enumeration value="HAE"/>
			<xs:enumeration value="HNE"/>
			<xs:enumeration value="HAC"/>
			<xs:enumeration value="HNC"/>
			<xs:enumeration value="HAR"/>
			<xs:enumeration value="HNR"/>
			<xs:enumeration value="HAP"/>
			<xs:enumeration value="HNP"/>
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="UTCOFFSET_ENUM">
		<xs:restriction base="xs:decimal">
			<xs:enumeration value="0"/>
			<xs:enumeration value="-2.5"/>
			<xs:enumeration value="-3.5"/>
			<xs:enumeration value="-4"/>
			<xs:enumeration value="-5"/>
			<xs:enumeration value="-6"/>
			<xs:enumeration value="-7"/>
			<xs:enumeration value="-8"/>
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="MONTH_NAME_ENUM">
		<xs:restriction base="xs:string">
			<xs:pattern value="[Jj]anuary"/>
			<xs:pattern value="[Ff]ebruary"/>
			<xs:pattern value="[Mm]arch"/>
			<xs:pattern value="[Aa]pril"/>
			<xs:pattern value="[Mm]ay"/>
			<xs:pattern value="[Jj]une"/>
			<xs:pattern value="[Jj]uly"/>
			<xs:pattern value="[Aa]ugust"/>
			<xs:pattern value="[Ss]eptember"/>
			<xs:pattern value="[Oo]ctober"/>
			<xs:pattern value="[Nn]ovember"/>
			<xs:pattern value="[Dd]ecember"/>
			<xs:pattern value="[Jj]anvier"/>
			<xs:pattern value="[Ff]évrier"/>
			<xs:pattern value="[Mm]ars"/>
			<xs:pattern value="[Aa]vril"/>
			<xs:pattern value="[Mm]ai"/>
			<xs:pattern value="[Jj]uin"/>
			<xs:pattern value="[Jj]uillet"/>
			<xs:pattern value="[Aa]oût"/>
			<xs:pattern value="[Ss]eptembre"/>
			<xs:pattern value="[Oo]ctobre"/>
			<xs:pattern value="[Nn]ovembre"/>
			<xs:pattern value="[Dd]écembre"/>
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="DAY_NAME_ENUM">
		<xs:restriction base="xs:string">
			<xs:pattern value="[Mm]onday"/>
			<xs:pattern value="[Tt]uesday"/>
			<xs:pattern value="[Ww]ednesday"/>
			<xs:pattern value="[Tt]hursday"/>
			<xs:pattern value="[Ff]riday"/>
			<xs:pattern value="[Ss]aturday"/>
			<xs:pattern value="[Ss]unday"/>
			<xs:pattern value="[Ll]undi"/>
			<xs:pattern value="[Mm]ardi"/>
			<xs:pattern value="[Mm]ercredi"/>
			<xs:pattern value="[Jj]eudi"/>
			<xs:pattern value="[Vv]endredi"/>
			<xs:pattern value="[Ss]amedi"/>
			<xs:pattern value="[Dd]imanche"/>
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="DAY_ENUM">
		<xs:restriction base="xs:byte">
			<xs:minInclusive value="01"/>
			<xs:maxInclusive value="31"/>
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="MONTH_ENUM">
		<xs:restriction base="xs:byte">
			<xs:minInclusive value="01"/>
			<xs:maxInclusive value="12"/>
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="HOUR_ENUM">
		<xs:restriction base="xs:byte">
			<xs:minInclusive value="00"/>
			<xs:maxInclusive value="23"/>
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="MINUTE_ENUM">
		<xs:restriction base="xs:byte">
			<xs:minInclusive value="00"/>
			<xs:maxInclusive value="59"/>
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="WARNING_CATEGORY_ENUM">
		<xs:restriction base="xs:string">
			<xs:enumeration value="marine"/>
			<xs:enumeration value="ice"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>
