Metadata Style Guidelines

WMO Core Metadata Style Guidelines

WMO metadata are implemented using XML and validated using XML schema and Schematron rules. In addition, there are practices that improve the usability and consistency of the metadata. These style guidelines are described here.

CodeList Format

The standard form for ISO codeLists is shown below. The redundancy in this form allows tools to find codeList values using either the attribute or the element value.
Standard CodeList Format
<codeListName codeList="location" codeListValue="value">value</codeListName>

for example:
CodeList Example
<gmd:LanguageCode
   codeList="http://wis.wmo.int/2006/catalogues/gmxCodelists.xml#LanguageCode"
   codeListValue="eng">eng</gmd:LanguageCode>


uuid and uuidref Attributes

ISO Metadata elements can have several types of attributes.

Elements that are objects give the types of the objects they represent. These element names begin with two uppercase letters followed by an underscore (e.g. MD_, DQ_, ...). They represent actual objects like citations or people and they have attributes that are identifiers: id or uuid.

Elements that are roles are written in lowerCamelCase. They "point to" objects that fulfill roles and they have attributes that are references: uuidref or xlink:href.

The uuid and uuidref attributes are expected to be valid UUIDs. Their purpose is to 1) provide universally unique identifiers with scope broader than a single file for objects (uuid) and 2) to provide references to those objects (uuidref). Using these ids for other purposes, i.e. titles, is not a good practice and should be avoided.

Example of uuidref used as title
<gmd:descriptiveKeywords uuidref="theme">
    <gmd:MD_Keywords>
        <gmd:keyword>
            <gco:CharacterString>balloon</gco:CharacterString>
        </gmd:keyword>
        <gmd:type>
            <gmd:MD_KeywordTypeCode codeList="…"
codeListValue="theme">theme</gmd:MD_KeywordTypeCode>
        </gmd:type>
    </gmd:MD_Keywords>
</gmd:descriptiveKeywords>


EX_Extent Identifiers

The ISO metadata standards support multiple spatial/temporal extents of several different types (e.g. identification, quality, source, …). Many other standards allow only one extent, typically a bounding extent for the resource described by the metadata. XML ids can be used to make it possible to unambiguously identify the bounding extent of the resource described by an ISO record using xPath. Three ids are recommended:
  1. id=”boundingExtent” identifies the EX_Extent object that includes
  2. id = “boundingGeographicBoundingBox” identifies the bounding latitude and longitude of the resource and
  3. id = “boundingTemporalExtent” identifies the temporal bounds of the resource.

These ids can be used, for example, in translating ISO metadata to KML for display as a bounding rectangle on a map. In this case, the xPath for the bounding latitude and longitude would be
Bounding Extent xPath
//gmd:EX_GeographicBoundingBox[@id=’boundingGeographicBoundingBox’]


Ex_Extend with identifiers
<gmd:extent>
    <gmd:EX_Extent id="boundingExtent">
        <gmd:geographicElement>
            <gmd:EX_GeographicBoundingBox id="boundingGeographicBoundingBox">
                <gmd:westBoundLongitude>
                    <gco:Decimal>124.166</gco:Decimal>
                </gmd:westBoundLongitude>
                <gmd:eastBoundLongitude>
                    <gco:Decimal>153.983</gco:Decimal>
                </gmd:eastBoundLongitude>
                <gmd:southBoundLatitude>
                    <gco:Decimal>24.283</gco:Decimal>
                </gmd:southBoundLatitude>
                <gmd:northBoundLatitude>
                    <gco:Decimal>45.416</gco:Decimal>
                </gmd:northBoundLatitude>
            </gmd:EX_GeographicBoundingBox>
        </gmd:geographicElement>
        <gmd:temporalElement>
            <gmd:EX_TemporalExtent id="boundingTemporalExtent">
                <gmd:extent>
                    <gml:TimePeriod gml:id="someUniqueIdentifier">
                        <gml:beginPosition>2009-04-20</gml:beginPosition>
                        <gml:endPosition indeterminatePosition="now"/>
                    </gml:TimePeriod>
                </gmd:extent>
            </gmd:EX_TemporalExtent>
        </gmd:temporalElement>
    </gmd:EX_Extent>
</gmd:extent>