Skip to content

ISO-TC211/schemas-isotc211.github.io

Repository files navigation

ISO/TC 211 XML Schemas site: schemas.isotc211.org

build-deploy

Introduction

The ISO/TC 211 XML Schemas site publishes XML schemas from ISO/TC 211 standards at https://schemas.isotc211.org. Each schema package has:

  • Downloadable XSD files at their canonical URLs (no /schemas/ prefix)

  • Interactive schema browsers (lutaml-xsd SPA) per standard+part+version

  • Per-standard landing pages at /{standard}/ with namespace dereference pages

  • A resource catalog at /resources/ (transforms, schematron, examples, codelists, bundles)

  • A card-based index page with filter by standard/name/description

This repository is jointly managed by ISO/TC 211 and operated by Ribose.

URL Structure

All schemas are served at canonical top-level URLs — there is NO /schemas/ prefix in any URL. This is critical because XML parsers, validators, and schemaLocation attributes depend on these URLs.

Resource URL Pattern Example

XML namespace

/{standard}/{part}/{module}/{major}.{minor}

/19115/-1/cit/1.3

XSD file

/{standard}/{part}/{module}/{version}/{module}.xsd

/19115/-1/cit/1.3.0/cit.xsd

JSON schema

/json/{standard}/{part}/{module}/{version}/{module}.json

/json/19115/-4/mdj/1.0.0/mdj.json

Schema browser

/{standard}/{part}/{module}/{version}/browse/

/19115/-1/cit/1.3.0/browse/

Namespace hub

/{standard}/{part}/{module}/{version}/

/19115/-1/cit/1.3.0/

Standard page

/{standard}/{part}/ or /{standard}/

/19115/-1/

XML examples

/{standard}/{part}/{module}/{version}/examples/

/19115/-1/mdb/1.3.0/examples/

JSON examples

/json/{standard}/{part}/{module}/{version}/examples/

/json/19115/-4/mdj/1.0.0/examples/

Transforms

/{standard}/resources/transforms/

/19115/resources/transforms/

Codelists

/{standard}/resources/codelists/

/19115/resources/codelists/

Bundles

/{standard}/resources/bundles/

/19115/resources/bundles/

Path elements

Standard

5 digits (e.g., 19115)

Part

-1, -2, -3, or - for standalone (no part)

Module

3 lowercase letters (e.g., cit, mdb, gml)

Version

semantic version (e.g., 1.0, 1.3.0)

Legacy redirects

Some schemas were previously available at paths without the part number (e.g., /19155/gpi/1.0/ instead of /19155/-/gpi/1.0/). These are redirected to the canonical URLs above:

  • Data files (.xsd, .xml, etc.) — the actual file is copied to the old path (XML parsers can’t follow HTML redirects)

  • HTML/directory paths — HTML meta-refresh redirect to the canonical URL

Legacy redirects are defined in _data/redirects.yml.

Building the site

# Full build + local dev server (the standard test command)
make clean all serve

# Individual steps
make configs          # Generate per-package lutaml-xsd configs + indexes
make lxr-spas         # Build all LXR packages + SPA HTMLs
make _site            # Build the Jekyll site into _site/

# Build a single LXR package
make build/19136-gml-1.0.lxr

# Clean all build artifacts
make clean

# Update git submodules (schemas)
make update

Prerequisites

  • Ruby 3.3 with Bundler

  • Node.js 20 with npm

  • Git submodules initialized: make update

  • Two Gemfiles: Gemfile (Jekyll) and schemas/Gemfile (lutaml-xsd) — they have conflicting dependencies

Architecture

The site is a Jekyll site using the jekyll-theme-isotc211 gem with Vite + Tailwind CSS v4. Architecture: 1 standard+part+version → 1 LXR package → 1 SPA HTML file, all listed on the index page.

Directory Purpose

schemas/

Git submodule (ISO-TC211/schemas). MECE directory structure: {standard}/{-part}/{module}/{version}/.xsd, {standard}/resources/{transforms,codelists,schematron,bundles}/, json/{standard}/{-part}/{module}/{version}/.json

vendor_schemas/

Helper schemas for LXR builds (xlink, w3c/xml.xsd, OGC sensorML/sweCommon)

schemas/lxr_packages.yml

XSD package manifest — title, description, status, file paths

schemas/ljr_packages.yml

JSON schema package manifest

generate_configs.rb

Reads manifests + auto-discovers resources from filesystem. Outputs: per-package configs in configs/, schemas_index.json, resources_index.json

configs/

Auto-generated per-package lutaml-xsd configs (generated, gitignored)

build/

Intermediate LXR packages .lxr (generated, gitignored)

site/

SPA HTML output from lutaml-xsd (generated, gitignored)

_frontend/

jekyll-vite frontend source

_plugins/

Jekyll plugins (build_source_generator, schema_pages_generator, redirect_generator)

_pages/

Jekyll pages (index, resources, docs, news)

_data/redirects.yml

Old→new URL redirect mappings

_site/

Final deployable output (generated, gitignored)

Plugins

Plugin Purpose

build_source_generator.rb

Registers SPA HTMLs from site/ and schema data files from schemas/ as Jekyll static files. Files from schemas/ are served at top-level paths (no /schemas/ prefix).

schema_pages_generator.rb

Generates per-standard listing pages (/{standard}/), multi-part root pages, and namespace hub pages (/{standard}/{part}/{module}/{version}/).

redirect_generator.rb

Post-write hook: copies data files to legacy paths (for XML parsers), generates HTML meta-refresh redirects for directory paths.

Package Manifest

The package manifests (lxr_packages.yml for XSD, ljr_packages.yml for JSON) live in the schemas/ submodule. They provide human metadata (title, description, status). File paths and resources are auto-discovered from the filesystem by generate_configs.rb.

About

Official ISO/TC 211 XML schemas site

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors