Technical Details

The technical aspect of the database was designed by Jan Odstrčilík in 2020-2021 as a minimal-computing experiment. The main challenge was twofold: First, transforming the structure of the original catalogue prepared by Matthias Tischler into TEI:XML format. Second, designing a sustainable, low-cost prototype for the database. The prototype has proven to be a viable solution that was then further developed into the current website. Nevertheless, it is important to stress the experimental and low-cost nature of this endeavour.

Data Structure

The original catalogue in MS Word format is structured by authors and their works with corresponding manuscript occurrences. For the purpose of the database, the structure was transformed into TEI:XML manuscript descriptions, thus the manuscript itself became the main unit of the database, from which all other views are generated. The transfer of the data from the original catalogue into TEI:XML was done manually, which albeit time-consuming, allowed for a careful review of the data and its correction.

TEI:XML Encoding

The TEI:XML encoding of the manuscripts includes selected metadata about the manuscripts, authors, works, origin and availability of digital images. The TEI:XML files are stored in the repository in the folder /data/manuscripts.

Authors, works, editors, medieval catalogues and places are encoded in separate files (listAuthors.xml, listWorks.xml, listEditors.xml , listMedievalCatalogues.xml, listPlaces.xml) and are referenced in the manuscript descriptions, using @key attributes.

Other pages (about, team, technical details and similar) are generated directly from special XSL files.

Database Design and Sustainability

The first prototype of the website used eXist-db as a database engine. This was abandoned due to the cost of hosting and necessary regular maintenance. We were inspired by Endings Principles for Digital Longevity and decided to use a static website generator approach: TEI:XML files are transformed into a very high number HTML files using XSL transformations - for manuscripts descriptions, list of authors, list of works, list of medieval catalogues, list of libraries, list of places, and similar. From the perspective of the user, this result is very similar to a dynamic website.

TEI:XML2HTML Transformations

The scripts are written in XSLT 3 and saved in the repository in the folder /xsl/tei2html_scripts. They can be run either locally (one by one or in batch), or using GitHub Actions when changes are made. The repository includes Saxon HE, in accordance with its license and which is used for running the transformations.

CSS and JavaScript

Originally, we relied on Bootstrap CSS framework. Thanks to the help of Martin Roček, we transitioned into local simple CSS and JavaScript files.

For the search functionality, we use Lunr.js, which is a simple and fast JavaScript search engine. The search index is generated using XSL transformations and is stored in a JSON file.

For displaying the map, we use Leaflet.

Hosting

The repository is hosted on GitHub and the website is hosted on GitHub Pages.

Limitations of the approach

Currently, the main bottleneck and weak point is the editing of TEI:XML files.

First, there is currently no Graphical User Interface for creating and editing these files. We have experimented with Oxygen XML Editor forms and AutoHotkey scripts but in the end, we relied on training of the editors. This can lead to unnecessary errors and inconsistencies.

The issue is aggravated by the lack of custom schema for the TEI:XML files. This will be addressed soon.

In order to mitigate the risk of errors, we have implemented a set of data validation scripts, which check the consistency of the data and generate reports.

Jan Odstrčilík

2nd August 2026