Element definitions
Each key under schema maps an XML element name to an editor node or mark. This page
documents every property an entry may carry, then lists the catalogs from both built-in
schemas.
Anatomy of an entry
"div": {
"type": "block", // required — see Node types
"content": "heading* (block | table)*", // allowed children (ProseMirror content expr)
"defining": true, // node defines its content boundary
"selectable": true, // can be selected as a whole
"group": "block", // content-model group it belongs to
"attributes": { "type": { "type": "string" }, "n": { "type": "string" } },
"keyboard": { "Mod-Shift-e": { "command": "wrapDiv" } },
"toolbar": { "Division": { "command": "wrapDiv", "select": "Blocks", "label": "…" } },
"inputRules": [ { "find": "^>>", "type": "wrapping" } ]
}
Common properties
| Property | Applies to | Meaning |
|---|---|---|
type |
all | The node type. Required. See Node types. |
attributes |
all | The element's attributes and their value definitions. See Attributes. |
content |
block, list, listItem |
A ProseMirror content expression for the allowed children. |
group |
block |
Content-model group the node belongs to (default block). Referenced by other elements' content. |
defining |
block |
Marks the node as defining its content (affects paste/replace behaviour). |
selectable |
block |
Whether the whole node can be selected. |
isolating, priority, inline |
block |
Passed through to the ProseMirror node spec. |
tagName |
listItem, synthesized |
Emit a different XML tag than the entry key. |
keyboard |
all | Keyboard shortcuts that create/toggle the element. See Keyboard & input rules. |
toolbar |
all | Toolbar buttons that create/toggle the element. See Toolbar & selects. |
inputRules |
block |
Markdown-style typing rules. See Keyboard & input rules. |
when |
conditional entries | Attribute conditions for dispatching one tag to different types. See Conditional types. |
Content expressions
The content property is a ProseMirror content expression naming the groups/nodes a
block may contain. For example div allows optional headings followed by blocks or
tables:
"content": "heading* (block | table)*"
Elements declare which group they join via group (blocks default to block), and
inline elements contribute to the implicit inline content of text blocks.
Element catalogs
TEI — src/tei-schema.json
Default when format is omitted or set to tei. 41 elements.
| Element | Type | Content | Attributes | Flags |
|---|---|---|---|---|
abbr |
inline
|
— | — | T |
anchor |
anchor
|
— |
type
|
T |
cell |
cell
|
— |
role
|
|
choice |
inline
|
abbr expan |
— | T |
closer |
block
|
block* |
— | S T |
date |
inline
|
— |
when, not-before, not-after, from, to
|
T |
dateline |
block
|
inline* |
— | T |
div |
block
|
heading* (block | table) |
type, n
|
D S T |
expan |
inline
|
— | — | T |
figDesc |
block
|
inline |
— | |
figure |
block
|
(graphic|figDesc|head)* |
— | S |
footnote-reference |
inline
|
— |
n
|
|
gap |
empty
|
— |
unit, quantity
|
T |
gloss |
inline
|
— |
target
|
|
graphic |
graphic
|
— |
url
|
🔌 T |
head |
block
|
inline* |
type, n
|
T |
hi |
inline
|
— |
rend
|
T |
item |
listItem
|
— | — | S |
lb |
empty
|
— |
n
|
T |
list |
list
|
heading* item+ |
rend
|
S T |
listAnnotation |
list
|
note* |
— | D |
measure |
inline
|
— |
quantity, unit
|
T |
note |
block
|
p+ |
target, n, _reference
|
S |
opener |
block
|
block* |
— | S T |
orgName |
inline
|
— |
key
|
🔌 T |
p |
block
|
— | — | T |
pb |
empty
|
— |
n
|
T |
persName |
inline
|
— |
key
|
🔌 T |
placeName |
inline
|
— |
key
|
🔌 T |
quote |
block
|
block* |
— | |
ref |
ref
|
— |
target
|
T |
row |
row
|
— | — | |
rs |
inline
|
— |
corresp, type
|
|
salute |
block
|
inline* |
— | T |
signed |
block
|
inline* |
— | T |
supplied |
inline
|
— |
reason
|
T |
table |
table
|
— | — | |
term |
inline
|
— |
key
|
🔌 T |
title |
inline
|
— |
level
|
T |
unclear |
inline
|
— |
rend
|
T |
underline |
inline
|
— | — |
JATS — src/jats-schema.json
Used when format="jats". 18 elements.
| Element | Type | Content | Attributes | Flags |
|---|---|---|---|---|
bold |
inline
|
— | — | T |
caption |
block
|
p+ |
— | |
cell |
cell
|
— |
colspan, rowspan
|
|
ext-link |
ref
|
— |
xlink:href
|
T |
fig |
block
|
(graphic|caption) |
— | S |
fn |
block
|
p+ |
id, _reference
|
S |
fnGroup |
list
|
fn |
— | D |
graphic |
graphic
|
— |
xlink:href
|
🔌 T |
italic |
inline
|
— | — | T |
item |
listItem
|
— | — | S |
list |
list
|
item+ |
list-type
|
S T |
named-content |
inline
|
— |
specific-use, content-type
|
T |
p |
block
|
— | — | T |
row |
row
|
— | — | |
sec |
block
|
title? (block | table)* |
sec-type, id
|
D S T |
table |
table
|
— | — | |
title |
block
|
inline* |
id
|
T |
xref |
anchor / inline
|
— |
rid, ref-type, type
|
C T |
Flags: D = defining, S = selectable, C = conditional, T = has a toolbar button, 🔌 = has an authority connector.