Create a Unique Value for an xml:id Attribute
Introduction
LEMDO uses
@xml:id attributes across the project to give unique identifiers to various entities: people,
productions, sources, projects, organizations, characters, divisions in documents,
paragraphs in documents, and anchors in documents. We have thousands of
@xml:id attributes in the LEMDO project, and the value (ID) of each one of them must be unique across the entire project. Duplicate IDs will break the build.Principles
No matter the type of file, some principles are true for all xml:ids that you create:
All xml:ids must be unique through the entire LEMDO project.
The xml:id for a file must match the filename (e.g., the file named emdH5_FM.xml has an
@xml:id value of "emdH5_FM". Note that you do not need to include the file extension in the xml:id.)Within a file, all xml:ids must begin with the xml:id of the file followed by an underscore
(e.g., all xml:ids for paragraphs in the file with xml:id
"emdHW_GenIntro" must begin with "emdHW_GenIntro_").Practice: Give Entities in Your Edition Unique IDs
For edition files and identifiers within edition files (paragraphs, acts, scenes,
speeches, etc.), we meet the need for uniqueness by insisting that every
@xml:id value begin with emd followed the abbreviation of the play. For example, every xml:id created for the
edition of Famous Victories begins with emdFV. This ensures that each file is unique to the edition.Practice: Give Entities in Your Anthology Unique IDs
For anthology pages, we meet the need for uniqueness by insisting that every
@xml:id value begins with the abbreviation for the anthology. For example, the Aboutpage for QME has the
@xml:id value of "qme_about", which is also the name of the file (qme_about.xml). The Aboutpage for DRE has the
@xml:id value of "dre_about". (Note that when we build your final anthology, we remove the qme_ and dre_ portion of the file names to keep your final, public-facing URLs lightweight.)Practice: Create Unique IDs for Entities in Sitewide Databases
This section pertains mainly to LEMDO Team members at UVic: when you are creating an
@xml:id value for an entity in one of the sitewide database files (PERS1, PROS1, GLOSS1,
HAND1, BIBL1, PROD1, ORGS1, or TAXO1), you must check the complete list of LEMDO
@xml:id values to ensure that you are creating a new value. These ids are generally four
uppercase letters followed by a number (JENS1, SHAK1, ADAM1, LEMD3, and so on).You can view all the
Note that this is a lightweight page that loads quickly but does not give any details
about the entity that the xml:id is used for. For this reason, this page is useful
mainly for determining whether or not an ID has been used already.
@xml:id values in the project (except for the anchor, speech, and paragraph IDs) from the
LEMDO-dev site. Note that you must be looking at the most recent build of the site
to see the most recently added xml:ids. To this end, we recommend that you refresh
the LEMDO-dev site regularly. To view a .txt list of all xml:ids used across the LEMDO
project:
Click on the
Resourcesbutton on the top navigation bar of the LEMDO-dev website.
Select
All xml:ids (.txt version).
Search for the ID that you wish to assign using Ctrl+F (Cmd+F on Mac). If it is already
taken, assign the next available xml:id. For example, if you want to create an ID
beginning with ADAM, search the page for the string
ADAM.If your search shows that ADAM1, ADAM2, and ADAM3 have been used, then the next available ID is ADAM4.
Practice: Create Unique IDs for Entities in Documentation
All xml:ids in documentation must begin with
"learn" followed by an underscore. The value after that should be descriptive. For more information
on creating an xml:id for a documentation page, see Create and Name Documentation Files.
To ensure that the xml:id is unique, check list of all xml:ids on the LEMDO-dev site.
Practice: Find Duplicate IDs in a File
If you do get a validation error related to duplicate IDs in your file, it can be
a time consuming and difficult task to find the duplicate xml:ids. You can use XPath
on your invalid file to find the duplicate xml:ids. To do so:
Right click on your file in Oxygen’s project pane.
From the drop-down list, select
XPath in Files…
In the XPath pane now open on the right side of your Oxygen window, paste the following
XPath to find the first instance of a set of duplicate IDs:
//*[@xml:id = following::*/@xml:id]/@xml:id
Click the red play button at the top of the XPath pane to run the XPath in the file.
This will navigate to and highlight the first instance of the duplicate IDs.
Copy the value of the
@xml:id attribute.Use Ctrl+F (Cmd+F on Mac) to open your find/replace window in Oxygen.
In the
Findbox, paste the duplicate xml:id that you had copied.
Click the
Find Allbutton.
Update the xml:ids so that they all have unique values.
Make sure that you update any links to the updated ID.
Reference Table of xml:id Formats
| Entity Type | xml:id Format | Example(s) |
| File in a LEMDO edition |
"emdABBR_identifier"
|
"emdMucd_copies"
|
Section of a critical paratext, anthology about page, or documentation page (
<div>
) |
"filename_identifier"
|
"emdMucd_copies_intro"; "dre_citing_peerReview"; "learn_xmlids_table"
|
Paragraph in a critical paratext, anthology about page, or documentation page (
<p>
) |
"filename_p#"
|
"emdAHDM_GenIntro_p1"; "dre_history_p1"; "learn_xmlids_p1"
|
| Act in a modernized text |
"emdABBR_M_a#"
|
"emdH5_FM_a1"
|
| Scene in a modernized text with acts and scenes |
"emdABBR_M_a#_s#"
|
"emdH5_FM_a1_s1"
|
| Scene in a modernized text without acts |
"emdABBR_M_s#"
|
"emdAHDM_M_s1"
|
| Speech in a modernized text with acts and scenes |
"emdABBR_M_a#_s#_sp#"
|
"emdH5_FM_a1_s1_sp1"
|
| Speech in a modernized text without acts |
"emdABBR_M_s#_sp#"
|
"emdAHDM_M_s1_sp1"
|
| Stage direction in a modernized text with acts and scenes |
"emdABBR_M_a#_s#_sd#"
|
"emdH5_FM_a1_s1_sd1"
|
| Stage direction in a modernized text without acts |
"emdABBR_M_s#_sd#"
|
"emdAHDM_M_s1_sd#"
|
| Speech in a semi-diplomatic transcription |
"emdABBR_Q1_sp#"
|
"emdAHDM_Q1_sp1"
|
| Stage direction in a semi-diplomatic transcription |
"emdABBR_Q1_sd#"
|
"emdAHDM_Q1_sd1"
|
| Anthology about page |
"abbr_identifier"
|
"moms_resources"
|
| Sitewide database entity |
"AAAA#"
|
"JENS1"
|
| Documentation page |
"learn_identifier"
|
"learn_xmlids"
|
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 Beatrice 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.
Nicole Vatcher
Technical Documentation Writer, 2020–2022. Nicole Vatcher completed her BA (Hons.)
in English at the University of Victoria in 2021. Her primary research focus was women’s
writing in the modernist period.
Si Micari-Lawless
Si Micari-Lawless is a research assistant with LEMDO and MoEML, and an incoming fourth-year
English major at the University of Victoria.
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
| Authority title | Create a Unique Value for an xml:id Attribute |
| Type of text | Documentation |
| Publisher | University of Victoria on the Linked Early Modern Drama Online Platform |
| Series | Linked Early Modern Drama Online |
| Source |
TEI Customization created by Martin Holmes, Joey Takeda, and Janelle Jenstad; documentation written by members of the LEMDO Team
|
| Editorial declaration | n/a |
| Edition | Released with Linked Early Modern Drama Online 1.0 |
| Encoding description | Encoded in TEI P5 according to the LEMDO Customization and Encoding Guidelines |
| Document status | prgGenerated |
| Funder(s) | Social Sciences and Humanities Research Council of Canada |
| License/availability |
This file is licensed under a CC BY-NC_ND 4.0 license, which means that it is freely downloadable without permission under the following
conditions: (1) credit must be given to the author and LEMDO in any subsequent use
of the files and/or data; (2) the content cannot be adapted or repurposed (except
in quotations for the purposes of academic review and citation); and (3) commercial
uses are not permitted without the knowledge and consent of the editor and LEMDO.
This license allows for pedagogical use of the documentation in the classroom.
|