<?xml version="1.0"?>
<!-- edited with XMLSpy v2005 rel. 3 U (http://www.altova.com) by Yungjae Cho (ENVIRONMENT CANADA) -->
<!-- CMML v2.0  -->
<!-- For more information, refer to the CMML_control_document -->
<!-- Pour plus d'information, veuillez consulter le CMML_control_document_FR  -->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
	<xsd:complexType name="parametersType">
		<xsd:choice maxOccurs="unbounded">
			<xsd:element name="pressure" type="pressureType"/>
			<xsd:element name="wind" type="windType"/>
			<xsd:element name="temperature" type="temperatureType"/>
			<xsd:element name="precipitation" type="precipitationType"/>
			<xsd:element name="radiation" type="radiationType"/>
			<xsd:element name="visibility" type="visibilityType"/>
			<xsd:element name="pavement" type="pavementType"/>
			<xsd:element name="subsurface" type="subsurfaceType"/>
			<xsd:element name="snow" type="snowType"/>
			<xsd:element name="humidity" type="humidityType"/>
			<xsd:element name="air-quality" type="air-qualityType"/>
			<xsd:element name="weather" type="weatherType"/>
			<xsd:element name="physical-status" type="physical-statusType"/>
			<xsd:element name="extension" type="extensionType"/>
		</xsd:choice>
		<xsd:attribute name="applicable-location" type="non-emptyString" use="required"/>
	</xsd:complexType>
	<xsd:simpleType name="time-layoutAttributeType">
		<xsd:restriction base="xsd:string">
			<xsd:pattern value="k-p\d+[m|h|d|M|y]-n\d+-\d+"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="pressureType">
		<xsd:sequence>
			<xsd:element name="name" type="xsd:string" minOccurs="0"/>
			<xsd:element name="value" type="xsd:anyType" nillable="true" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="index" type="xsd:nonNegativeInteger" use="required"/>
		<xsd:attribute name="type" type="pressureTypeType" use="required"/>
		<xsd:attribute name="units" type="unitType" use="required"/>
		<xsd:attribute name="categorical-code" type="xsd:string" use="optional"/>
		<xsd:attribute name="height" type="xsd:nonNegativeInteger" use="optional"/>
		<xsd:attribute name="time-layout" type="time-layoutAttributeType" use="required"/>
		<xsd:attribute name="categorical-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="conversion-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="sampling-table" type="xsd:string" use="optional"/>
	</xsd:complexType>
	<xsd:complexType name="windType">
		<xsd:sequence>
			<xsd:element name="name" type="xsd:string" minOccurs="0"/>
			<xsd:element name="value" type="xsd:anyType" nillable="true" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="index" type="xsd:nonNegativeInteger" use="required"/>
		<xsd:attribute name="type" type="windTypeType" use="required"/>
		<xsd:attribute name="units" type="unitType" use="required"/>
		<xsd:attribute name="categorical-code" type="xsd:string" use="optional"/>
		<xsd:attribute name="height" type="xsd:nonNegativeInteger" use="optional"/>
		<xsd:attribute name="time-layout" type="time-layoutAttributeType" use="required"/>
		<xsd:attribute name="categorical-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="conversion-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="sampling-table" type="xsd:string" use="optional"/>
	</xsd:complexType>
	<xsd:complexType name="temperatureType">
		<xsd:sequence>
			<xsd:element name="name" type="xsd:string" minOccurs="0"/>
			<xsd:element name="value" type="xsd:anyType" nillable="true" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="index" type="xsd:nonNegativeInteger" use="required"/>
		<xsd:attribute name="type" type="temperatureTypeType" use="required"/>
		<xsd:attribute name="units" type="unitType" use="required"/>
		<xsd:attribute name="categorical-code" type="xsd:string" use="optional"/>
		<xsd:attribute name="height" type="xsd:nonNegativeInteger" use="optional"/>
		<xsd:attribute name="time-layout" type="time-layoutAttributeType" use="required"/>
		<xsd:attribute name="categorical-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="conversion-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="sampling-table" type="xsd:string" use="optional"/>
	</xsd:complexType>
	<xsd:complexType name="precipitationType">
		<xsd:sequence>
			<xsd:element name="name" type="xsd:string" minOccurs="0"/>
			<xsd:element name="value" type="xsd:anyType" nillable="true" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="index" type="xsd:nonNegativeInteger" use="required"/>
		<xsd:attribute name="type" type="precipitationTypeType" use="required"/>
		<xsd:attribute name="units" type="unitType" use="required"/>
		<xsd:attribute name="categorical-code" type="xsd:string" use="optional"/>
		<xsd:attribute name="height" type="xsd:nonNegativeInteger" use="optional"/>
		<xsd:attribute name="time-layout" type="time-layoutAttributeType" use="required"/>
		<xsd:attribute name="categorical-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="conversion-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="sampling-table" type="xsd:string" use="optional"/>
	</xsd:complexType>
	<xsd:complexType name="radiationType">
		<xsd:sequence>
			<xsd:element name="name" type="xsd:string" minOccurs="0"/>
			<xsd:element name="value" type="xsd:anyType" nillable="true" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="index" type="xsd:nonNegativeInteger" use="required"/>
		<xsd:attribute name="type" type="radiationTypeType" use="required"/>
		<xsd:attribute name="height" type="xsd:nonNegativeInteger" use="optional"/>
		<xsd:attribute name="units" type="unitType" use="required"/>
		<xsd:attribute name="categorical-code" type="xsd:string" use="optional"/>
		<xsd:attribute name="time-layout" type="time-layoutAttributeType" use="required"/>
		<xsd:attribute name="categorical-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="conversion-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="sampling-table" type="xsd:string" use="optional"/>
	</xsd:complexType>
	<xsd:complexType name="visibilityType">
		<xsd:sequence>
			<xsd:element name="name" type="xsd:string" minOccurs="0"/>
			<xsd:element name="value" type="xsd:anyType" nillable="true" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="index" type="xsd:nonNegativeInteger" use="required"/>
		<xsd:attribute name="type" type="visibilityTypeType" use="required"/>
		<xsd:attribute name="height" type="xsd:nonNegativeInteger" use="optional"/>
		<xsd:attribute name="units" type="unitType" use="required"/>
		<xsd:attribute name="categorical-code" type="xsd:string" use="optional"/>
		<xsd:attribute name="time-layout" type="time-layoutAttributeType" use="required"/>
		<xsd:attribute name="categorical-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="conversion-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="sampling-table" type="xsd:string" use="optional"/>
	</xsd:complexType>
	<xsd:complexType name="pavementType">
		<xsd:sequence>
			<xsd:element name="name" type="xsd:string" minOccurs="0"/>
			<xsd:element name="value" type="xsd:anyType" nillable="true" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="index" type="xsd:nonNegativeInteger" use="required"/>
		<xsd:attribute name="lane-number" type="xsd:nonNegativeInteger" use="optional"/>
		<xsd:attribute name="type" type="pavementTypeType" use="required"/>
		<xsd:attribute name="height" type="xsd:integer" use="optional"/>
		<xsd:attribute name="units" type="unitType" use="required"/>
		<xsd:attribute name="categorical-code" type="xsd:string" use="optional"/>
		<xsd:attribute name="time-layout" type="time-layoutAttributeType" use="required"/>
		<xsd:attribute name="categorical-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="conversion-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="sampling-table" type="xsd:string" use="optional"/>
	</xsd:complexType>
	<xsd:complexType name="subsurfaceType">
		<xsd:sequence>
			<xsd:element name="name" type="xsd:string" minOccurs="0"/>
			<xsd:element name="value" type="xsd:anyType" nillable="true" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="index" type="xsd:nonNegativeInteger" use="required"/>
		<xsd:attribute name="lane-number" type="xsd:nonNegativeInteger" use="optional" default="1"/>
		<xsd:attribute name="type" type="subsurfaceTypeType" use="required"/>
		<xsd:attribute name="sensor-depth" type="xsd:nonNegativeInteger" use="optional" default="5"/>
		<xsd:attribute name="units" type="unitType" use="required"/>
		<xsd:attribute name="categorical-code" type="xsd:string" use="optional"/>
		<xsd:attribute name="time-layout" type="time-layoutAttributeType" use="required"/>
		<xsd:attribute name="categorical-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="conversion-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="sampling-table" type="xsd:string" use="optional"/>
	</xsd:complexType>
	<xsd:complexType name="snowType">
		<xsd:sequence>
			<xsd:element name="name" type="xsd:string" minOccurs="0"/>
			<xsd:element name="value" type="xsd:anyType" nillable="true" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="index" type="xsd:nonNegativeInteger" use="required"/>
		<xsd:attribute name="type" type="snowTypeType" use="required"/>
		<xsd:attribute name="height" type="xsd:nonNegativeInteger" use="optional"/>
		<xsd:attribute name="units" type="unitType" use="required"/>
		<xsd:attribute name="categorical-code" type="xsd:string" use="optional"/>
		<xsd:attribute name="time-layout" type="time-layoutAttributeType" use="required"/>
		<xsd:attribute name="categorical-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="conversion-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="sampling-table" type="xsd:string" use="optional"/>
	</xsd:complexType>
	<xsd:complexType name="humidityType">
		<xsd:sequence>
			<xsd:element name="name" type="xsd:string" minOccurs="0"/>
			<xsd:element name="value" type="xsd:anyType" nillable="true" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="index" type="xsd:nonNegativeInteger" use="required"/>
		<xsd:attribute name="type" type="humidityTypeType" use="required"/>
		<xsd:attribute name="height" type="xsd:nonNegativeInteger" use="optional"/>
		<xsd:attribute name="units" type="unitType" use="required"/>
		<xsd:attribute name="categorical-code" type="xsd:string" use="optional"/>
		<xsd:attribute name="time-layout" type="time-layoutAttributeType" use="required"/>
		<xsd:attribute name="categorical-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="conversion-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="sampling-table" type="xsd:string" use="optional"/>
	</xsd:complexType>
	<xsd:complexType name="air-qualityType">
		<xsd:sequence>
			<xsd:element name="name" type="xsd:string" minOccurs="0"/>
			<xsd:element name="value" type="xsd:anyType" nillable="true" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="index" type="xsd:nonNegativeInteger" use="required"/>
		<xsd:attribute name="type" type="air-qualityTypeType" use="required"/>
		<xsd:attribute name="height" type="xsd:nonNegativeInteger" use="optional"/>
		<xsd:attribute name="units" type="unitType" use="required"/>
		<xsd:attribute name="categorical-code" type="xsd:string" use="optional"/>
		<xsd:attribute name="time-layout" type="time-layoutAttributeType" use="required"/>
		<xsd:attribute name="categorical-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="conversion-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="sampling-table" type="xsd:string" use="optional"/>
	</xsd:complexType>
	<xsd:complexType name="weatherType">
		<xsd:sequence>
			<xsd:element name="name" type="xsd:string" minOccurs="0"/>
			<xsd:element name="value" type="xsd:anyType" nillable="true" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="index" type="xsd:nonNegativeInteger" use="required"/>
		<xsd:attribute name="type" type="weatherTypeType" use="required"/>
		<xsd:attribute name="height" type="xsd:nonNegativeInteger" use="optional"/>
		<xsd:attribute name="units" type="unitType" use="required"/>
		<xsd:attribute name="categorical-code" type="xsd:string" use="optional"/>
		<xsd:attribute name="time-layout" type="time-layoutAttributeType" use="required"/>
		<xsd:attribute name="categorical-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="conversion-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="sampling-table" type="xsd:string" use="optional"/>
	</xsd:complexType>
	<xsd:complexType name="physical-statusType">
		<xsd:sequence>
			<xsd:element name="name" type="xsd:string" minOccurs="0"/>
			<xsd:element name="value" type="xsd:anyType" nillable="true" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="type" type="physical-statusTypeType" use="required"/>
		<xsd:attribute name="units" type="unitType" use="required"/>
		<xsd:attribute name="categorical-code" type="xsd:string" use="optional"/>
		<xsd:attribute name="time-layout" type="time-layoutAttributeType" use="required"/>
		<xsd:attribute name="categorical-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="conversion-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="sampling-table" type="xsd:string" use="optional"/>
	</xsd:complexType>
	<xsd:complexType name="extensionType">
		<xsd:sequence>
			<xsd:element name="name" type="xsd:string" minOccurs="0"/>
			<xsd:element name="value" type="xsd:anyType" nillable="true" maxOccurs="unbounded"/>
		</xsd:sequence>
		<xsd:attribute name="index" type="xsd:nonNegativeInteger" use="required"/>
		<xsd:attribute name="type" type="xsd:string" use="required"/>
		<xsd:attribute name="height" type="xsd:nonNegativeInteger" use="optional"/>
		<xsd:attribute name="units" type="unitType" use="required"/>
		<xsd:attribute name="categorical-code" type="xsd:string" use="optional"/>
		<xsd:attribute name="time-layout" type="time-layoutAttributeType" use="required"/>
		<xsd:attribute name="categorical-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="conversion-table" type="xsd:string" use="optional"/>
		<xsd:attribute name="sampling-table" type="xsd:string" use="optional"/>
	</xsd:complexType>
</xsd:schema>
