This is the outline of the Introduction to TEI-XML workshop taught by Clayton McCarl for the UNF Digital Humanities Initiative on 4/20/16.

A practical workshop designed to get you started editing and publishing documents in TEI-XML

I. Objectives

Participants will:

  • understand basic concepts and terminology related to electronic textual editing;
  • grasp the essential purpose and structure of XML generally, and TEI-XML in particular;
  • learn the basics of using the oXygen XML editor, including introducing elements, validating and debugging;
  • encode basic aspects a short text (or a selection of a longer text), using both structural and semantic elements;
  • get started using TEI Boilerplate as a platform to publish TEI documents; and
  • know where to go for more information.


II. Background and terminology

A. Textual editing

1. What is textual editing?

2. Is textual editing cool?

3. Literary editing vs. documentary editing: still (if ever) a valid dichotomy? (2015 STS/ADE joint conference)

4. Examples:

a. edition of Avisos in Scholarly Editing

b. current coloniaLab projects

c. other projects: TEI-XML


1. “markup language” vs. “programming language”

2. HTML vs. XML

3. How is XML structured?

a. XML schema/DTD = a set of rules, defines structure of XML doc

b. Two types of elements

i. Paired (<p>Text goes here.</p>)

ii. Empty (<pb/>)

b. Attributes (<p n=”01″>)

d. “well formed,” “valid”

3. What is the Text Encoding Initiative (TEI)?

4. What are the P5 Guidelines?

II. Getting started

A. Launching the oXygen XML editor

B. Creating a new P5 TEI-XML file (File > New > TEI P5 > All)

C. Basic structure of that file

1. Declarations (<?xml version=”1.0″ encoding=”UTF-8″?>, etc.)

2. <TEI>

3. <teiHeader>

4. <text>

5. <body>

III. Some basic TEI-XML elements

A. Formal elements/elements that describe physical characteristics

1. <pb/>

2. <p> paragraph

3. <lb/> line break, <lb break=”no”/> for non-breaking line

B. Semantic elements/elements that address meaning or content

1. <name type=”person”>, <name type=”place”>

2. <date when=”YYYY-MM-DD”>

3. <foreign>

C. Elements for modernization/regularization

1. <choice><orig></orig><reg></reg></choice>

2. <choice><abbr></abbr><expan></expan></choice>

3. <choice><sic></sic><corr></corr></choice>


IV. Validating

A. Document > Validate > Validate

B. Where is the error?

C. Don’t wait to validate


V. TEI Boilerplate

A. What is TEI Boilerplate?

B. How do I get started?

1. Download the TEI Boilerplate files

2. Unzip the files

3. Launch WinSCP (or another SFTP client)

4. Initiate a connection to your UNF web space

a. File protocol: SFTP

b. Host:

c. Username: your n#, with lower case n

d. Password: your network password

e. “Login”

5. Locate the unzipped TEI-Boilerplate-Master folder in the file tree on left side of screen (local machine), and find the “dist” subfolder

6. Make sure file tree on right side (server) is at n99999999/homepage. If you don’t have a “homepage” directory (you may not), you will need to create it. You will only be able to publish to the web materials that are in this directory.

7. Drag the “dist” folder from the left side to right to copy to server into the “homepage” folder.

8. Open a browser and paste in address bar this url: (changing the 9s to your own n#).

9. You’re seeing a default file named teipb.xml displayed through this new installation of Boilerplate, located on your UNF web space

C. How is Boilerplate structured?

1. content folder. Your XML files go here, and the xsl (transformation) files are here, too.

2. css (cascading style sheets) folder

3. images folder

4. js (javascript) folder

D. How do I publish my own XML file?

1. Add the following declaration, following the other declarations and before the <TEI> element:

<?xml-stylesheet type=”text/xsl” href=”custom.xsl”?>

2. Save your file

3. Follow steps above to transfer it to “content” folder

4. Open in browser (where 9s are your n# and Xs are your file name)

E. How do I customize Boilerplate?

1. Changing css

a. Use oXygen to make changes to the css files (teipb.css, sleepy.css or terminal.css) or make make your own custom css files (if you do this, you’ll need to adjust the selector box to invoke them, by copying the code for this from teipb.xsl to custom.xsl and modifying it accordingly (see #2 below). I can help you individually with this.

b. Transfer your modified css files to the css folder on server

c. You may need to clear browsing history in browser in order to see changes (old css may be cached)

2. Changing xslt

a. Make changes to custom.xsl file (code in this file overrides what is in teibp.xsl)

b. Transfer to content folder on server

VI. Where can I learn more?

A. w3schools XML tutorial

B. w3schools XSLT tutorial

C. w3schools CSS tutorial

D. TEI-c “Learn the TEI” tutorial

E. TEI-XML P5 Guidelines

F. Subscribe to:

1. TEI-L Listserv

2. SEDIT-L Listserv