EXTENDED CONTENT IN IWXXM 2.1
Versions 1.1 of the IWXXM schemas were a strict implementation of Annex 3 technical specification for METARs, SPECIs, TAF and SIGMETs products and did not allow for additional content to appear in the resulting XML documents. However, given XML's built-in ability to allow a schema's complex types to be extended, this was not a significant limitation. States could (and did) extend IWXXM 1.1 complex types to support their nation's unique specifications and requirements of the Annex 3 products. However, after review of the technique used to extend IWXXM 1.1 schemas, there were concerns, even if using XML built-in capabilities, that this approach was too burdensome for states to implement.
To facilitate consistency in how additional content appears in the XML documents, the IWXXM 2.1 schemas now have elements named "extension" in many complex type definitions. This solution — implementing AIXM's own method — allows unique and customized content in the resulting XML documents. The IWXXM 2.1 schemas' <extension> elements are of <anyType> with cardinality of zero to many. Therefore, states can then define their own complex XML types that support their additions to the Annex 3 products' technical specifications. Their unique complex types can then appear within the extension element(s) of the corresponding IWXXM XML documents.
For example, the <extension> element appears last in the following IWXXM 2.1 metarSpeci XML document "collapsed" view:
<METAR xmlns="http://icao.int/iwxxm/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://icao.int/iwxxm/2.1 http://schemas.wmo.int/iwxxm/2.1/iwxxm.xsd" status="" permissibleUsage="" xmlns:gml="http://www.opengis.net/gml/3.2" gml:id=""> <observation>...</observation> <trendForecast>...</trendForecast> <extension>...</extension> </METAR>
Other complex types used in the METAR and SPECI documents that have the <extension> elements are the MeteorologicalAerodromeObservationRecord and MeteorologicalAerodromeTrendForecast types.
<MeteorologicalAerodromeObservationRecord xmlns="http://icao.int/iwxxm/2.1" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://icao.int/iwxxm/2.1 http://schemas.wmo.int/iwxxm/2.1/iwxxm.xsd" cloudAndVisibilityOK="..." gml:id="..."> <airTemperature uom="...">...</airTemperature> <dewpointTemperature uom="">...</dewpointTemperature> <qnh uom="...">...</qnh> <surfaceWind>...</surfaceWind> <visibility>...</visibility> <rvr>...</rvr> <presentWeather/> <cloud>...</cloud> <recentWeather/> <windShear>...</windShear> <seaState>...</seaState> <runwayState>...</runwayState> <extension>...</extension> </MeteorologicalAerodromeObservationRecord>
<MeteorologicalAerodromeTrendForecastRecord xmlns="http://icao.int/iwxxm/2.1" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://icao.int/iwxxm/2.1 http://schemas.wmo.int/iwxxm/2.1/iwxxm.xsd" changeIndicator="..." gml:id="..."> <prevailingVisibility uom="">...</prevailingVisibility> <prevailingVisibilityOperator>...</prevailingVisibilityOperator> <surfaceWind>...</surfaceWind> <forecastWeather/> <cloud>...</cloud> <extension>...</extension> </MeteorologicalAerodromeTrendForecastRecord>
In all cases, the <extension> element, if present, will be located at the end of the complex types in the XML documents.
These and other complex types, see here for a comprehensive list, defined in IWXXM 2.1 schema files allow extended content to appear in multiple places within an XML document. However, it is incumbent on the states, should they need to use the <extension> elements, to use them judiciously: there is a 5000 character limit for <extension> content within an XML document.
The optional <extension> elements as they appear in the IWXXM 2.1 schemas files are of type <anyType>. As such, any simple or complex type defined in a schema file can be used. Typically a state would create and define their own complex types specific to their needs in a schema file and make the file widely available. An IWXXM XML product with extended content would refer to the state's schema file so that XML validation tools can find the definitions and verify correct usage.
To illustrate, suppose a state wishes to include wind shear information, as measured by radar profilers situated at the country's major airports, into their METAR and SPECI reports. An XML complex type to encode the profiler information could look like this:
<schema elementFormDefault="qualified" targetNamespace="http://weather.gov.ss/iwxxm-ss/1.0" version="1.0" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:gml="http://www.opengis.net/gml/3.2" xmlns:iwxxm-ss="http://weather.gov.ss/iwxxm-ss/1.0"> <import namespace="http://www.opengis.net/gml/3.2" schemaLocation="http://schemas.opengis.net/gml/3.2.1/gml.xsd"/> <!-- This schema file is meant to illustrate the use of IWXXM <extension> elements and how externally defined complex types would appear IWXXM XML documents --> <annotation> <documentation> Low-level wind shear is one of the major hazards to flight safety. Sudden changes in lift near the ground give pilots little time to recover. The deployment of radar profilers at the major, high traffic airports that are able to detect low-level wind shears below 500 meters, it is vitally important that information regarding the base height and magnitude of the wind shear layer be communicated to airport traffic controllers and pilots. The complex type defined below will allow profiler data at the time of the METAR or SPECI measurement period be included in the IWXXM XML document. </documentation> </annotation> <element name="windShearAlert" type="iwxxm-ss:WindShearAlertType"/> <complexType name='WindShearAlertType'> <annotation> <documentation> Complex type to convey wind shear information to air-traffic control and pilots. Wind shears usually occur near the boundary of the PBL and the free atmosphere. Shear is given in units of 'per time'. </documentation> </annotation> <sequence> <element name='windShearBaseHeight' type='gml:MeasureType'/> <element name='windShearValue' type='gml:MeasureType'/> <element name='windShearMagnitude' type='iwxxm-ss:WindShearSeverityTypes'/> <element name='windSpeedAtBase' type='gml:SpeedType'/> <element name='windDirectionAtBase' type='gml:AngleType'/> </sequence> </complexType> <simpleType name="WindShearSeverityTypes"> <annotation> <documentation> Simple table to describe the wind shear values (WS) in qualitative terms: "Moderate" 0.06 < WS <= 0.12 per second "Severe" 0.12 < WS <= 0.17 per second "Extreme" WS > 0.17 per second For large commercial aircraft, these categories represent lost/gain of relative wind speed over the wing of 10-15, 15-20, and 20 knots and greater. </documentation> </annotation> <restriction base="string"> <enumeration value="Moderate"/> <enumeration value="Severe"/> <enumeration value="Extreme"/> </restriction> </simpleType> </schema>
This XML schema file necessarily needs to be widely available and accessible so consumers of that nation's XML products shall be able to validate documents that use such types in their Annex 3 products (or elsewhere). The complex types can then appear in Annex 3 products using the IWXXM 2.1 schemas. A METAR with a wind shear information would look like the following XML document using IWXXM 2.1:
<METAR xmlns="http://icao.int/iwxxm/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gml="http://www.opengis.net/gml/3.2" xsi:schemaLocation="http://icao.int/iwxxm/2.1 http://schemas.wmo.int/iwxxm/2.1/iwxxm.xsd" status="NORMAL" permissibleUsage="OPERATIONAL" gml:id="..."> <observation> <OM_Observation xmlns="http://www.opengis.net/om/2.0" gml:id="..."> <phenomenonTime>...</phenomenonTime> <resultTime>...</resultTime> <procedure/> <observedProperty/> <featureOfInterest/> <result> <MeteorologicalAerodromeObservationRecord cloudAndVisibilityOK="true" gml:id="..."> <airTemperature uom="Cel">0.0</airTemperature> <dewpointTemperature uom="Cel">-1.1</dewpointTemperature> <qnh uom="hPa">1008.4</qnh> <surfaceWind> <AerodromeSurfaceWind variableWindDirection="false"> <meanWindDirection uom="deg">120</meanWindDirection> <meanWindSpeed uom="[kn_i]">23.0</meanWindSpeed> <windGustSpeed uom="[kn_i]">29.0</windGustSpeed> </AerodromeSurfaceWind> </surfaceWind> <windShear> <AerodromeWindShear allRunways='true'> <extension> <windShearAlert xmlns="http://weather.gov.ss/iwxxm-ss/1.0" xsi:schemaLocation="http://weather.gov.ss/iwxxm-ss/1.0 http://weather.gov.ss/iwxxm-ss/1.0/IWXXM-SS.xsd"> <windShearBaseHeight uom="[ft_i]">780</windShearBaseHeight> <windShearValue uom="1/s">0.084</windShearValue> <windShearMagnitude>Moderate</windShearMagnitude> <windSpeedAtBase uom="[kn_i]">32</windSpeedAtBase> <windDirectionAtBase uom="deg">145</windDirectionAtBase> </windShearAlert> </extension> </AerodromeWindShear> </windShear> </MeteorologicalAerodromeObservationRecord> </result> </OM_Observation> </observation> </METAR>
By explicitly allowing extension elements in IWXXM 2.1 documents, this allows the consumer to readily identify non-Annex 3 content in the XML document.