EML Section Guide
EML Section Guide
A reference for where metadata lives in EML and how the FSDB Data Catalog module uses it. Use this guide to locate sections in EML files (e.g. CF002_24.xml) and to see which fields drive the catalog search and detail pages.
Schema reference: EML 2.2.0 schema · eml.xsd
---
1. EML document structure (major sections)
An EML document has a single root <eml> and one primary resource. For data packages, the structure is:
| Level | Element | Description |
|---|---|---|
| Root | eml | Package wrapper. Attributes: packageId, system, scope. |
| Optional | access | Access control for the whole package. |
| Primary resource | dataset | Describes a data set and its entities (tables, etc.). *Other root options: citation, software, protocol.* |
| Optional | additionalMetadata | Extensions (e.g. unit lists, custom blocks). |
XPath note: with the EML namespace bound as eml, paths look like /eml:eml/eml:dataset/....
---
2. Dataset structure (major and minor sections)
Under dataset, sections appear in a defined order. Not all packages include every section.
Major sections (direct children of dataset)
| EML path | Description |
|---|---|
dataset/alternateIdentifier | Alternate ID (e.g. DBCODE such as CF002). |
dataset/title | Dataset title. |
dataset/creator | One or more creators (individual or organization). |
dataset/metadataProvider | Who provided the metadata. |
dataset/associatedParty | Contributors, roles, contacts. |
dataset/pubDate | Publication date. |
dataset/abstract | Abstract (often abstract/para). |
dataset/keywordSet | Keywords and optional keywordThesaurus. |
dataset/additionalInfo | Extra narrative (often additionalInfo/para). |
dataset/intellectualRights | Rights text. |
dataset/licensed | License name, URL, identifier. |
dataset/distribution | Package-level distribution (e.g. distribution/online/url). |
dataset/coverage | Temporal, geographic, and/or taxonomic coverage. |
dataset/purpose | Purpose (often purpose/para). |
dataset/maintenance | Update frequency, change history, description. |
dataset/contact | Contact party(s). |
dataset/publisher | Publisher. |
dataset/methods | Method steps, instrumentation, sampling. |
dataset/project | Project title, personnel, funding, awards. |
| `dataset/dataTable` | Data entities (tables). See §3. |
dataset/otherEntity | Other entity types (non-tabular). |
dataset/spatialRaster | Raster spatial data entity. |
dataset/spatialVector | Vector spatial data entity. |
dataset/literatureCited | Cited literature. |
dataset/bibliography | Bibliography. |
Minor sections (nested inside major ones)
Examples the catalog uses:
- Coverage:
coverage/geographicCoverage,coverage/temporalCoverage,coverage/taxonomicCoverage,boundingCoordinates,rangeOfDates,calendarDate. - Methods:
methodStep,description,instrumentation,sampling. - Project:
title,personnel,abstract,funding,award,studyAreaDescription.
---
3. Data tables (entities) — dataTable
Each data table is one data entity (e.g. one CSV or similar). In EML these are dataTable elements under dataset. The catalog uses them for search, the detail page “Metadata” section, and download links.
Where data tables live
- Path:
dataset/dataTable(multiple; often withide.g.CF00201,CF00202). - Example: CF002_24.xml has six
dataTableelements (CF00201–CF00206).
Structure of each dataTable
EML path (under each dataTable) | Description |
|---|---|
@id | Entity id (e.g. CF00201). |
alternateIdentifier | Alternate id for the entity. |
entityName | Short name (e.g. “Proportional stream water sample nutrient concentrations”). |
entityDescription | Text description of the entity. |
physical | Physical file and distribution. |
physical/objectName | File name (e.g. CF00201_v7.csv). |
physical/size | Size (with @unit, e.g. byte). |
physical/authentication | Checksum (e.g. MD5). |
physical/dataFormat | Format (e.g. textFormat, numHeaderLines, fieldDelimiter). |
physical/distribution/online/url | Download URL (e.g. function="download"). |
coverage | Optional temporal/geographic coverage for this entity. |
attributeList | List of columns/variables. |
attributeList/attribute | Per-attribute: @id, attributeName, attributeDefinition, storageType, measurementScale, etc. |
constraint | Keys and rules (e.g. primaryKey, notNullConstraint). |
numberOfRecords | Row count. |
Other entity types (same level as dataTable)
- `otherEntity` — Non-tabular data (e.g. documents, scripts). Same idea: identification, physical, optional attributeList.
- `spatialRaster` — Raster spatial data.
- `spatialVector` — Vector spatial data.
The FSDB catalog detail page and download logic focus on `dataTable` and its physical/distribution/online/url.
---
4. Search index — catalog page (/fsdb-data-catalog)
Search matches the following EML fields (paths relative to dataset unless noted):
| Field | EML path |
|---|---|
| Title | dataset/title |
| Abstract | dataset/abstract/para |
| Alternate identifier | dataset/alternateIdentifier |
| Purpose | dataset/purpose/para |
| Additional info | dataset/additionalInfo/para |
| Keywords | dataset/keywordSet/keyword |
| Keyword thesaurus | dataset/keywordSet/keywordThesaurus |
| Creator names | dataset/creator (individualName: givenName, surName) |
| Associated party names | dataset/associatedParty (individualName: givenName, surName) |
| Contact names | dataset/contact (individualName: givenName, surName) |
| Entity name | dataset/dataTable/entityName |
| Entity description | dataset/dataTable/entityDescription |
| Geographic description | dataset/coverage/geographicCoverage/geographicDescription |
| Temporal coverage | dataset/coverage/temporalCoverage/rangeOfDates/*/calendarDate |
| Bounding coordinates | dataset/coverage/geographicCoverage/boundingCoordinates/* |
| Taxon rank name | dataset/coverage/taxonomicCoverage//taxonRankName |
| Taxon rank value | dataset/coverage/taxonomicCoverage//taxonRankValue |
DBCODE is also matched, derived from the filename convention DBCODE_VERSION.xml.
---
5. Detail page — dataset record (/fsdb-data-catalog/[DBCODE])
Header (summary row)
The top of the detail page shows a compact summary. People are shown in this order (left to right):
- Creator(s) — From
dataset/creatoronly (no duplicate from associatedParty). - Principal Investigator — From
dataset/associatedPartywhereroleis "Principal Investigator". - Additional — From
dataset/associatedPartywhereroleis empty or unspecified. - Other Researchers — From
dataset/associatedPartywhereroleis "Other Researcher". - Any other associated-party roles appear after these, in a stable order.
Associated parties with role "Creator" are not shown again in the header (they are covered by Creator(s)).
Other header fields include Organization, dates, version, pub date, EDI Package ID (clickable link to https://portal.edirepository.org/nis/mapbrowse?packageid={packageId}), Source XML, and DOI when present.
Sections and EML sources
| Section | EML paths |
|---|---|
| Identity | eml/@packageId, dataset/title, dataset/alternateIdentifier, dataset/pubDate |
| Purpose / Abstract / Additional info | dataset/abstract, dataset/purpose, dataset/additionalInfo |
| People and organizations | dataset/creator, dataset/associatedParty, dataset/contact, dataset/publisher |
| Project | dataset/project (title, personnel, abstract, funding, awards, descriptors) |
| Methods | dataset/methods (method steps, instrumentation, sampling) |
| Software | *Not under dataset; software is a separate root resource type. Omitted for dataset packages.* |
| Coverage | dataset/coverage (temporal, geographic, bounding coordinates, taxonomic) |
| Distribution links | dataset/distribution/online/url, dataset/dataTable/physical/distribution/online/url |
| Metadata | dataset/dataTable (entity name, description, physical, format, attributes, constraints, record count, download URL) |
| Rights and licensing | dataset/intellectualRights, dataset/licensed, dataset/maintenance |
| Additional metadata | additionalMetadata (e.g. unit list, custom structures) |
| Related publications | dataset/literatureCited//citation, dataset/bibliography//citation; or paras under a “Related Publications” heading in dataset/additionalInfo (e.g. CF002) |
---
6. Notes
- Not every EML file has every section; missing sections are simply omitted on the detail page.
- UI labels may differ slightly from EML tag names.
- If expected metadata does not appear, check that it exists in the XML at the paths above. For XPath in code, the EML namespace must be registered (e.g. prefix
eml). - EML 2.1.1 and 2.2.0 use different namespace URIs; the catalog supports both for parsing.