Skip to content

skurzinz/dsebaseapp

 
 

Repository files navigation

#dsebaseapp

dsebaseapp 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.

History

dsebaseapp 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, dsebaseapp should help you getting things done. generic-de-web-app as well as dsebaseapp 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.

Web app features

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.

Getting started

  1. 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/dsebaseapp.git <folder-name>

  2. Run a search and replace through the whole codebase, replacing dsebaseapp with e.g. the name of your application’s root directory. Since dsebaseapp is used in several namespaces, make sure the replacement string does not contain any tricky characters.

  3. 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'.

  4. 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/.

  5. Install this package via eXist-db’s package manager.

  6. Click through your application and start customizing.

Customization

XML2HTML

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.

Index views

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

  1. open <folder-name>/pages/persons.html
  2. search for the line(s) calling any template function like <tr data-template="app:listPers"/>
  3. Look up this function in <folder-name>/modules/app.xql.
  4. Tweak that function according to your needs.
  5. Make sure the number of returned columns match the HTML markup.

to be continued....

About

Digital (scholarly) Editions Base Application

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • XSLT 40.7%
  • XQuery 36.2%
  • HTML 21.4%
  • JavaScript 1.4%
  • CSS 0.3%