Skip to content

GAEB-for-Pascal 1.1.0

Choose a tag to compare

@landrix landrix released this 13 Nov 08:33
· 11 commits to main since this release

Validates GAEB DA XML against the original GAEB schemas and reads the older versions 3.0 and 3.1. Source compatible with 1.0.0; the new units and declarations extend the frozen public API. XML still goes through LandrixXML 0.4.0 (Git submodule, git clone --recurse-submodules).

New

  • XSD validation (LandrixGaebXmlXsd): validates a buffer, stream, file, syntax model or bill of quantities against the original GAEB XSD files of the target version and phase, as a second opinion next to the built-in content model check. The schemas are not part of the repository (no redistribution licence); tools/fetch-gaeb-xsd.ps1 downloads the official packages of 3.2 and 3.3 from gaeb.de, and the library checks their SHA-256 sums. Findings come as diagnostics (GAEB-XSD-001 to 004) with the schema's error code in the new field XsdCode.
  • Reading GAEB DA XML 3.0 and 3.1 (editions 2004-07, 2007-11 and 2009-12, phases DA 81 to 86, 3.1/2009-12 also 87) into the same model as 3.2 and 3.3. These versions are read only: the facade sets OutputTarget to 3.3 (2021-05) of the same phase, so saving converts the document. Lists directly inside lists are read into a new list item (GAEB-XML-009); PrjInfo/Communication, which later versions dropped, is skipped with a warning (GAEB-XML-010). Conversion problems in the data (elements a phase no longer allows, invalid IDs, texts that are too long, missing mandatory data) are reported by the writer and the check, never repaired silently.
  • BuildAward with a 3.0/3.1 request writes the award in the version of the request's OutputTarget.

Not included

The trade phases of 3.1 (DA 93 to 97) and DA 88 are detected but not read. Content model check, XSD validation and business rules reject 3.0/3.1 input: convert to 3.2 or 3.3 first. GAEB 90 and GAEB 2000 stay detection only.

Quality

  • 15 toolchains green with zero warnings and hints: Delphi 6, 7 and 13 (Win32/Win64, also with range and overflow checks), Delphi 13 macOS ARM64 (compile only), Free Pascal 3.2.2, 3.2.4 and 3.3.1 on Windows (x86, x64, ARM64), Linux and macOS (Apple Silicon).
  • External XSD validation with .NET: every document the tests validate is validated again; both verdicts agree on all of them, valid and invalid ones.
  • Reading 3.0/3.1 tested with synthetic documents (valid against their original schemas) and a corpus of real files.

Documentation

Checking (XSD validation), Getting started and Writing and converting (3.0/3.1); German under docs/de.


Deutsch: Prüfung gegen die originalen GAEB-Schemas (LandrixGaebXmlXsd, Schemas per tools/fetch-gaeb-xsd.ps1 von gaeb.de) und Lesen von GAEB DA XML 3.0 und 3.1 (DA 81 bis 86/87) ins selbe Modell; gespeichert wird als 3.3 (2021-05). Quelltextkompatibel zu 1.0.0, getestet auf 15 Toolchains.

GAEB is a standard of the Gemeinsamer Ausschuss Elektronik im Bauwesen. This project is not affiliated with or endorsed by GAEB.