Text only | Skip links
Skip links||IT Services, University of Oxford

1. Introduction

ODD (One Document Does it all) is the XML vocabulary which the TEI system uses to describe itself, and which users of the TEI employ to create documentation and schemas appropriate to their varied needs. It can be used to document and describe any XML vocabulary. Understanding ODD is a two-day workshop taught by the TEI@Oxford team, Lou Burnard, James Cummings, and Sebastian Rahtz.

The first part of the course provides a hands-on practical introduction to the basic ideas of the ODD system, exploring the process of designing a TEI profile from the user perspective, and using the Roma application to model a schema. We will explore the full capabilities of Roma, from designing and testing a basic XML schema with a few clicks, up to the design of a highly customized and multilingual application profile. Attendees are expected to have some basic knowledge of XML and the TEI, but more importantly should come with some specific sets of texts and applications in mind.

The second part explores the ODD encoding system itself. Using common XML editors, we will see how an ODD file is constructed and maintained, and discuss the internal working of the library of XSLT stylesheets provided by the TEI to process them. We will discuss in detail how ODD processors are expected to work, and explore parts of the markup scheme not supported directly by Roma.

2. Course Programme

The details of the course programme are as follows. Each of the teaching sessions will consist of two talks and two practical exercises.

Time Activity Details/learning outcome Leader
09.00 - 10.30 Using Roma to customize the TEI. Slides in PDF and TEI XML. For exercise see exercise-01-roma.xml Participants can use Roma confidently, generate schema and documentation, and use the schema in oXygen JC
11.00 - 12.30 Understanding the ODD language. Slides in PDF and TEI XML. For exercise see exercise-02-odd.xml Participants understand the ODD language, can edit an ODD file using oXygen and process the file using OxGarage or Roma, can work with multiple namespaces, and understand RELAX NG content patterns LB
14.00 - 15.30 Documentation techniques, examples, and writing new ODDs. Slides in PDF and TEI XML. For exercise see exercise-03-odd.xml Participants understand the documentation options of ODD, know how to change the examples, and can start writing ODD for a new language SR
16.00 - 17.30 ‘Frequently Solved Problems’ — complete TEI customizations Participants understand some complex customizations, and discuss their own project needs. SR, JC, LB

3. Resources

Table 2. Data files
work/ex1.xml Sample TEI document to test validation
ex1-spoiler.xml, expanded_ipp.xml, my_ipp.rnc, my_ipp.xml, mymap.xsl, new.odd, new2.odd. Prepared ‘answers’ for exercises
tei_odds.rnc Schema for validating ODD files
skeleton.odd Simple skeleton odd
dc.odd ODD for Dublin core
demo.odd Demo ODD
demo.nvdl NVDL file for demo
oxcap.odd ODD for OxCAP
This document
http://tei.oucs.ox.ac.uk/Oxford/2010-11-10_TEIMM_ODD/
Roma: generating validators for the TEI
http://www.tei-c.org/Roma/
New Roma, using full features of ODD
http://tei.oucs.ox.ac.uk/Roma/; http://www.tei-c.org/Roma2/index.html
OxGarage
http://oxgarage.oucs.ox.ac.uk:8080/ege-webclient
TEI By Example section on ODD
http://tbe.kantl.be/TBE/modules/TBED08v00.htm
TEI @ Sourceforge
http://tei.sourceforge.net/
TEI P5: Guidelines for Electronic Text Encoding and Interchange
http://www.tei-c.org/release/doc/tei-p5-doc/en/html/index.html
TEI: Stylesheets
http://www.tei-c.org/Tools/Stylesheets/
W3C XML Schema
http://www.w3.org/XML/Schema
RELAX NG
http://www.thaiopensource.com/relaxng/
oXygen XML Editor
http://www.oxygenxml.com/

4. Ten customizations

Demonstrating Example
constraining values eg for @type on <div> and for @rend on <hi>
specifying exact releases of the TEI
adding syntactic sugar (eg defining an element <b> as short hand for <hi rend="bold">) Tite
using @except, @include, <elementRef>, <classRef> and <macroRef>
including MathML as content of <formula> ISO
adding HTML or Dublin Core elements in the TEI header
adding local usage examples
writing an ODD from scratch for a new language XCRI
defining complex patterns in RELAX NG to constrain element content, and adding Schematron constraints OUCS
defining multiple schemata in the same ODD file, using common components ISO


Lou Burnard, James Cummings, Sebastian Rahtz. Date: November 2010
Copyright University of Oxford