LSE Aggregated Training Information: Documentation

The Upcoming Training page, and its variant formatted for the plasma screens, aggregates information drawn from the booking systems of various training providers at LSE. This grew from a realisation that students and staff could not easily find information on training courses. For example, if they wanted to learn how to use EndNote, would they need to contact the IT Training department (part of IT Services), the Library, or the Centre for Learning Technology? (In this instance, it's the Library).

Data from these disparate booking systems is output in RSS format, and subsequently aggregated using the Magpie RSS PHP Class. A full discussion of RSS lies outside the scope of this document, but can be found at the RSS Specification site. Since RSS is a subset of XML, it is extensible by reference to additional namespaces. The Dublin Core Terms namespace, and the RSS Event namespace allow us to provide additional metadata useful for filtering events such these.

Example XML

The following is an example of a well-formed XML document describing a series of events:

<rss version="2.0" xmlns:ev="http://purl.org/rss/1.0/modules/event/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:dcterms="http://purl.org/dc/terms/">
  <channel>
  <title>Training at LSE</title>
  <link>http://www.lse.ac.uk/training</link>
  <description>Training courses at LSE, provided by IT Training, 
    the Centre for Learning Technology, the Library and the Teaching 
    and Learning Centre</description>
    <language>en</language>
    <pubDate>Thu, 08 Feb 2007 00:00:05 +0000</pubDate>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <webMaster>clt-support@lse.ac.uk</webMaster>
    <ttl>180</ttl>    

    <item>

      <title>Project 2003: Tasks</title>

      <link>http://ittraining.lse.ac.uk/Staff/detail.asp?coursetitleID=158</link>
      <description>
      <![CDATA[
      By the end of this course, you will be able to: 
      <ul>
        <li>create a new project file and set working calendars</li>
        <li>work with time options to set up a sequence of tasks required for your project</li>
        <li>identify links between different tasks and which tasks are dependant on others</li>
        <li>understand the tasks which, if delayed, will offset your completion time (critical path)</li>
        <li>understand the elements of a Gaant chart for tracking tasks over time and how to format it</li>
      </ul>
      ]]>
      </description>
      <pubDate>Wed, 7 Feb 2007 00:00:05 GMT</pubDate>
      <guid>http://ittraining.lse.ac.uk/Staff/detail.asp?coursetitleID=158</guid>

      <ev:organizer>IT Training</ev:organizer>
      <ev:startdate>2007-02-08T10:00:00+00:00</ev:startdate>
      <ev:enddate>2007-02-08T12:00:00+00:00</ev:enddate>
      <ev:location>R08: Library Training Room 2 - LGF</ev:location>
      <ev:type>Course</ev:type>
	  
      <dcterms:audience>AcademicStaff</dcterms:audience>
      <dcterms:audience>AcademicSupportStaff</dcterms:audience>
      <dcterms:audience>CentralAdminStaff</dcterms:audience>

    </item>
    
    <item>
    <!-- Further items follow -->
    </item>
    
  </channel>
</rss>

Element description

<rss>

<rss version="2.0" xmlns:ev="http://purl.org/rss/1.0/modules/event/"
		   xmlns:dc="http://purl.org/dc/elements/1.1/"
		   xmlns:dcterms="http://purl.org/dc/terms/">

This tag references the Events, Dublin Core and Dublin Core Terms namespaces, allowing the use of additional XML elements not found in the RSS namespace

<![CDATA

<description>
<![CDATA[
 ...
]]>
</description>

The CDATA section demarcates characters that will be ignored by the XML parser. This allows the inclusion of HTML.

<ev:startdate> and <ev:enddate>

<ev:startdate>2007-02-08T10:00:00+00:00</ev:startdate>
<ev:enddate>2007-02-08T12:00:00+00:00</ev:enddate>

The ev:startdate field allows the aggregator to filter events that have already taken place, yet still exist in the feed. It also allows for a subset of events to be displayed based on a date range, e.g. the plasma screen only displays courses scheduled to take place in the following week.

The ev:enddate field allows an aggregator to specify the duration of the course; this information is not currently displayed.

The Events namespace requires the use of ISO8601 dates and times. We have chosen to inlcude the full date, time and offset from UTC, i.e. YYYY-MM-DDThh:mm:ssTZD. This is trivial to produce using PHP: date('c', timestamp);. However, your database's date format may require processing to generate a Unix timestamp, e.g. for Microsoft Access, the format is #YYYY-MM-DD hh:mm:ss#.

<dcterms:audience>

<dcterms:audience>AcademicStaff</dcterms:audience>
<dcterms:audience>AcademicSupportStaff</dcterms:audience>
<dcterms:audience>CentralAdminStaff</dcterms:audience>

These elements allow the training provider to specify a target audience for this training course or event. The aggregator allows users to filter for courses on which they may register. If the event is open to everyone, all audiences should be specified so the event will still be displayed when a filter is in place. We have agreed on the following controlled vocabulary for this element:

The aggregator currently only filters for "Staff", and the three student types. This is possible because the string "Staff" exists in all three categories.

Resources


Author: Chris Fryer <clt-support@lse.ac.uk> 08 February 2007