Navigate the site: XBRLXSLTXSLXML






Case Studies

Numismatic Reference Work

The XML modeled information of the data (see XML aspects) includes weight information for each known specimen of the coin type.

XSLT includes enough math capabilities to calculate the average in a straightforward manner of this set of weights. For the standard deviation the sum of the squares of the weight offset from the average is also easy to compute. Although XSLT 2.0 has a quite rich function library this does not include a square root function, which is needed to compute the standard deviation. One implementation of this function (in XSLT 1.0) as a template is part of the EXSLT library. A popular XSLT 2.0 implementation (Saxon) permits all Java math functions to be easily declared as extension functions.

The set of weights is also used as input to a series of templates that creates an SVG representation of a histogram of the weights. These templates represent some 400 lines of code.

This case study shows the power that XML modeled data and XSLT as a styling language provides. XSL Formatting Objects aspects gives a few additional details on the generation of the final pages.

Generation of a Web-site

XSLT can be used very effectively to generate a web site from one or more XML documents. All the HTML pages in this web site were generated from a single XML file. In this application each HTML "page" is a <page> element with attributes giving a "nice" name and a file name. Advantages in this case include:

  • the "look and feel" of the website is controlled by the XSLT style-sheet; the geometry, whether the HTML pages are nested tables or using frames, constant information on each page: logo and hot links in the graphic at the top and navigation bar on the side
  • cross references targets are automatically updated to point to the correct HTML page by using the file name attribute on the appropriate <page> element
  • keywords in metadata can be "inherited" from "ancestors" in the web page hierarchy"
  • easier to edit for consistency by find and replace in one file

Another case of generating a web site is the creation of a web site of an "inventory" with an "index" page linking to a page for each object in the inventory. A specific example is for the inventory of Thai coins in the British Museum. The information for each coin is in one XML element with attributes specifying the data. For example:

<thmod  nr="BM0167" ru="r4" me="ag" d="b1"
da="(1857)" wt="15.69" altwt="242." altwtunit="grain"
ttc="408.2 p.131" km="Y14"
comm="Struck in England before shipping the dies to Bangkok"
cscan="BM0167O BM0167R BM0167E"
labelcscan="BM0167L BM0167M" inv_nr="57-11-4-2"
donor="Earl of Clarendon" ddate="1857-11"/>

The attributes can be thought of a "fields" in a database or as a set of sub-elements of an element for each coin. In many cases the values are a "short hand" for the information - e.g. "r4" for the ruler "Rama IV". As far as possible the values are enumerated sets to help in validation. The "wt" attribute is used for the weight in grams of the coin. A pair of attributes "altwt" and "altwtunit" give an alternate weight; this information is used to compute the alternate weight in grams. For this specific coin the alternate weight (in grains) was established in 1857 and the coin was re-weighed (in grams) in recent times. Important attributes are "nr", giving a unique identified for the coin, and the "cscan" and "labelcscan" attributes giving the file names of the images for the coin and the label in the tray.

The XSLT style-sheet makes two passes through set of coin elements. The first pass creates an "index" page with references to a page for each coin. The name of the page is taken from the unique "nr" attribute. The second pass creates an HTML page for each coin combining text and the referenced image files. Each of the image files is a link to an enlarged image and "X"es are links to even bigger enlargements.

A sample page for a coin in the inventory (images courtesy of the Trustees of the British Museum):