Encode Speakers in Modernized Texts

Prior Reading

This documentation presupposes that you have already created a <listPerson> in the <teiHeader> of your modernized text. If you have not yet done this, please refer to:

Rationale

LEMDO’s encoding protocols for speakers have four aims:
To ensure consistency in the speech prefixes of a modernized text
To allow for changes in a character’s title over the course of a play (from “Prince” to “King”, for example)
To identify all of the speeches spoken by a single character in a play and make them processable (for cue scripts, for example)
To accommodate for multiple speakers who share a speech and unusual speech prefixes (such as “All”, “Both”, or “Voices within”)
This documentation will guide you through these protocols, so that you can correctly encode the speakers in your modernized text.

Introduction

In modernized texts, LEMDO connects speeches to characters in two ways:
Adding a @who attribute to the <sp> element, so that each <sp> element contains machine-readable identification linking back to the <listPerson> element.
Adding a <speaker> element as a child of the <sp> element, so that you have control over the rendered speech prefixes in your edition.
The link to your <listPerson> element created by your @who attribute allows our Schematron to check your speakers for consistency and ensure that your <listPerson> captures every speaking character in your text. The @who attribute is required on every <sp> element in a modernized text.
The text in your <speaker> element must match one of the <reg> elements in your <listPerson> . This constraint allows our Schematron to check for consistency in spelling and capitalization in the speech prefixes throughout your file.

Practice: Encode the @who Attribute

To link from a speech to a character in your <listPerson> :
Put a @who attribute on your <sp> element.
Find and copy the @xml:id on the <person> element associated with the character in your <listPerson> .
Give the @who attribute a value of "#" followed by the @xml:id of the character that you just copied.
The value of the @who attribute should be formatted as "#characterID".
In the following example from Henry V, the editor identifies the speech as being spoken by King Henry by linking back to the @xml:id of King Henry in the <listPerson> :
<teiHeader><!-- … -->
  <listPerson><!-- … -->
    <person xml:id="emdH5_FM_KingHenry">
      <persName>
        <name>King Henry V</name>
        <reg>King Henry</reg>
      </persName>
    </person>
    <!-- … -->
  </listPerson>
  <!-- … -->
</teiHeader> <text>
  <body><!-- … -->
    <sp who="#emdH5_FM_KingHenry">
      <l>Once more unto the breach, dear friends, once more,</l>
      <!-- … -->
    </sp>
    <!-- … -->
  </body>
</text>
In this case, the value of the @xml:id on the <person> element is "emdH5_FM_KingHenry". The value on the @who attribute is therefore "#emdH5_FM_KingHenry".

Practice: Encode the Speech Prefix

To encode a speech prefix:
Add a <speaker> element as a child of your <sp> element.
Type the speech prefix into the text node of the <speaker> element. Note that the speech prefix must exactly match the text from a <reg> element in your <listPerson> .
For example, the speech prefix for the same Henry V speech is encoded as follows:
<teiHeader><!-- … -->
  <listPerson><!-- … -->
    <person xml:id="emdH5_FM_KingHenry">
      <persName>
        <name>King Henry V</name>
        <reg>King Henry</reg>
      </persName>
    </person>
    <!-- … -->
  </listPerson>
  <!-- … -->
</teiHeader> <text>
  <body><!-- … -->
    <sp who="#emdH5_FM_KingHenry">
      <speaker>King Henry</speaker>
      <l>Once more unto the breach, dear friends, once more,</l>
      <!-- … -->
    </sp>
    <!-- … -->
  </body>
</text>
Because King Henry is the exact text in the <reg> element for the character, it is allowed in the text node of the <speaker> element.

Special Case: Characters with Names that Change

