The edition has been largely developed using web-based tools. On the one hand, this has been necessary due to the team members working in different cities. On the other hand, it seemed only natural to use the web for doing the work when the web is our target medium.
All the programming for the backend and the frontend (i.e.: the edition site, which you are viewing right now) has been done in PHP. Apart from the fact that PHP is a web-focused language and therefore well-suited for an online edition, we chose PHP because of its wide adoption, which increases the likelihood that the software or parts of the software can be re-used in other projects. Moreover, the edition uses an SQL database; on this server it is MySQL, but SQLite is also supported. Support for other databases – for instance, PostgreSQL – could be added easily, as PHP’s PDO API is used for database communication.
Even though Sandrart’s text has been encoded in XML (TEI P5 Lite), we do not use a native XML database. Instead, all relevant information from the source TEI document are extracted and written to the database. Again, this decision is primarily based on the concept of using simple, wide-spread technologies, but furthermore, the edition would not benefit from utilizing a native XML database: as we know how the data is being used in the edition, the data is organized in the relational database in a way that allows for very efficient queries – while arbitrary ad-hoc queries, which would be a stroing point for a native XML database, are not used at all.
Since April 2012, two software packages, which both play a decisive role in this edition, have been available as Open Source Software:
- XMLTransformer is a PHP class for transforming XML documents. This class is performs all XML rendering in the edition. (There is not a single line of XSL-T on this site!)
- TEIShredder – A collection of PHP classes for »Shredding« and indexing of TEI documents as well as retrieval of that information. Whenever XML is displayed or information from XML is searched (for instance, occurrences of named entities in the text) in this edition or the Latin edition, this package is involved.
You will find code, documentation, examples and unit tests for both projects on GitHub.