Appearance
To encode a manuscript description in TEI you use the msDesc element, which holds four main parts: msIdentifier (where the manuscript lives and its shelfmark), msContents (the texts it contains), physDesc (its physical features), and history (its origin and provenance). At minimum you need an msIdentifier; everything else you add as your cataloguing needs grow. msDesc normally sits inside sourceDesc in the teiHeader.
Think of msDesc as a structured version of a catalogue entry. If you have ever read a manuscript catalogue, you already understand its shape — TEI just makes each piece machine-readable.
What goes into msDesc?
msDesc mirrors how codicologists describe books. The four core blocks, in order:
msIdentifier— the manuscript's "address": country, city, holding institution, and shelfmark.msContents— the works inside, often as a list ofmsItementries.physDesc— support (parchment/paper), extent (number of leaves), layout, script, decoration, binding.history— where and when it was made, and who has owned it since.
You do not need all four to start. A record with only msIdentifier is valid and still useful for an inventory.
How do I write the identifier?
Start here, because it is the only effectively required part. The idno is the citable shelfmark; the surrounding elements place it geographically:
xml
<msIdentifier>
<country>United Kingdom</country>
<settlement>London</settlement>
<repository>British Library</repository>
<idno>Harley MS 2253</idno>
</msIdentifier>That alone uniquely identifies the book worldwide. Two libraries may both have a "MS 12", so the repository and place are what disambiguate the shelfmark.
What does a small complete example look like?
Here is a compact but genuine msDesc covering all four blocks for a single-text devotional manuscript:
xml
<msDesc>
<msIdentifier>
<country>United Kingdom</country>
<settlement>Oxford</settlement>
<repository>Bodleian Library</repository>
<idno>MS Douce 16</idno>
</msIdentifier>
<msContents>
<msItem>
<title>Book of Hours, use of Sarum</title>
<textLang mainLang="la">Latin</textLang>
</msItem>
</msContents>
<physDesc>
<objectDesc form="codex">
<supportDesc material="perg">
<support>Parchment</support>
<extent>120 leaves<dimensions unit="mm">
<height>95</height><width>65</width></dimensions></extent>
</supportDesc>
</objectDesc>
<handDesc><p>Gothic textualis, one main hand.</p></handDesc>
<decoDesc><p>Twelve historiated initials in gold and blue.</p></decoDesc>
</physDesc>
<history>
<origin>Northern France, <origDate notBefore="1400" notAfter="1425">c. 1400-1425</origDate></origin>
<provenance>Owned by Francis Douce by 1820.</provenance>
</history>
</msDesc>Notice @material="perg" and @form="codex" — these controlled values make the record filterable, so you can later query "all parchment codices".
How much detail should a beginner record?
Match detail to purpose. The three sensible tiers:
| Level | Includes | Good for |
|---|---|---|
| Minimal | msIdentifier only | Quick inventory, holdings list |
| Standard | + msContents, short physDesc | Searchable catalogue |
| Full | + detailed physDesc, history, additional | Scholarly / codicological study |
Start at minimal, then deepen the records that matter. Trying to write full descriptions for a whole collection at once is the classic way to stall — partial records are normal and respectable.
How do I record dates and uncertainty?
Dates on manuscripts are rarely exact. Use origDate with @notBefore and @notAfter to express a range rather than forcing a single year:
xml
<origDate notBefore="1450" notAfter="1470">mid 15th century</origDate>The human-readable text stays inside the element; the machine-readable bounds live in the attributes. This lets software sort and filter by date even when the date is approximate — a core skill across TEI dating, not just manuscripts.
Key Takeaways
msDeschas four core parts:msIdentifier,msContents,physDesc, andhistory.- Only
msIdentifieris effectively required — a minimal record is still useful. - The
idnois the citable shelfmark; country, settlement, and repository disambiguate it. - Use controlled attribute values (
@material,@form) so records become filterable. - Express uncertain dates with
origDateand@notBefore/@notAfter, not a single forced year. - Match detail to purpose; deepen records incrementally rather than all at once.
Frequently Asked Questions
What is msDesc in TEI?
msDesc (manuscript description) is the TEI element for cataloguing a manuscript: its identity, contents, physical make-up, history, and where it is now. It usually lives in the header's sourceDesc and follows the structure used by manuscript catalogues.
What are the main parts of a manuscript description?
The four core blocks are msIdentifier (where it is and its shelfmark), msContents (what texts it holds), physDesc (its physical features), and history (origin and provenance). Additional optional sections cover binding, acquisition, and surrogates.
Do I need to fill in every element of msDesc?
No. Only msIdentifier is effectively required. A useful minimal record adds a one-line msContents and a short physDesc. Expand only the parts your project or catalogue actually needs; partial descriptions are normal.
Can msDesc stand alone or must it be inside a TEI file?
It is normally a child of sourceDesc inside a teiHeader, but you can also hold many descriptions together using msDesc elements within a larger catalogue document. Either way it sits within a valid TEI structure.
How do I record a shelfmark and repository?
Use msIdentifier with country, settlement, institution or repository, and idno for the shelfmark. The idno is the citable call number; the other elements give the geographic and institutional context that disambiguates it.