In some cases, a character’s name changes partway through a text (e.g., Prince to King). In these cases, their <person> element in your <listPerson> will contain multiple <reg> elements. You are responsible for deciding which allowed speech prefix to use at any given point.
For example, Henry’s title changes from Prince to King in 2H4, as shown by the following encoding:
<teiHeader><!-- … -->
  <listPerson><!-- … -->
    <person xml:id="emd2H4_M_Henry">
      <persName>
        <name>Prince Henry, afterwards crowned King Henry the Fifth</name>
        <reg>Prince</reg>
        <reg>King Henry</reg>
      </persName>
    </person>
    <!-- … -->
  </listPerson>
  <!-- … -->
</teiHeader> <text>
  <body><!-- … -->
    <sp who="#emd2H4_M_Henry">
      <speaker>Prince</speaker>
      <p>Before god, I am exceeding weary.</p>
    </sp>
    <!-- … -->
    <sp who="#emd2H4_M_Henry">
      <speaker>King Henry</speaker>
      <l>I know thee not, old man. Fall to thy prayers.</l>
    </sp>
    <!-- … -->
  </body>
</text>
In this case, two <reg> elements are associated with Henry. At the beginning of the play, his speech prefix is Prince, matching the first <reg> element listed within his <person> element. After he is crowned, his speech prefix becomes King Henry, matching the second <reg> element. The value on the @who attribute is the same in both cases, as both speech prefixes refer to the same <person> element.

Special Case: Multiple Speakers

Some speeches are spoken by more than one speaker. In those cases, the value of the @who attribute follows the formula of "#firstCharacterID #secondCharacterID". Inputting each individual speaker’s @xml:id correspondingly links their individual <person> element to the speech. Note that any number of speakers can be assigned to a speech by lengthening the formula as required. As in all cases where multiple values are allowed on a single attribute, the individual values are seperated by a space.
When there is a speech with multiple speakers, the content in the text node of the <speaker> element is not required to match any of the corresponding <person> elements’s <reg> values.
For example, the following speech in Famous Victories of Henry V is spoken by two characters:
<teiHeader><!-- … -->
  <listPerson><!-- … -->
    <person xml:id="emdFV_M_Ned">
      <persName>
        <name>Ned, Prince Henry’s companion</name>
        <reg>Ned</reg>
      </persName>
    </person>
    <person xml:id="emdFV_M_Tom">
      <persName>
        <name>Tom, Prince Henry’s companion</name>
        <reg>Tom</reg>
      </persName>
    </person>
    <!-- … -->
  </listPerson>
  <!-- … -->
</teiHeader> <text>
  <body><!-- … -->
    <sp who="#emdFV_M_Ned #emdFV_M_Tom">
      <speaker>Ned and Tom</speaker>
      <p>Here, my lord.</p>
    </sp>
    <!-- … -->
  </body>
</text>

Special Case: Irregular Speakers

If a speech has irregular or exceptional speakers, such as All or Voices within, the value of the @who attribute should be "spkr:other". In this case, the content of the <speaker> element is not checked against any @xml:id belonging to <person> elements listed in the TEI header.
For example, this speech in Othello is spoken by Voices Within:
<sp who="spkr:other">
  <speaker>Voices Within</speaker>
  <l>A sail! A sail! A sail!</l>
</sp>

Prosopography

Isabella Seales

Isabella Seales is a fourth year undergraduate completing her Bachelor of Arts in English at the University of Victoria. She has a special interest in Renaissance and Metaphysical Literature. She is assisting Dr. Jenstad with the MoEML Mayoral Shows anthology as part of the Undergraduate Student Research Award program.

Janelle Jenstad

