Extended content in IWXXM 3.0To facilitate consistency in how supplemental content appears in the IWXXM XML documents, the IWXXM schemas have elements named "extension" in many of its complex type definitions. This solution allows unique and customized content in the resulting XML documents. The IWXXM schemas' <extension> elements consists of a <any processContents='strict'> type 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. Because the <any> type has the attribute "processContents" set to "strict", this requires that a schema file (XSD) must exist and be found by the XML processor. The processor then uses this schema file to validate the content inside the <extension> element. The Usage example below illustrates this requirement.
In all IWXXM complex types defined in the schema, the <extension> element appears last in any <sequence>. For example in the following IWXXM 3 metarSpeci XML document "collapsed" view:
<METAR xmlns="http://icao.int/iwxxm/3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://icao.int/iwxxm/3.0 http://schemas.wmo.int/iwxxm/3.0.0/iwxxm.xsd" status="" permissibleUsage="" xmlns:gml="http://www.opengis.net/gml/3.2" gml:id=""> <issueTime>...</issueTime> <aerodrome>...</aerodrome> <observationTime>...</observationTime> <observation>...</observation> <trendForecast>...</trendForecast> <extension>...</extension> </METAR>
Other complex types used in the METAR and SPECI documents that have the <extension> elements are the MeteorologicalAerodromeObservation and MeteorologicalAerodromeTrendForecast types.
<MeteorologicalAerodromeObservation cloudAndVisibilityOK="..." gml:id="..."> <airTemperature uom=".."></airTemperature <dewpointTemperature uom=".."></dewpointTemperature> <qnh uom=".."></qnh> <airTemperature uom=""></airTemperature> <dewpointTemperature uom=""></dewpointTemperature> <qnh uom=""></qnh> <surfaceWind>...</surfaceWind> <visibility>...</visibility> <rvr>...</rvr> <presentWeather>...</presentWeather> <cloud>...</cloud> <recentWeather>...</recentWeather> <windShear>...</windShear> <seaState>...</seaState> <runwayState>...</runwayState> <extension>...</extension> </MeteorologicalAerodromeObservation>
<MeteorologicalAerodromeTrendForecast> <phenomenonTime>...</phenomenonTime> <timeIndicator>...</timeIndicator> <prevailingVisibility uom="..."></prevailingVisibility> <prevailingVisibilityOperator>...</prevailingVisibilityOperator> <surfaceWind> <AerodromeSurfaceWindTrendForecast> <meanWindDirection uom=""></meanWindDirection> <meanWindSpeed uom=""></meanWindSpeed> <meanWindSpeedOperator></meanWindSpeedOperator> <windGustSpeed uom=""></windGustSpeed> <windGustSpeedOperator></windGustSpeedOperator> <extension></extension> </AerodromeSurfaceWindTrendForecast> </surfaceWind> <weather>...</weather> <cloud>...</cloud> <extension>...</extension> </MeteorologicalAerodromeTrendForecast>
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 3 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 all <extension> content within an XML document.
The optional <extension> elements as they appear in the schemas files are of complex type <any>. 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 its 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 must be 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). A SPECI with a wind shear information would look like the following XML document:
<SPECI xmlns="http://icao.int/iwxxm/3.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:gml="http://www.opengis.net/gml/3.2" xsi:schemaLocation="http://icao.int/iwxxm/3.0 http://schemas.wmo.int/iwxxm/3.0.0/iwxxm.xsd" status="NORMAL" permissibleUsage="OPERATIONAL" gml:id="..."> <issueTime>...</phenomenonTime> <aerodrome>...</aerodrome> <observationTime>...</observationTime> <observation> <MeteorologicalAerodromeObservation 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">110</meanWindDirection> <meanWindSpeed uom="[kn_i]">23</meanWindSpeed> <windGustSpeed uom="[kn_i]">35</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="m">240</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> </MeteorologicalAerodromeObservation> <observation> </SPECI>
By explicitly allowing extension elements in the IWXXM documents, this allows the consumer to readily identify non-Annex 3 content in the XML document.