Changelog¶
All notable changes to this project are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased¶
Added¶
- Added XML Schema validation of the ISO 23387 element grammar via
Document::validate_schema, reporting structuredSchemaViolationvalues with stable codes for unknown roots, undeclared elements and attributes, sequence order,minOccurs/maxOccurs, mandatory choice branches, enumeration and pattern facets, datatype lexical spaces, and character data in element-only content. - Added byte-identical round trips via
Document::to_xml_string_exact, which reproduces the parsed bytes exactly — including attribute quoting, character reference spelling, intra-tag whitespace, CDATA versus escaped text, and empty-element syntax — and fails closed rather than normalizing when source provenance is unavailable. - Added
Document::sourceandDocument::without_sourceto inspect and drop the retained parse input. - Added
validate-schemaandrewrite-exactCLI commands. - Added
scripts/generate-schema-tables.py, which regenerates the committed schema tables from a derived structural catalog without vendoring the ISO schema.
Changed¶
- Relicensed repository-authored work from MIT to
AGPL-3.0-or-later; historical releases remain under their published MIT terms, and third-party material retains its own terms. Document,Element, and node lists now compare by semantic content; retained source spans are provenance and no longer affect equality.- Documented the two writers explicitly:
to_xml_stringis semantic and may normalize equivalent syntax,to_xml_string_exactis byte-identical.
0.2.0 - 2026-08-25¶
Added¶
- Added validated GUID, XML Schema date-time/language/decimal/any-URI, multilingual text, reference, rational, data-type/value-list, unit-scale/base, and reusable ConceptType contracts.
- Added a reusable arbitrary-precision XML Schema
positiveIntegercontract. - Modelled the four Annex E
DataTypeTypeboundary variants and its repeating, implementation-defined regular-expressionDataFormatvalues. - Added owned contracts for the ISO 23387 complex types imported by ISO 7817-3: subject, object type, property, group, quantity kind, reference document, dimension, unit, and data template.
- Added a bounded, namespace-aware XML 1.0 parser and semantic writer retaining namespaces, ordering, comments, processing instructions, CDATA, and unknown elements and attributes.
- Added typed views and owned wrappers for all five concrete global roots and
the local
Librarychild families represented by the Annex E XSD inventory. - Added structured built-in diagnostics with stable severity, category, and path fields while keeping parsing separate from validation.
- Added
inspect,validate, andrewriteCLI commands. - Added original synthetic XML fixtures with committed provenance and mutation probes for strict XML parsing, root classification, unknown-content retention, and safe CLI output replacement.
Changed¶
- Replaced the unused
openbim-corescaffold dependency with direct maintainedroxmltreewell-formedness checking andquick-xmlevent integration. - Updated documentation from namespace-scaffold status to the exact implemented
0.2capability boundary without claiming XSD or clause-level conformance.
Security¶
- Reject malformed XML 1.0, duplicate expanded attributes, illegal namespace bindings, DTD declarations, undeclared entities and prefixes, invalid characters, and malformed qualified names; enforce configurable byte, depth, node, and per-element attribute limits.
- Write CLI rewrites through an OS-random, exclusively created same-directory temporary file so pre-created symlinks cannot redirect the write.
Fixed¶
- Corrected global-root classification to the five concrete Annex E declarations
while retaining typed local
Librarychild views. - Made multilingual-text and reference diagnostics context-sensitive to the
actual Annex E
Symboland*Refdeclarations. - Made the owned Concept core require validated creation-date, name, and definition state and applied XML Schema whitespace collapsing to typed scalar values.
- Reworked inherited namespace handling to use delta scopes and shared URI storage, preventing depth-amplified copies of ancestor namespace declarations.
- Corrected
DateTimeextended-year and end-of-day fractional-second edges and alignedAnyUriwith XML Schema 1.0's broad escaped lexical space. - Preserved tab, newline, and carriage-return character references in attribute values, plus carriage-return references in text, across repeated parse/write/ parse cycles.
- Corrected
ValueListTypeto require a validated language and one-or-moreDataValuechildren whose optional order is bounded to XML Schemaint, and restored missing-language diagnostics. - Connected the complete pre-standalone DT lineage across
packages/openbim/openbim-dt,packages/openbim-dt, andpackages/dtwithout rewriting the publishedv0.1.0orv0.1.1release commits. - Made the GitHub Pages upload include hidden files so the deployed artifact
matches the tree validated by the documentation gate, including
.nojekyll.
0.1.1 - 2026-08-25¶
Changed¶
- Established
openbimrs/dtas the canonical standalone repository while preserving the data-template subtree history. - Corrected repository, homepage, documentation, and package metadata.
- Added standalone CI, packaging gates, architecture documentation, roadmap, contributor guidance, and a verified GitHub Pages documentation pipeline.
- Clarified that the released API is a namespace scaffold, not a complete ISO 23387 model, parser, writer, or validator.
Security¶
- Added fail-closed package and documentation checks preventing ISO/DIN/CEN references, schemas, PDFs, and annex examples from entering release artifacts.
0.1.0 - 2026-08-24¶
Added¶
- Reserved
openbim-dtwith ISO 23387 edition 2 and draft-placeholder namespace constants.