Appendix B. Standard Name Table Format

The CF standard name table is an XML document (i.e., its format adheres to the XML 1.0 [XML] recommendation). The XML suite of protocols provides a reasonable balance between human and machine readability. It also provides extensive support for internationalization. See the W3C [W3C] home page for more information.

The document begins with a header that identifies it as an XML file:

	 	
  <?xml version="1.0"?>
			 
	

Next is the standard_name_table itself, which is bracketed by the tags <standard_name_table> and </standard_name_table>.

	 	
  <standard_name_table 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="CFStandardNameTable.xsd">
			 
	 

The content (delimited by the <standard_name_table> tags) consists of, in order,

	 	
  <institution>Name of institution here ... </institution>
  <contact>E-mail address of contact person ... </contact>
			 
	 

followed by a sequence of entry elements which may optionally be followed by a sequence of alias elements. The entry and alias elements take the following forms:

	 	
  <entry id="an_id">
      Define the variable whose standard_name attribute has the value "an_id".  
  </entry>
  <alias id="another_id">
      Provide alias for a variable whose standard_name attribute has the
        value "another_id".
  </alias>
			 
	 

The value of the id attribute appearing in the entry and alias tags is a case sensitive string, containing no whitespace, which uniquely identifies the entry relative to the table. This is the value used for a variable's standard_name attribute.

The purpose of the entry elements are to provide definitions for the id strings. Each entry element contains the following elements:

			
  <entry id="an_id">
    <canonical_units>Representative units for the variable ... </canonical_units>
    <description>Description of the variable ... </description>
  </entry>
			
		

Entry elements may optionally also contain the following elements:

			
  <grib>GRIB parameter code</grib>
  <amip>AMIP identifier string</amip>

			
		

Not all variables have equivalent AMIP or GRIB codes. ECMWF GRIB codes start with E, NCEP codes with N. Standard codes (in the range 1-127) are not prefaced. When a variable has more than one equivalent GRIB code, the alternatives are given as a blank-separated list.

The alias elements do not contain definitions. Rather they contain the value of the id attribute of an entry element that contains the sought after definition. The purpose of the alias elements are to provide a means for maintaining the table in a backwards compatible fashion. For example, if more than one id string was found to correspond to identical definitions, then the redundant definitions can be converted into aliases. It is not intended that the alias elements be used to accommodate the use of local naming conventions in the standard_name attribute strings. Each alias element contains a single element:

			
  <alias id="an_id">
    <entry_id>Identifier of the defining entry ... </entry_id>
  </alias>
			
		

Example B.1. A name table containing three entries

					
  <?xml version="1.0"?>
  <standard_name_table>
    <institution>Program for Climate Model Diagnosis and Intercomparison</institution>
    <contact>support@pcmdi.llnl.gov</contact>
    <entry id="surface_air_pressure">
      <canonical_units>Pa</canonical_units>
      <grib>E134</grib>
      <amip>ps</amip>
      <description>
          The surface called "surface" means the lower boundary of the atmosphere.  
      </description>
    </entry>
    <entry id="air_pressure_at_sea_level">
      <canonical_units>Pa</canonical_units>
      <grib>2 E151</grib>
      <amip>psl</amip>
      <description>
          Air pressure at sea level is the quantity often abbreviated 
          as MSLP or PMSL. sea_level means mean sea level, which is close 
          to the geoid in sea areas.  
      </description>
    </entry>
    <alias id="mean_sea_level_pressure">
      <entry_id>air_pressure_at_sea_level</entry_id>
    </alias>
  </standard_name_table>
					
				


The definition of a variable with the standard_name attribute surface_air_pressure is found directly since the element with id="surface_air_pressure" is an entry element which contains the definition.

The definition of a variable with the standard_name attribute mean_sea_level_pressure is found indirectly by first finding the element with the id="mean_sea_level_pressure", and then, since this is an alias element, by searching for the element with id="air_pressure_at_sea_level" as indicated by the value of the entry_id tag.

It is possible that new tags may be added in the future. Any applications that parse the standard table should be written so that unrecognized tags are gracefully ignored.