<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.2"/>
			</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:string"/>
	    <xsd:element name="bulletin_time" type="xsd:string"/>
	    <xsd:element name="valid_time_from" type="xsd:string"/>
	    <xsd:element name="valid_time_to"  type="xsd:string"/>
	    <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_agl" minOccurs="0"/>
					<xsd:element ref="wind_shear_dir_degrees" minOccurs="0"/>
					<xsd:element ref="wind_shear_speed_kt" minOccurs="0"/>
					<xsd:element ref="visibility_statute_mi" minOccurs="0"/>
					<xsd:element ref="altim_in_hg" 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="sky_condition" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element ref="turbulence_condition" minOccurs="0" maxOccurs="unbounded"/>
					<xsd:element ref="icing_condition" 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:string"/>
	    <xsd:element name="fcst_time_to" type="xsd:string"/>
	    <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_agl" 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_statute_mi" type="xsd:float" />
	    <xsd:element name="altim_in_hg" type="xsd:float"/>
	    <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="sky_condition">
	        <xsd:complexType>
	            <xsd:attribute name="sky_cover" type="xsd:string"/>
	  		    <xsd:attribute name="cloud_base_ft_agl" type="xsd:int"/>
	  		    <xsd:attribute name="cloud_type" type="xsd:string"/> 
	        </xsd:complexType>
	         		
	    </xsd:element>
	    
	    <xsd:element name="turbulence_condition">
	       <xsd:complexType>
	           <xsd:attribute name="turbulence_intensity" type="xsd:string"/>
	           <xsd:attribute name="turbulence_min_alt_ft_agl" type="xsd:int"/>
	           <xsd:attribute name="turbulence_max_alt_ft_agl" type="xsd:int"/>
	       </xsd:complexType>  
	    </xsd:element>
	    
	  
	  
	    <xsd:element name="icing_condition" >
	        <xsd:complexType>
	           <xsd:attribute name="icing_intensity" type="xsd:string"/>
               <xsd:attribute name="icing_min_alt_ft_agl" type="xsd:int"/>
               <xsd:attribute name="icing_max_alt_ft_agl" type="xsd:int"/>
	        </xsd:complexType>
	      
	    </xsd:element>
	        
	    
	       	    
	    <xsd:element name="temperature">
	        <xsd:complexType> 
	          <xsd:sequence> 
	           <xsd:element ref="valid_time" />
	           <xsd:element ref="sfc_temp_c" minOccurs="0"/>
	           <xsd:element ref="max_temp_c" minOccurs="0" />
	           <xsd:element ref="min_temp_c" minOccurs="0"/>
	           </xsd:sequence> 
	        </xsd:complexType>
	    </xsd:element>
	    
	    <xsd:element name="valid_time" type="xsd:string" />
	    <xsd:element name="sfc_temp_c"  type="xsd:float"/>
	    <xsd:element name="max_temp_c" type="xsd:string"/>
	    <xsd:element name="min_temp_c" type="xsd:string"/>
	    
	   
	    
	    
</xsd:schema>

