<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="response" >
    			<xsd:complexType >
				<xsd:sequence >
				    <xsd:element ref="request_index" />
					<xsd:element ref="data_source"  />
					<xsd:element ref="request"/>
					<xsd:element ref="errors"/>
					<xsd:element ref="warnings"/>
					<xsd:element ref="time_taken_ms"/>
					<xsd:element ref="data"/>
				</xsd:sequence>
				<xsd:attribute name="version" type="xsd:string" default="1.0"/>
			</xsd:complexType>
		</xsd:element>
		
		<xsd:element name="request_index" type="xsd:int"/>
		<xsd:element name="data_source" >
			<xsd:complexType>
				<xsd:attribute name="name" type="xsd:string"/>
			</xsd:complexType>
				</xsd:element>
		<xsd:element name="request" >
			<xsd:complexType>
					<xsd:attribute name="type" type="xsd:string" />
			</xsd:complexType>
		</xsd:element>
		<xsd:element name="errors">
			<xsd:complexType>
				<xsd:sequence minOccurs="0" >
					<xsd:element ref="error" />
				</xsd:sequence>
			</xsd:complexType>
		</xsd:element>
		<xsd:element name="warnings">
			<xsd:complexType>
				<xsd:sequence minOccurs="0">
					<xsd:element ref="warning" />
				</xsd:sequence>
			</xsd:complexType>
		</xsd:element>
		<xsd:element name="data" >
			<xsd:complexType>
				<xsd:sequence minOccurs="0" maxOccurs="unbounded">
					<xsd:element ref="TAF"/>
				</xsd:sequence>
				<xsd:attribute name="num_results" type="xsd:int"/>
			</xsd:complexType>
		</xsd:element>
		<xsd:element name="warning" type="xsd:string"/>
		<xsd:element name="error" type="xsd:string"/>
		<xsd:element name="time_taken_ms" type="xsd:int"/>
		<xsd:attribute name="num_results" type="xsd:int"/>
		
		<xsd:element name="TAF">
			<xsd:complexType>
				<xsd:sequence>
					<xsd:element ref="raw_text" minOccurs="0"/>
					<xsd:element ref="station_id" minOccurs="0"/>
					<xsd:element ref="issue_time" minOccurs="0"/>
					<xsd:element ref="bulletin_time" minOccurs="0"/>
					<xsd:element ref="valid_time_from" minOccurs="0"/>
					<xsd:element ref="valid_time_to" minOccurs="0"/>
					<xsd:element ref="remarks" minOccurs="0"/>
					<xsd:element ref="latitude" minOccurs="0"/>
					<xsd:element ref="longitude" minOccurs="0"/>
					<xsd:element ref="elevation_m" minOccurs="0"/>
					<xsd:element ref="forecast" minOccurs="0" maxOccurs="unbounded"/>
					
				</xsd:sequence>
			</xsd:complexType>
		</xsd:element>
	    
	    <xsd:element name="raw_text" type="xsd:string"/>
	    <xsd:element name="station_id" type="xsd:string"/>
	    <xsd:element name="issue_time" type="xsd:int"/>
	    <xsd:element name="bulletin_time" type="xsd:int"/>
	    <xsd:element name="valid_time_from" type="xsd:int"/>
	    <xsd:element name="valid_time_to"  type="xsd:int"/>
	    <xsd:element name="remarks" type="xsd:string"/>
	    <xsd:element name="latitude" type="xsd:float"/>
	    <xsd:element name="longitude" type="xsd:float"/>
	    <xsd:element name="elevation_m" type="xsd:float"/>
	    
	    <xsd:element name="forecast">
	    	<xsd:complexType>
	    		<xsd:sequence>
	    			<xsd:element ref="fcst_time_from" minOccurs="0"/>
					<xsd:element ref="fcst_time_to" minOccurs="0"/>
					<xsd:element ref="change_indicator" minOccurs="0"/>
					<xsd:element ref="time_becoming" minOccurs="0"/>
					<xsd:element ref="probability" minOccurs="0"/>
					<xsd:element ref="wind_dir_degrees" minOccurs="0"/>
					<xsd:element ref="wind_speed_kt" minOccurs="0"/>
					<xsd:element ref="wind_gust_kt" minOccurs="0"/>
					<xsd:element ref="wind_shear_hgt_ft" minOccurs="0"/>
					<xsd:element ref="wind_shear_dir_degrees" minOccurs="0"/>
					<xsd:element ref="wind_shear_speed_kt" minOccurs="0"/>
					<xsd:element ref="visibility_mi" minOccurs="0"/>
					<xsd:element ref="altim_mb" minOccurs="0"/>
					<xsd:element ref="vert_vis_ft" minOccurs="0"/>
					<xsd:element ref="wx_string" minOccurs="0"/>
					<xsd:element ref="not_decoded" minOccurs="0"/>
					<xsd:element ref="cloud" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element ref="turbulence" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element ref="icing" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element ref="temperature" minOccurs="0" maxOccurs="unbounded"/>
					
	    		</xsd:sequence>
	    	</xsd:complexType>
	    </xsd:element>
	    
	    <xsd:element name="fcst_time_from" type="xsd:int"/>
	    <xsd:element name="fcst_time_to" type="xsd:int"/>
	    <xsd:element name="change_indicator" type="xsd:string"/>
	    <xsd:element name="time_becoming" type="xsd:string"/>
	    <xsd:element name="probability" type="xsd:int"/>
	    <xsd:element name="wind_dir_degrees" type="xsd:short"/>
	    <xsd:element name="wind_speed_kt" type="xsd:int"/>
	    <xsd:element name="wind_gust_kt" type="xsd:int"/>
	    <xsd:element name="wind_shear_hgt_ft" type="xsd:short"/>
	    <xsd:element name="wind_shear_dir_degrees" type="xsd:short"/>
	    <xsd:element name="wind_shear_speed_kt"  type="xsd:int"/>
	    <xsd:element name="visibility_mi" type="xsd:float" />
	    <xsd:element name="altim_mb" type="xsd:short"/>
	    <xsd:element name="vert_vis_ft" type="xsd:short"/>
	    <xsd:element name="wx_string" type="xsd:string"/>
	    <xsd:element name="not_decoded" type="xsd:string"/>
	    
	    <xsd:element name="cloud">
	    	<xsd:complexType>
	    		<xsd:sequence>
	  				<xsd:element ref="cloud_coverage" minOccurs="0" maxOccurs="unbounded"/>
	  				<xsd:element ref="cloud_base_ft" minOccurs="0" maxOccurs="unbounded"/>
	  				<xsd:element ref="cloud_type" minOccurs="0" maxOccurs="unbounded"/>  		
	    		</xsd:sequence>
	     	</xsd:complexType>
	    </xsd:element>
	    
	    <xsd:element name="cloud_coverage" type="xsd:string"/>
	    <xsd:element name="cloud_base_ft" type="xsd:int"/>
	    <xsd:element name="cloud_type" type="xsd:string"/>
	    
	   <xsd:element name="turbulence">
	        <xsd:complexType>
	            <xsd:sequence>
	                <xsd:element ref="turbulence_intensity" minOccurs="0" maxOccurs="unbounded"/>
	                <xsd:element ref="turbulence_min_alt_mb" minOccurs="0" maxOccurs="unbounded"/>
	                <xsd:element ref="turbulence_max_alt_mb" minOccurs="0" maxOccurs="unbounded"/>
	            </xsd:sequence>
	        </xsd:complexType>
	    </xsd:element>
	    
	    <xsd:element name="turbulence_intensity" type="xsd:string"/>
	    <xsd:element name="turbulence_min_alt_mb" type="xsd:int"/>
	    <xsd:element name="turbulence_max_alt_mb" type="xsd:int"/>
	   
	    <xsd:element name="icing" >
	        <xsd:complexType>
	            <xsd:sequence>
	                 <xsd:element ref="icing_intensity" minOccurs="0" maxOccurs="unbounded"/>
	                 <xsd:element ref="icing_min_alt_mb" minOccurs="0" maxOccurs="unbounded" />
	                 <xsd:element ref="icing_max_alt_mb" minOccurs="0" maxOccurs="unbounded"/>
	            </xsd:sequence>
	        </xsd:complexType>
	    </xsd:element>
	        
	    <xsd:element name="icing_intensity" type="xsd:string"/>
	    <xsd:element name="icing_min_alt_mb" type="xsd:int"/>
	    <xsd:element name="icing_max_alt_mb" type="xsd:int"/>
	                
	       	    
	    <xsd:element name="temperature">
	        <xsd:complexType>
	            <xsd:sequence>
	                <xsd:element ref="valid_time" minOccurs="0" />
	                <xsd:element ref="sfc_temp_c" minOccurs="0"/>
	                <xsd:element ref="max_or_min" minOccurs="0"/>
	            </xsd:sequence>
	        </xsd:complexType>
	    </xsd:element>
	    
	    <xsd:element name="valid_time" type="xsd:int"/>
	    <xsd:element name="sfc_temp_c" type="xsd:float"/>
	    <xsd:element name="max_or_min" type="xsd:string"/>
	  
	    	    
	    
	    
</xsd:schema>
