#dhd-boas-app
dhd-boas-app stands for Digital (Scholarly) Editions Base Application. Its purpose is to bootstrap the development of (web) applications which support the process of
- creating
- curating
- enriching
- analysing
- and publishing
texts encoded in XML and validating against a TEI (P5) schema.
dhd-boas-app is a successor of the generic-de-web-app project described by the blog post series How to build a digital edition web app. While these blog posts were focused on describing general principles and basic implementations of a digital edition web app, dhd-boas-app should help you getting things done. generic-de-web-app as well as dhd-boas-app are designed as (almost) self-containing eXist-db packages. Therefore you can
- install your dse-web application via eXist-db’s package manager,
- download your dse-web app via eXist-db’s package manager,
- and tweak your app via eXist-db’s built in editor eXide.
The application ships with the following default features:
-
A customizable (in terms of ordering and filtering) table of contents of documents stored in specific directories is created
-
Links from this table of contents to HTML views
-
Default XSLT transforms TEI documents into HTML
-
Full text search over all documents in the edition.
-
Linking between index entries (e.g. of persons, places, …) and mentions of those indices in the text (e.g. through
@ref
) is supported. -
Index based search
-
Access to data via simple API(s)
-
Timeline and Network visualisations
-
Map Visualisation of georeferenced places
-
GND Beacon
-
several scripts for processing/enriching/harmonizing your data
-
an NLP (natural language processing) module for processing your data with 3rd party NLP services
-
autocomplete endpoints for entities
Basically all features mentioned above are implemented with plain XSLT, XQuery and some JavaScript.
-
Clone the repo into a suitable directory. Be aware that the name of the applications root directory will show up in several places (e.g. the name of the application’s .xar package)
git clone https://github.com/KONDE-AT/dhd-boas-app.git <folder-name>
-
Run a search and replace through the whole codebase, replacing
dhd-boas-app
with e.g. the name of your application’s root directory. Sincedhd-boas-app
is used in several namespaces, make sure the replacement string does not contain any tricky characters. -
Go through the
data
directory and replace the existing data with your own. But keep the directory structure (data/editions/, data/indices/, data/meta/
) as it is.
Ideally, your data (structure, markup) is very similar to the application’s sample data – in this case most of the features mentioned above should work 'out of the box'. -
After these initial changes try to build your application by running
ant
in your application’s root directory. This should create a<folder-name>.xar
in<folder-name>/build/
. -
Install this package via eXist-db’s package manager.
-
Click through your application and start customizing.
The detail views of the 'regular' XML/TEIs is generated by a simple XML2HTML transformation using an XSLT stylesheet. This stylesheet is located at <folder-name>/resources/xslt/xmlToHtml.xsl
. This should be the central entry to point for changing the HTML representation of your data. This stylesheet also serves as default in cases when there is no stylesheet parameter provided unlike in a request as ...&stylesheet=meta
which would look into <folder-name>/resources/xslt/
for a document named meta.xslt
.
The index views for persons, places, … are created with XQuery functions, called through eXist-db’s templating system and stored in <folder-name>/modules/app.xql
. To find out which function is responsible for which view, look into the according HTML
. To modify e.g. the person index view called by the URL .../pages/persons.html
you need to
- open
<folder-name>/pages/persons.html
- search for the line(s) calling any template function like
<tr data-template="app:listPers"/>
- Look up this function in
<folder-name>/modules/app.xql
. - Tweak that function according to your needs.
- Make sure the number of returned columns match the HTML markup.
to be continued....