Janelle Jenstad is a Professor of English at the University of Victoria, Director of The Map of Early Modern London, and Director of Linked Early Modern Drama Online. With Jennifer Roberts-Smith and Mark Kaethler, she co-edited Shakespeare’s Language in Digital Media: Old Words, New Tools (Routledge). She has edited John Stow’s A Survey of London (1598 text) for MoEML and is currently editing The Merchant of Venice (with Stephen Wittek) and Heywood’s 2 If You Know Not Me You Know Nobody for DRE. Her articles have appeared in Digital Humanities Quarterly, Elizabethan Theatre, Early Modern Literary Studies, Shakespeare Bulletin, Renaissance and Reformation, and The Journal of Medieval and Early Modern Studies. She contributed chapters to Approaches to Teaching Othello (MLA); Teaching Early Modern Literature from the Archives (MLA); Institutional Culture in Early Modern England (Brill); Shakespeare, Language, and the Stage (Arden); Performing Maternity in Early Modern England (Ashgate); New Directions in the Geohumanities (Routledge); Early Modern Studies and the Digital Turn (Iter); Placing Names: Enriching and Integrating Gazetteers (Indiana); Making Things and Drawing Boundaries (Minnesota); Rethinking Shakespeare Source Study: Audiences, Authors, and Digital Technologies (Routledge); and Civic Performance: Pageantry and Entertainments in Early Modern London (Routledge). For more details, see janellejenstad.com.

Joey Takeda

Joey Takeda is LEMDO’s Consulting Programmer and Designer, a role he assumed in 2020 after three years as the Lead Developer on LEMDO.

Mahayla Galliford

Project manager, 2025-present; research assistant, 2021-present. Mahayla Galliford (she/her) graduated with a BA (Hons with distinction) from the University of Victoria in 2024. Mahayla’s undergraduate research explored early modern stage directions and civic water pageantry. Mahayla continues her studies through UVic’s English MA program and her SSHRC-funded thesis project focuses on editing and encoding girls’ manuscripts, specifically Lady Rachel Fane’s dramatic entertainments, in collaboration with LEMDO.

Martin Holmes

Martin Holmes has worked as a developer in the UVic’s Humanities Computing and Media Centre for over two decades, and has been involved with dozens of Digital Humanities projects. He has served on the TEI Technical Council and as Managing Editor of the Journal of the TEI. He took over from Joey Takeda as lead developer on LEMDO in 2020. He is a collaborator on the SSHRC Partnership Grant led by Janelle Jenstad.

Navarra Houldin

Training and Documentation Lead 2025–present. LEMDO project manager 2022–2025. Textual remediator 2021–present. Navarra Houldin (they/them) completed their BA with a major in history and minor in Spanish at the University of Victoria in 2022. Their primary research was on gender and sexuality in early modern Europe and Latin America. They are continuing their education through an MA program in Gender and Social Justice Studies at the University of Alberta where they will specialize in Digital Humanities.

Sam Seaberg

Samuel Seaberg, a University of Victoria English undergrad, enjoys riding his bike. During the summer of 2025, he began working with LEMDO as a recipient of the Valerie Kuehne Undergraduate Research Award (VKURA). Unfortunately, due to his summer being spent primarily in working to establish an edition of Thomas Heywood’s If You Know Not Me, You Know Nobody, Part 2 and consequently working out how to represent multi-text works in a digital space, his bike has suffered severely of sheltered seclusion from the sun.

Tracey El Hajj

Junior Programmer 2019–2020. Research Associate 2020–2021. Tracey received her PhD from the Department of English at the University of Victoria in the field of Science and Technology Studies. Her research focuses on the algorhythmics of networked communications. She was a 2019–2020 President’s Fellow in Research-Enriched Teaching at UVic, where she taught an advanced course on Artificial Intelligence and Everyday Life. Tracey was also a member of the Map of Early Modern London team, between 2018 and 2021. Between 2020 and 2021, she was a fellow in residence at the Praxis Studio for Comparative Media Studies, where she investigated the relationships between artificial intelligence, creativity, health, and justice. As of July 2021, Tracey has moved into the alt-ac world for a term position, while also teaching in the English Department at the University of Victoria.

Orgography

LEMDO Team (LEMD1)

The LEMDO Team is based at the University of Victoria and normally comprises the project director, the lead developer, project manager, junior developers(s), remediators, encoders, and remediating editors.

Metadata