sportal.com - a sports information site, based in Battersea, London.
Developed from February to March 2000.
To design and implement a live Horseracing site with XML feeds, on the Vignette 4.2 application server and Sportal's existing page framework.
XML DTDs were developed by the Press Association for two data-sets; pre-race information (Race Card), which was to be sent the day before a race, and live information (Results) detailing current and final horse positions sent at frequent intervals during a race.
Sportal had an existing FTP facility through which it was receiving non-XML feeds for football and other sports. The PA undertook to transfer documents and supporting files (trainer colours) to a user area on the FTP facility with a specified file-naming convension, distinguishing race cards from live results.
StoryServer's built-in XML parsing and formatting facilities were found to be too slow and crude to use in real-time, even with the generated pages being cached, since the cache needed to be cleared so often, and peaks of demand where high. It was decided to pre-parse the XML document into a form directly usable by StoryServer's Tcl interpreter, a format which became known as xTcl.
xTcl basically mirrored the xPath XML standard by parsing an XML document into a Tcl array indexed by node paths within the document. Both the body of nested tags, and a tag's attributes could be referenced directly through the array; meta-data was also encoded so that lists of identical tags could be iterated over by reference to indices embedded in the meta-data. The entire xTcl document could be loaded from a string in the database using Tcl's [array set] with high-efficiency, and Tcl code rapidly produce the desired formatting.
A perl script, using the expat extension, collected documents from the FTP site, processed them into xTcl strings, uploaded them to the database, and flushed StoryServer's cache as necessary. The page-demand process would drive the provision of fresh data to the user.
Care was taken with the development of the code to separate database and general processing functionality from HTML formatting, with the result that a WAP application serving some of the same information was written in a few hours by a skilled programmer, reusing all the non-formatting functionality.
The site is still in active service with minor modifications for style and content.