Darwin Core Archive · meta.xml
What you are seeing — you downloaded a dataset and got a zip full of text files and XML with no obvious entry point.
A Darwin Core Archive is a zip holding three kinds of thing. One or more data tables, usually tab-delimited despite the .txt extension. A meta.xml, which is the map: it names which file is the core table, which files are extensions, what the delimiter is, and which Darwin Core term each column position corresponds to. And usually an eml.xml describing the dataset, its licence and its contacts.
The important consequence is that the column names are not necessarily in the data file. In many archives the first row is data and the meta.xml carries the term for each column index. Opening occurrence.txt in a spreadsheet and reading the top row as headers is how people end up one row short and every column misnamed.
If the archive has several tables, meta.xml says which one is the <core> and which are <extension>. That is a declaration in the standard's own vocabulary, so reading it is not a guess. An Event-core archive with an extended measurement extension has three tables and a real structure — the measurements belong to events, not to occurrences.
Do not join the extensions into the core to get one wide table. A measurement row is not an occurrence row, and flattening them invents a denormalised table the publisher never wrote. We read the core the meta.xml declares and name the extensions we set aside, so you know what was left out rather than discovering it later.
meta.xml first, not the data.<core> and note its rowType — an Occurrence core and an Event core are different datasets in shape.<field> entries: each has an index and a term, and that pairing is your header row.ignoreHeaderLines — if it is 0, the first line of the data file is a record, not a header.We read the archive's own meta.xml to find the core table rather than guessing between members, and we name the extensions instead of merging them. You get the columns, what we could confirm from their values, and what we refused to interpret. Free until 1 September, no account, and your records are discarded after the check —
we keep the column mapping, never the rows.
We audited a file GBIF had already accepted and served. Their validator answers will this load; these had loaded. Figures read from ops/data.json, not typed into this page. We do not issue a rating of any kind — every finding names the rule it applied and where that rule comes from.