Skip to content
This repository has been archived by the owner on Dec 10, 2024. It is now read-only.
jmiguelv edited this page Feb 6, 2012 · 12 revisions

Kiln is an open source multi-platform framework for building and deploying complex websites whose source content is primarily in XML. It brings together various independent software components into an integrated whole that provides the infrastructure and base functionality for such sites.

Kiln is developed and maintained by a team at the Department of Digital Humanities (DDH), King’s College London. Over the past years and versions, Kiln (formerly called xMod) has been used to generate more than 50 websites which have very different source materials and customised functionality. Since DDH has in-house guidelines for using TEI P5 to create websites, Kiln makes use of certain TEI markup conventions. However, it has been adapted to work on a variety of flavours of TEI and other XML vocabularies, and has been used to publish data held in relational databases.

Components

  • Apache Cocoon web development framework for XML processing, built with integrated eXist XML database that can be used for storage, indexing and searching using XPath expressions.
  • Apache Solr searching platform for indexing, searching and browsing of contents.
  • Sesame 2 for storage and querying of RDF data.
  • Apache Ant build system that has tasks for running the built-in web application server, running the Solr web server, creating a static version of the website, generating a Solr index of all the desired content.
  • Jetty web application server for immediate running of Cocoon with automatic refreshing of changes.
  • An XSLT-based templating language that supports inheritance, similar to Django’s template block system.
  • Simple Presentation and Interface Library (SPIL), a set of HTML/CSS/JavaScript building blocks.

Architecture

Architecture

In a production web server context, Kiln integrates with other web publishing tools to support images (IIPimage/Djatoka), maps (GeoServer; MapServer; OpenLayers) and other data sources, like relational data (MySQL or other RDBMS).

Customisation

Kiln has been developed around the concept of the separation of roles, allowing people with different backgrounds, knowledge and skills to work simultaneously on the same project without overriding each other’s work. The parts of the system used by developers, designers and content editors are distinct; further, the use of a version control system makes it simpler and safer for multiple people with the same role to work independently and cooperatively.

Since it is impossible to predict every eventuality with regards to a project’s specific XML markup, Kiln offers basic output options which cover the functionality and formats (HTML, PDF, etc) common to all websites, together with an extensible framework supporting the development of any custom functionality that is needed. The system provides for a high-level of customisation, beyond the usable and useful defaults, in the following other areas:

  • Schematron validation based on, and linked to, encoding guidelines published in ODD.
  • Editorial workflow validation. Kiln provides web-based management pages that allow XML files to be checked for inconsistencies and errors.
  • Templates for common types of pages, such as search and search results, indices, and bibliographies.
  • XSLT for indexing contents for Solr. By default it indexes the full text and all the references to marked up entities.

Customisation levels of Solr components

Kiln provides native support for multilingual websites, RSS feeds, form processing, and automated navigation such as sitemaps and indexes, but with some customisation can support the publishing of more complex materials with much deeper markup, such as medieval charters, musicological bibliographies, classical inscriptions, biographies, glossaries and so forth.

Templates

Kiln provides a templating mechanism that provides full access to XSLT for creating the output, and an inheritance mechanism. Templates use XSLT as the coding language to create any dynamic content. Template inheritance allows for a final template to be built up of a base skeleton (containing the common structure of the output) and 'descendant' templates that fill in the gaps. In addition to supplying its own content, a block may include the content of the block it is inheriting from.

Example of basic structure:

<xmtp:root>
    <xmtp:parent>
        <!-- Extend another template by including it. -->
        <xi:include href="base.xml" />
    </xmtp:parent>
    <xmtp:child>
        <!-- Override a block defined in an ancestor template. -->
        <xmtp:block name="title">
            <h3>Title here</h3>
        </xmtp:block>
    </xmtp:child>
</xmtp:root>

Example of inheriting content:

<xmtp:block name="title">
    <!-- Include the parent template's content for this block. -->
    <xmtp:super />
    <!-- Add in new content. -->
    <h5>Smaller title here</h5>
</xmtp:block>

Plans

The development plans for Kiln include amongst other things the integration of Natural Language Processing and text mining processes to auto-annotate the XML content; the integration of Knowledge Representation systems, ontologies, and entity management; a documentation system that generates cross-referenced help pages, including graphical representations, of the various Kiln components and their relationships.

One of the visions for the future of Kiln is to enable individual project sites to exist as more than simple silos, but to relate to each other and the wider Web in machine-usable ways. Support for Linked Data representations of resources and entities is one facet of this work, as is the development of shared ontologies that grow out of existing digital humanities work.

Clone this wiki locally