P5 Version 4.10.2. Last updated on 4th September 2025, revision bcfa98f42
Previous versions of these Guidelines recommended the use of type on list to encode the rendering or appearance of a list (whether it was bulleted, numbered, etc.). The current recommendation is to use the rend or style attributes for these aspects of a list, while using type for the more appropriate task of characterizing the nature of the content of a list.
The formal syntax of the element declarations allows label tags to be omitted from lists tagged <list type="gloss">; this is however a semantic error.
May contain an optional heading followed by a series of items, or a series of label and item pairs, the latter being optionally preceded by one or two specialized headings.
The following example treats the short numbered clauses of Anglo-Saxon legal codes as lists of items. The text is from an ordinance of King Athelstan (924–939):
Note that nested lists have been used so the tagging mirrors the structure indicated by the two-level numbering of the clauses. The clauses could have been treated as a one-level list with irregular numbering, if desired.
<content>
<sequence>
<alternate minOccurs="0"
maxOccurs="unbounded">
<classRef key="model.divTop"/>
<classRef key="model.global"/>
<elementRef key="desc" minOccurs="0"
maxOccurs="unbounded"/>
</alternate>
<alternate>
<sequence minOccurs="1"
maxOccurs="unbounded">
<elementRef key="item"/>
<classRef key="model.global"
minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<sequence>
<elementRef key="headLabel"
minOccurs="0"/>
<elementRef key="headItem"
minOccurs="0"/>
<sequence minOccurs="1"
maxOccurs="unbounded">
<elementRef key="label"/>
<classRef key="model.global"
minOccurs="0" maxOccurs="unbounded"/>
<elementRef key="item"/>
<classRef key="model.global"
minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</sequence>
</alternate>
<sequence minOccurs="0"
maxOccurs="unbounded">
<classRef key="model.divBottom"/>
<classRef key="model.global"
minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</sequence>
</content>
<rng:element name="list">
<rng:ref name="att.global.attributes"/>
<rng:ref name="att.global.analytic.attributes"/>
<rng:ref name="att.global.change.attributes"/>
<rng:ref name="att.global.facs.attributes"/>
<rng:ref name="att.global.linking.attributes"/>
<rng:ref name="att.global.rendition.attributes"/>
<rng:ref name="att.global.responsibility.attributes"/>
<rng:ref name="att.global.source.attributes"/>
<rng:ref name="att.cmc.attributes"/>
<rng:ref name="att.sortable.attributes"/>
<rng:ref name="att.typed.attribute.subtype"/>
<rng:optional>
<rng:attribute name="type">
<rng:choice>
<rng:value>gloss</rng:value>
<rng:value>index</rng:value>
<rng:value>instructions</rng:value>
<rng:value>litany</rng:value>
<rng:value>syllogism</rng:value>
<rng:ref name="teidata.enumerated"/>
</rng:choice>
</rng:attribute>
</rng:optional>
<rng:group>
<rng:zeroOrMore>
<rng:choice>
<rng:ref name="model.divTop"/>
<rng:ref name="model.global"/>
<rng:zeroOrMore>
<rng:ref name="desc"/>
</rng:zeroOrMore>
</rng:choice>
</rng:zeroOrMore>
<rng:choice>
<rng:group>
<rng:oneOrMore>
<rng:ref name="item"/>
<rng:zeroOrMore>
<rng:ref name="model.global"/>
</rng:zeroOrMore>
</rng:oneOrMore>
</rng:group>
<rng:group>
<rng:optional>
<rng:ref name="headLabel"/>
</rng:optional>
<rng:optional>
<rng:ref name="headItem"/>
</rng:optional>
<rng:group>
<rng:oneOrMore>
<rng:ref name="label"/>
<rng:zeroOrMore>
<rng:ref name="model.global"/>
</rng:zeroOrMore>
<rng:ref name="item"/>
<rng:zeroOrMore>
<rng:ref name="model.global"/>
</rng:zeroOrMore>
</rng:oneOrMore>
</rng:group>
</rng:group>
</rng:choice>
<rng:group>
<rng:zeroOrMore>
<rng:ref name="model.divBottom"/>
<rng:zeroOrMore>
<rng:ref name="model.global"/>
</rng:zeroOrMore>
</rng:zeroOrMore>
</rng:group>
</rng:group>
</rng:element>
element list { att.global.attributes, att.global.analytic.attributes, att.global.change.attributes, att.global.facs.attributes, att.global.linking.attributes, att.global.rendition.attributes, att.global.responsibility.attributes, att.global.source.attributes, att.cmc.attributes, att.sortable.attributes, att.typed.attribute.subtype, attribute type { "gloss" | "index" | "instructions" | "litany" | "syllogism" | teidata.enumerated }?, ( ( model.divTop | model.global | desc* )*, ( ( ( item, model.global* )+ ) | ( headLabel?, headItem?, ( ( label, model.global*, item, model.global* )+ ) ) ), ( ( model.divBottom, model.global* )* ) ) }
[English] [Deutsch] [Español] [Italiano] [Français] [日本語] [한국어] [中文]