<?xml version="1.0" encoding="UTF-8"?>
<xs:schema elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<!-- ======================== Date Format ========================= -->
	<xs:complexType name="dateStampType">
		<xs:sequence minOccurs="0">
			<xs:element name="year" type="yearType"/>
			<xs:element name="month" type="monthType"/>
			<xs:element name="day" type="dayType"/>
			<xs:element name="hour" type="hourType"/>
			<xs:element name="minute" type="minuteType"/>
			<xs:element name="timeStamp" type="timeStampType"/>
			<xs:element name="textSummary" type="textSummaryType"/>
		</xs:sequence>
		<xs:attribute name="name" type="dateStampNameType"/>
		<xs:attribute name="zone" type="validTimeZones"/>
		<xs:attribute name="UTCOffset" type="validUTCOffset"/>
	</xs:complexType>
	<xs:simpleType name="dateStampNameType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="observation"/>
			<xs:enumeration value="xmlCreation"/>
			<xs:enumeration value="forecastIssue"/>
			<xs:enumeration value="eventIssue"/>
			<xs:enumeration value="sunrise"/>
			<xs:enumeration value="sunset"/>
			<xs:enumeration value="moonrise"/>
			<xs:enumeration value="moonset"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="validTimeZones">
		<xs:restriction base="xs:string">
			<xs:enumeration value="ADT"/>
			<xs:enumeration value="AST"/>
			<xs:enumeration value="CDT"/>
			<xs:enumeration value="CST"/>
			<xs:enumeration value="EDT"/>
			<xs:enumeration value="EST"/>
			<xs:enumeration value="MDT"/>
			<xs:enumeration value="MST"/>
			<xs:enumeration value="NST"/>
			<xs:enumeration value="NDT"/>
			<xs:enumeration value="PDT"/>
			<xs:enumeration value="PST"/>
			<xs:enumeration value="HAA"/>
			<xs:enumeration value="HNA"/>
			<xs:enumeration value="HAC"/>
			<xs:enumeration value="HNC"/>
			<xs:enumeration value="HAE"/>
			<xs:enumeration value="HNE"/>
			<xs:enumeration value="HAR"/>
			<xs:enumeration value="HNR"/>
			<xs:enumeration value="HAT"/>
			<xs:enumeration value="HNT"/>
			<xs:enumeration value="HAP"/>
			<xs:enumeration value="HNP"/>
			<xs:enumeration value="UTC"/>
			<xs:enumeration value=""/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="validUTCOffset">
		<xs:restriction base="xs:decimal">
			<xs:minInclusive value="-8"/>
			<xs:maxInclusive value="0"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="yearType">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:pattern value="\d{4}"/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="xs:gYear"/>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:complexType name="monthType">
		<xs:simpleContent>
			<xs:extension base="validMonthNumbers">
				<xs:attribute name="name" type="validMonthNames" use="required"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:simpleType name="validMonthNumbers">
		<xs:restriction base="xs:integer">
			<xs:minInclusive value="1"/>
			<xs:maxInclusive value="12"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="validMonthNames">
		<xs:restriction base="xs:string">
			<xs:enumeration value="January"/>
			<xs:enumeration value="February"/>
			<xs:enumeration value="March"/>
			<xs:enumeration value="April"/>
			<xs:enumeration value="May"/>
			<xs:enumeration value="June"/>
			<xs:enumeration value="July"/>
			<xs:enumeration value="August"/>
			<xs:enumeration value="September"/>
			<xs:enumeration value="October"/>
			<xs:enumeration value="November"/>
			<xs:enumeration value="December"/>
			<xs:enumeration value="janvier"/>
			<xs:enumeration value="février"/>
			<xs:enumeration value="mars"/>
			<xs:enumeration value="avril"/>
			<xs:enumeration value="mai"/>
			<xs:enumeration value="juin"/>
			<xs:enumeration value="juillet"/>
			<xs:enumeration value="août"/>
			<xs:enumeration value="septembre"/>
			<xs:enumeration value="octobre"/>
			<xs:enumeration value="novembre"/>
			<xs:enumeration value="décembre"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="dayType">
		<xs:simpleContent>
			<xs:extension base="validDayNumbers">
				<xs:attribute name="name" type="validDayNames" use="required"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:simpleType name="validDayNumbers">
		<xs:restriction base="xs:positiveInteger">
			<xs:minInclusive value="1"/>
			<xs:maxInclusive value="31"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="validDayNames">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Today"/>
			<xs:enumeration value="Tonight"/>
			<xs:enumeration value="Monday"/>
			<xs:enumeration value="Monday night"/>
			<xs:enumeration value="Tuesday"/>
			<xs:enumeration value="Tuesday night"/>
			<xs:enumeration value="Wednesday"/>
			<xs:enumeration value="Wednesday night"/>
			<xs:enumeration value="Thursday"/>
			<xs:enumeration value="Thursday night"/>
			<xs:enumeration value="Friday"/>
			<xs:enumeration value="Friday night"/>
			<xs:enumeration value="Saturday"/>
			<xs:enumeration value="Saturday night"/>
			<xs:enumeration value="Sunday"/>
			<xs:enumeration value="Sunday night"/>
			<xs:enumeration value="Aujourd'hui"/>
			<xs:enumeration value="Ce soir et cette nuit"/>
			<xs:enumeration value="ce soir et cette nuit"/>
			<xs:enumeration value="Lundi"/>
			<xs:enumeration value="Lundi soir et nuit"/>
			<xs:enumeration value="lundi soir et nuit"/>
			<xs:enumeration value="Mardi"/>
			<xs:enumeration value="Mardi soir et nuit"/>
			<xs:enumeration value="mardi soir et nuit"/>
			<xs:enumeration value="Mercredi"/>
			<xs:enumeration value="Mercredi soir et nuit"/>
			<xs:enumeration value="mercredi soir et nuit"/>
			<xs:enumeration value="Jeudi"/>
			<xs:enumeration value="Jeudi soir et nuit"/>
			<xs:enumeration value="jeudi soir et nuit"/>
			<xs:enumeration value="Vendredi"/>
			<xs:enumeration value="Vendredi soir et nuit"/>
			<xs:enumeration value="vendredi soir et nuit"/>
			<xs:enumeration value="Samedi"/>
			<xs:enumeration value="Samedi soir et nuit"/>
			<xs:enumeration value="samedi soir et nuit"/>
			<xs:enumeration value="Dimanche"/>
			<xs:enumeration value="Dimanche soir et nuit"/>
			<xs:enumeration value="dimanche soir et nuit"/>
			<xs:enumeration value="lundi"/>
			<xs:enumeration value="mardi"/>
			<xs:enumeration value="mercredi"/>
			<xs:enumeration value="jeudi"/>
			<xs:enumeration value="vendredi"/>
			<xs:enumeration value="samedi"/>
			<xs:enumeration value="dimanche"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="hourType">
		<xs:simpleContent>
			<xs:extension base="validHours"/>
		</xs:simpleContent>
	</xs:complexType>
	<xs:simpleType name="validHours">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value=""/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="xs:integer">
					<xs:minInclusive value="0"/>
					<xs:maxInclusive value="23"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="minuteType">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value=""/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="xs:integer">
					<xs:minInclusive value="0"/>
					<xs:maxInclusive value="59"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="timeStampType">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:string">
					<xs:enumeration value=""/>
				</xs:restriction>
			</xs:simpleType>
			<xs:simpleType>
				<xs:restriction base="xs:integer">
					<xs:totalDigits value="14"/>
					<xs:pattern value="\d{14}"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<xs:simpleType name="dateTimeUTCType">
		<xs:union>
			<xs:simpleType>
				<xs:restriction base="xs:integer">
					<xs:totalDigits value="12"/>
					<xs:pattern value="\d{12}"/>
				</xs:restriction>
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	<!-- ======================== Location Format ========================= -->
	<xs:complexType name="locationType">
		<xs:sequence>
			<xs:element name="continent" type="continentType"/>
			<xs:element name="country" type="countryType"/>
			<xs:element name="province" type="provinceType"/>
			<xs:element name="name" type="nameType"/>
			<xs:element name="region" type="regionType"/>
		</xs:sequence>
	</xs:complexType>
	<xs:simpleType name="continentType">
		<xs:restriction base="xs:string"/>
	</xs:simpleType>
	<xs:complexType name="countryType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="code" type="xs:string"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="provinceType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="code" type="xs:string"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:complexType name="nameType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="code" type="validLocationCodeType"/>
				<xs:attribute name="lat" type="validLocationLatLonType"/>
				<xs:attribute name="lon" type="validLocationLatLonType"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
	<xs:simpleType name="validLocationCodeType">
		<xs:restriction base="xs:string">
			<xs:pattern value="\w\d{7}"/>
		</xs:restriction>
	</xs:simpleType>
   <xs:simpleType name="validLocationLatLonType">
      <xs:restriction base="xs:string">
	     <xs:pattern value="\d{1,3}\.\d{2,3}[NWSEO]{1,2}"/>
	     </xs:restriction>
   </xs:simpleType>
	<xs:complexType name="regionType">
		<xs:simpleContent>
			<xs:extension base="xs:string">
				<xs:attribute name="code" type="xs:string"/>
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>
</xs:schema>
