TEI META Task Force: TEI and Docbook model classes [MEW03]
This document is an informal catalogue of TEI element classes, a
formal description of a proposed revision of the Docbook schema, and
notes on the points of overlap. The purpose of the document is to
stimulate discussion about
- How the TEI can improve or extend its element classes
- Where the TEI and Docbook might agree on intersection points
TEI classes
| addrPart | address contents |
| agent | individuals or corporations? |
| bibl | bibliographic items |
| biblPart | contents of a bibliographic item |
| inter | things that can appear between or within chunks |
| chunk | blocks that can't contain themselves (contains para) |
| common | chunk and inter (things in all bases) |
| data | inline names, dates, numbers, measures, etc. (abbr, address, date, daterange, datestruct, expan, geogname, ...) |
| date | date expressions |
| demographic | elements describing demographics in a linguistic context (used person and persongroup) |
| dict.parts | inlines elements in a dictionary entry |
| dict.toplevel | tags for blocks in a dictionary |
| divBot | elements that can occur at the end of a division (byline, closing, epigraph, signed, ...) |
| divTop | elements that can occur at the start of a division (similar to divBot) |
| dramaFront | elements that occur at the elemenets of divisions in a drama (castlist, epilog, performance, prologue, set) |
| edit | inline for editorial corrections (deletions, edits...) |
| editIncl | same but can be anywhere (gap) |
| fm.chunk | frontmatter when no titlepage |
| front, back | level of divisions in front or back matter (divGen, dramaFront) |
| hqInter | highlighting (q, quote, cit) |
| hqPhrase | highlighting (distinct, emph, foreign, gloss, hi, mentioned, socalled, term, title) |
| Incl | (anchor, etc.) |
| lists | listlike elements |
| listBibl | biblist |
| metadata | links, certainty, index |
| names | persons. places, things (bloc, country, goegname, personname, region, ...) |
| notes | notelike elements (footnote, remark) |
| personPart | first, surname, ... |
| phrase | inlines |
| phrase.verse | verses |
| placePart | names of places |
| seg | elements used for arbitrary segmentation (clauses, phrase, morphemes, words) |
| sgmlKeywords | att, gi |
| stageDirection | camera, caption, move, sound, tech, view |
| tpParts | title page parts (as in a written work) |
Current Docbook class structure
namespace ctrl = "http://nwalsh.com/xmlns/schema-control/"
namespace rng = "http://relaxng.org/ns/structure/1.0"
#Divisions are big things in books:
divisions = db.part | db.reference
#Components occur in books too:
components =
db.dedication
| db.preface
| db.chapter
| db.appendix
| db.article
| db.colophon
navigation.components =
db.toc | db.index | db.glossary | db.bibliography
component.contentmodel =
navigation.components*, blocks.or.sections, navigation.components*
id.attribute = attribute id { xsd:ID }
xml.lang.attribute = attribute xml:lang { text }
xml.base.attribute = attribute xml:base { text }
remap.attribute = attribute remap { text }
xreflabel.attribute = attribute xreflabel { text }
revisionflag.attribute =
attribute revisionflag { "changed" | "added" | "deleted" | "off" }
effectivity.attributes =
arch.attribute,
condition.attribute,
conformance.attribute,
os.attribute,
revision.attribute,
security.attribute,
userlevel.attribute,
vendor.attribute
arch.attribute = attribute arch { text }
condition.attribute = attribute condition { text }
conformance.attribute = attribute conformance { text }
os.attribute = attribute os { text }
revision.attribute = attribute revision { text }
security.attribute = attribute security { text }
userlevel.attribute = attribute userlevel { text }
vendor.attribute = attribute vendor { text }
# ======================================================================
linkend.attribute = attribute linkend { xsd:IDREF }
linkends.attribute = attribute linkends { xsd:IDREFS }
href.attribute = attribute href { text }
# ======================================================================
common.attributes =
id.attribute?,
xml.lang.attribute?,
xml.base.attribute?,
remap.attribute?,
xreflabel.attribute?,
revisionflag.attribute?,
effectivity.attributes?
common.attrib.idreq =
id.attribute,
xml.lang.attribute?,
xml.base.attribute?,
remap.attribute?,
xreflabel.attribute?,
revisionflag.attribute?,
effectivity.attributes?
common.linking.attributes.req =
linkend.attribute | href.attribute
common.linking.attributes =
(linkend.attribute | href.attribute)?
# ======================================================================
relation.attribute = attribute relation { text }?
linenumbering.attribute = attribute linenumbering { "numbered" | "unnumbered" }?
float.attribute = attribute float { text }
pgwide.attribute = attribute pgwide { "0" | "1" }
data.format.attribute = attribute format { text }?
data.fileref.attribute = attribute fileref { text }?
data.entityref.attribute = attribute entityref { xsd:ENTITY }?
data.common.attribute &=
data.format.attribute,
data.fileref.attribute,
data.entityref.attribute
oo-language.attribute = attribute language { text }?
ctrl:other-attribute [ name="biblio.class.attrib"
enum-name="biblio.class-enum.attribute"
other-name="biblio.class-other.attributes" ]
biblio.class-enum.attribute =
attribute class { "doi"
| "isbn"
| "issn"
| "libraryofcongress"
| "pubnumber"
| "uri" }?
biblio.class-other.attributes =
attribute class { "other" },
attribute otherclass { xsd:NMTOKEN }
biblio.class.attrib = (biblio.class-enum.attribute | biblio.class-other.attributes)
significance.attribute = attribute significance { "normal" | "preferred" }
zone.attribute = attribute zone { xsd:IDREFS }
pagenum.attribute = attribute pagenum { text }
scope.attribute = attribute scope { "all" | "global" | "local" }
# ======================================================================
ubiq.inlines = db.inlinemediaobject | db.anchor | db.indexterm | db.remark
text.replaceable = element replaceable { docbook.text }
text.phrase = element phrase { docbook.text }
docbook.text = (text | ubiq.inlines | text.phrase | text.replaceable)*
# ======================================================================
inlines = text | ubiq.inlines | general.inlines | domain.inlines
blocks in para?
paraContent
general.inlines =
publishing.inlines
| product.inlines
| bibliography.inlines
| glossary.inlines
| graphic.inlines
| indexing.inlines
| link.inlines
domain.inlines =
technical.inlines
| error.inlines
| os.inlines
| programming.inlines
| markup.inlines
| math.inlines
| gui.inlines
| keyboard.inlines
technical.inlines =
db.replaceable | db.systemitem | db.option | db.optional
error.inlines =
db.errorcode | db.errortext | db.errorname | db.errortype
oo.inlines = db.ooclass | db.ooexception | db.oointerface
# TEI: code, programlisting (x.data)
programming.inlines =
db.function
| db.parameter
| db.varname
| db.returnvalue
| db.type
| db.classname
| db.exceptionname
| db.interfacename
| db.methodname
| db.modifier
| db.initializer
| oo.inlines
# TEI: names
product.inlines =
db.productnumber
| db.productname
| db.database
| db.application
| db.hardware
| db.trademark
# TEI: data
os.inlines =
db.prompt
| db.envar
| db.filename
| db.command
| db.computeroutput
| db.userinput
# TEI: sgmlKeywords, ident
markup.inlines =
db.xmltag
| db.markup
| db.token
| db.symbol
| db.literal
| db.constant
# TEI: no class
bibliography.inlines =
db.citation
| db.citerefentry
| db.citetitle
| db.citebiblioid
| db.author
| db.personname
| db.editor
# TEI: no class
glossary.inlines =
db.firstterm
| db.glossterm
# TEI: hqPhrase
publishing.inlines =
db.abbrev
| db.acronym
| db.emphasis
| db.footnote
| db.footnoteref
| db.foreignphrase
| db.phrase
| db.quote
| db.subscript
| db.superscript
| db.wordasword
# TEI: formula
math.inlines = db.inlineequation
# TEI: figure
graphic.inlines = db.inlinemediaobject
# TEI: metadata
indexing.inlines = db.indexterm
# TEI:
gui.inlines =
db.guiicon
| db.guibutton
| db.guimenuitem
| db.guimenu
| db.guisubmenu
| db.guilabel
| db.menuchoice
| db.mousebutton
keyboard.inlines =
db.keycombo
| db.keycap
| db.keycode
| db.keysym
| db.shortcut
| db.accel
link.inlines =
db.xref
| db.uri
| db.anchor
# ======================================================================
blocks =
list.blocks
| admonition.blocks
| para.blocks
| formal.blocks
| informal.blocks
| publishing.blocks
| graphic.blocks
| technical.blocks
| verbatim.blocks
| synopsis.blocks
| db.indexterm
| db.bridgehead
| db.remark
formal.blocks =
db.equation
| db.example
| db.figure
| db.table
informal.blocks =
db.informalequation
| db.informalexample
| db.informalfigure
| db.informaltable
publishing.blocks =
db.sidebar
| db.blockquote
| db.address
| db.epigraph
graphic.blocks = db.mediaobject | db.screenshot
technical.blocks = db.procedure
admonition.blocks =
db.caution
| db.important
| db.note
| db.tip
| db.warning
list.blocks =
db.itemizedlist
| db.orderedlist
| db.procedure
| db.simplelist
| db.variablelist
verbatim.blocks =
db.programlisting
| db.screen
| db.literallayout
| db.synopsis
synopsis.blocks =
db.cmdsynopsis
| db.funcsynopsis
| db.classsynopsis
| db.methodsynopsis
| db.constructorsynopsis
| db.destructorsynopsis
| db.fieldsynopsis
# ======================================================================
db.title = element title { inlines* }
db.titleabbrev = element titleabbrev { inlines* }
db.subtitle = element subtitle { inlines* }
docbook.title = db.title? & db.titleabbrev? & db.subtitle?
docbook.titlereq = db.title & db.titleabbrev? & db.subtitle?
info.elements =
db.biblioid
| db.artpagenums
| db.copyright
| db.subjectset
| db.keywordset
| db.subjectset
| db.keywordset
| db.itermset
| db.abstract
| db.authorgroup
| db.author
| db.editor
| db.othercredit
| db.bibliocoverage
| db.bibliomisc
| db.bibliomset
| db.bibliorelation
| db.biblioset
| db.collab
| db.confgroup
| db.date
| db.pubdate
| db.edition
| db.volumenum
| db.seriesvolnums
| db.pagenums
| db.legalnotice
| db.publisher
| db.releaseinfo
| db.revhistory
| db.printhistory
bibliographic.elements =
info.elements
| db.abbrev
| db.title
| db.titleabbrev
| db.subtitle
| db.citetitle
| db.address
| db.affiliation
| db.personblurb
| db.authorinitials
| db.personname
| db.orgname
| db.productname
| db.productnumber
| db.publishername
db.biblioentry = element biblioentry { bibliographic.elements+ }
db.bibliomixed = element bibliomixed { (text | bibliographic.elements)* }
db.info = element info { docbook.title, info.elements* }
db.info.titlereq = element info { docbook.titlereq, info.elements* }
db.info.titleforbidden = element info { info.elements* }
docbook.info = (docbook.titlereq?, db.info.titleforbidden?) | db.info?
docbook.info.titlereq = (docbook.titlereq, db.info.titleforbidden?) | db.info.titlereq
docbook.info.titleforbidden = db.info.titleforbidden?
ctrl:alternate-define [
name="docbook.title"
rng:optional [
rng:ref [ name = "db.title" ]
]
rng:optional [
rng:ref [ name = "db.titleabbrev" ]
]
rng:optional [
rng:ref [ name = "db.subtitle" ]
]
]
ctrl:alternate-define [
name="docbook.titlereq"
rng:ref [ name="db.title" ]
rng:optional [
rng:ref [ name = "db.titleabbrev" ]
]
rng:optional [
rng:ref [ name = "db.subtitle" ]
]
]
ctrl:alternate-define [
name="db.info"
rng:element [
name="info"
rng:zeroOrMore [
rng:choice [
rng:ref [ name = "docbook.title" ]
rng:ref [ name = "info.elements" ]
]
]
]
]
ctrl:alternate-define [
name = "docbook.info"
rng:optional [
rng:ref [ name = "db.info" ]
]
]
ctrl:alternate-define [
name = "docbook.info.titlereq"
rng:ref [ name = "docbook.titlereq" ]
rng:optional [
rng:ref [ name = "db.info" ]
]
]
ctrl:alternate-define [
name = "docbook.info.titleforbidden"
rng:optional [
rng:ref [ name = "db.info" ]
]
]
biblioset.relation.attrib = relation.attribute
db.biblioset = element biblioset { bibliographic.elements+ }
bibliomset.relation.attrib = relation.attribute
db.bibliomset = element bibliomset { (docbook.text | bibliographic.elements)* }
db.bibliomisc = element bibliomisc { docbook.text }
subjectset.scheme.attrib = attribute scheme { text }?
db.subjectset = element subjectset { db.subject+ }
subject.weight.attrib = attribute weight { text }?
db.subject = element subject { db.subjectterm+ }
db.subjectterm = element subjectterm { docbook.text }
db.keywordset = element keywordset { db.keyword+ }
db.keyword = element keyword { docbook.text }
db.itermset = element itermset { db.indexterm+ }
task.info = docbook.info.titlereq
db.task = element task { task.info,
db.tasksummary?,
db.taskprerequisites?,
db.procedure,
db.example*,
db.taskrelated? }
tasksummary.info = docbook.info
db.tasksummary = element tasksummary { tasksummary.info, blocks+ }
taskprerequisites.info = docbook.info
db.taskprerequisites = element taskprerequisites { taskprerequisites.info, blocks+ }
taskrelated.info = docbook.info
db.taskrelated = element taskrelated { taskrelated.info, blocks+ }
qandaset.defaultlabel.attrib = attribute defaultlabel { "none" | "number" | "qanda" }?
qandaset.info = docbook.info
db.qandaset =
element qandaset { qandaset.info, blocks*, (db.qandadiv | db.qandaentry)+ }
qandadiv.info = docbook.info
db.qandadiv =
element qandadiv { qandadiv.info, blocks*, (db.qandadiv | db.qandaentry)+ }
qandaentry.info = docbook.info
db.qandaentry =
element qandaentry { qandaentry.info, db.question, db.answer* }
db.question = element question { db.label?, blocks+ }
db.answer = element answer { db.label?, blocks+ }
db.label = element label { docbook.text }
table.choice = notAllowed
table.contentmodel = notAllowed
db.table = table.choice
informaltable.tabstyle.attrib = notAllowed?
informaltable.orient.attrib = notAllowed?
informaltable.colsep.attrib = notAllowed?
informaltable.rowsep.attrib = notAllowed?
informaltable.frame.attrib = notAllowed?
informaltable.pgwide.attrib = notAllowed?
informaltable.info = db.info.titleforbidden
db.informaltable = element informaltable { informaltable.info?, table.contentmodel }
procedure.info = docbook.info
db.procedure = element procedure { procedure.info, blocks*, db.step+ }
step.performance.attrib = attribute performance { "optional" | "required" }?
step.info = docbook.info
db.step = element step { step.info, blocks*, db.substeps?, blocks* }
substeps.performance.attrib = attribute performance { "optional" | "required" }?
db.substeps = element substeps { db.step+ }
sidebar.info = docbook.info
db.sidebar = element sidebar { sidebar.info, blocks+ }
abstract.info = docbook.info
db.abstract = element abstract { abstract.info, para.blocks+ }
personblurb.info = docbook.info
db.personblurb = element personblurb { personblurb.info, para.blocks+ }
blockquote.info = docbook.info
db.blockquote = element blockquote { blockquote.info, db.attribution?, blocks+ }
db.attribution = element attribution { (docbook.text | db.personname) }
db.bridgehead = element bridgehead { inlines* }
db.remark = element remark { docbook.text }
epigraph.info = docbook.info
db.epigraph =
element epigraph {
epigraph.info,
db.attribution?,
(para.blocks | db.literallayout)+
}
db.footnote = element footnote { blocks* }
db.highlights = element highlights { blocks* }
para.blocks =
db.para
| db.formalpara
| db.simpara
formalpara.info = docbook.info.titlereq
db.formalpara = element formalpara { formalpara.info, db.para }
para.info = docbook.info.titleforbidden
db.para = element para { para.info, (inlines | blocks)* }
simpara.info = docbook.info.titleforbidden
db.simpara = element simpara { simpara.info, inlines* }
# admonitions are not excluded from themselves
admonition.contentmodel = docbook.info, blocks+
db.caution = element caution { admonition.contentmodel }
db.important = element important { admonition.contentmodel }
db.note = element note { admonition.contentmodel }
db.tip = element tip { admonition.contentmodel }
db.warning = element warning { admonition.contentmodel }
db.glosslist = element glosslist { db.glossentry+ }
glossentry.sortas.attrib = sortas.attribute?
db.glossentry =
element glossentry {
db.glossterm,
db.acronym?,
db.abbrev?,
(db.glosssee | db.glossdef+)
}
glossdef.subject.attrib = attribute subject { text }?
db.glossdef = element glossdef { blocks+, db.glossseealso* }
glosssee.otherterm.attrib = attribute otherterm { xsd:IDREF }?
db.glosssee = element glosssee { inlines* }
glossseealso.otherterm.attrib = attribute otherterm { xsd:IDREF }?
db.glossseealso = element glossseealso { inlines* }
itemizedlist.mark.attrib = attribute mark { text }?
itemizedlist.spacing.attrib = attribute spacing { "compact" | "normal" }?
itemizedlist.info = docbook.info
db.itemizedlist = element itemizedlist { itemizedlist.info, blocks*, db.listitem+ }
orderedlist.inheritnum.attrib = attribute inheritnum { "ignore" | "inherit" }?
orderedlist.spacing.attrib = attribute spacing { "compact" | "normal" }?
orderedlist.continuation.attrib = attribute continuation { "continues" | "restarts" }?
orderedlist.numeration.attrib = attribute numeration { text }?
orderedlist.info = docbook.info
db.orderedlist = element orderedlist { orderedlist.info, blocks*, db.listitem+ }
listitem.override.attrib = attribute override { text }?
db.listitem = element listitem { blocks+ }
segmentedlist.info = docbook.info
db.segmentedlist = element segmentedlist { segmentedlist.info,
db.segtitle+,
db.seglistitem+ }
db.segtitle = element segtitle { inlines* }
db.seglistitem = element seglistitem { db.seg+ }
db.seg = element seg { (inlines | blocks)* }
simplelist.type.attrib = attribute type { "horiz" | "inline" | "vert" }?
db.simplelist = element simplelist { db.member+ }
db.member = element member { inlines* }
variablelist.termlength.attrib = attribute termlength { text }?
variablelist.info = db.info
db.variablelist = element variablelist { variablelist.info, blocks*, db.varlistentry+ }
db.varlistentry = element varlistentry { db.term+, db.listitem }
db.term = element term { inlines* }
example.info = db.info.titlereq
db.example = element example { example.info, blocks+ }
informalexample.info = db.info.titleforbidden
db.informalexample = element informalexample { informalexample.info, blocks+ }
verbatim.inlines = inlines | db.lineannotation
verbatim.contentmodel = docbook.info.titleforbidden, verbatim.inlines*
programlisting.linenumbering.attrib = linenumbering.attribute
db.programlisting = element programlisting { verbatim.contentmodel }
literallayout.linenumbering.attrib = linenumbering.attribute
literallayout.class.attrib = attribute class { "monospaced" | "normal" }
db.literallayout = element literallayout { verbatim.contentmodel }
screen.linenumbering.attrib = linenumbering.attribute
db.screen = element screen { verbatim.contentmodel }
screenshot.block = db.mediaobject
screenshot.info = docbook.info
db.screenshot =
element screenshot { screenshot.info, screenshot.block }
figure.float.attrib = float.attribute?
figure.pgwide.attrib = pgwide.attribute?
figure.info = db.info.titlereq
db.figure = element figure { figure.info, blocks+ }
informalfigure.float.attrib = float.attribute?
informalfigure.pgwide.attrib = pgwide.attribute?
informalfigure.info = db.info.titleforbidden
db.informalfigure = element informalfigure { informalfigure.info, blocks+ }
mediaobject.info = db.info
db.mediaobject =
element mediaobject {
mediaobject.info,
(db.videoobject | db.audioobject | db.imageobject | db.textobject)+
}
inlinemediaobject.info = db.info
db.inlinemediaobject =
element inlinemediaobject {
inlinemediaobject.info,
(db.videoobject | db.audioobject | db.imageobject | db.textobject)+
}
videoobject.info = db.info
db.videoobject = element videoobject { videoobject.info, db.videodata }
audioobject.info = db.info
db.audioobject = element audioobject { audioobject.info, db.audiodata }
imageobject.info = db.info
db.imageobject = element imageobject { imageobject.info, db.imagedata }
textobject.info = db.info
db.textobject =
element textobject { textobject.info, (db.phrase | db.textdata | blocks+) }
videodata.data.attrib = data.common.attribute
db.videodata = element videodata { db.info.titleforbidden? }
audiodata.data.attrib = data.common.attribute
db.audiodata = element audiodata { db.info.titleforbidden? }
imagedata.data.attrib = data.common.attribute
imagedata.align.attrib =
attribute align { "center" | "char" | "justify" | "left" | "right" }?
imagedata.valign.attrib = attribute valign { "bottom" | "middle" | "top" }?
imagedata.width.attrib = attribute width { text }?
imagedata.contentwidth.attrib = attribute contentwidth { text }?
imagedata.scalefit.attrib = attribute scalefit { "0" | "1" }?
imagedata.depth.attrib = attribute depth { text }?
imagedata.contentdepth.attrib = attribute contentdepth { text }?
db.imagedata = element imagedata { db.info.titleforbidden? }
textdata.data.attrib = data.common.attribute
textdata.encoding.attrib = attribute encoding { text }?
db.textdata = element textdata { db.info.titleforbidden? }
db.caption = element caption { inlines* | blocks+ }
equation.content = db.mediaobject
equation.info = docbook.info.titlereq
db.equation = element equation { equation.info, equation.content+ }
informalequation.info = db.info.titleforbidden
db.informalequation =
element informalequation {
informalequation.info,
equation.content+
}
inlineequation.content = db.inlinemediaobject
db.inlineequation = element inlineequation { inlineequation.content+ }
db.alt = element alt { text }
synopsis.linenumbering.attrib = linenumbering.attribute
db.synopsis = element synopsis { verbatim.contentmodel }
cmdsynopsis.sepchar.attrib = attribute sepchar { text }?
cmdsynopsis.cmdlength.attrib = attribute cmdlength { text }?
cmdsynopsis.info = db.info
db.cmdsynopsis =
element cmdsynopsis {
cmdsynopsis.info,
(db.command | db.arg | db.group | db.sbr)+,
db.synopfragment*
}
rep.attribute = attribute rep { "norepeat" | "repeat" }
choice.attribute = attribute choice { "opt" | "plain" | "req" }
arg.rep.attrib = rep.attribute
arg.choice.attrib = choice.attribute
db.arg =
element arg {
(docbook.text
| db.arg
| db.group
| db.option
| db.synopfragmentref
| db.sbr)*
}
group.rep.attrib = rep.attribute
group.choice.attrib = choice.attribute
db.group =
element group {
(db.arg | db.group | db.option | db.synopfragmentref | db.sbr)+
}
db.sbr = element sbr { empty }
ctrl:common-attributes [ element="synopfragment" attributes="common.attrib.idreq" ]
db.synopfragment = element synopfragment { (db.arg | db.group)+ }
synopfragmentref.linkend.attrib = linkend.attribute
db.synopfragmentref = element synopfragmentref { docbook.text }
funcsynopsis.info = db.info
db.funcsynopsis =
element funcsynopsis {
funcsynopsis.info,
(db.funcsynopsisinfo | db.funcprototype)+
}
funcsynopsisinfo.linenumbering.attrib = linenumbering.attribute
db.funcsynopsisinfo = element funcsynopsisinfo { verbatim.contentmodel }
db.funcprototype =
element funcprototype {
db.funcdef,
(db.void | db.varargs | db.paramdef+)
}
db.funcdef = element funcdef { (docbook.text | db.type | db.function)* }
db.void = element void { empty }
db.varargs = element varargs { empty }
db.paramdef =
element paramdef { (docbook.text | db.type | db.parameter | db.funcparams)* }
db.funcparams = element funcparams { inlines* }
oo-method.synopsis.blocks =
db.methodsynopsis | db.constructorsynopsis | db.destructorsynopsis
oo-field.synopsis.blocks = db.fieldsynopsis
classsynopsis.language.attrib = oo-language.attribute
classsynopsis.class.attrib = attribute class { "class" | "interface" }
db.classsynopsis =
element classsynopsis {
oo.inlines+,
(db.classsynopsisinfo
| oo-method.synopsis.blocks
| oo-field.synopsis.blocks)*
}
classsynopsisinfo.linenumbering.attrib = linenumbering.attribute
db.classsynopsisinfo = element classsynopsisinfo { verbatim.contentmodel }
db.ooclass = element ooclass { db.modifier*, db.classname }
db.oointerface = element oointerface { db.modifier*, db.interfacename }
db.ooexception = element ooexception {db.modifier*, db.exceptionname }
db.modifier = element modifier { docbook.text }
db.interfacename = element interfacename { docbook.text }
db.exceptionname = element exceptionname { docbook.text }
fieldsynopsis.language.attrib = oo-language.attribute
db.fieldsynopsis =
element fieldsynopsis {
db.modifier*,
db.type?,
db.varname,
db.initializer?
}
db.initializer = element initializer { docbook.text }
constructorsynopsis.language.attrib = oo-language.attribute
db.constructorsynopsis =
element constructorsynopsis {
db.modifier*,
db.methodname?,
(db.methodparam+ | db.void),
db.exceptionname*,
db.modifier*
}
destructorsynopsis.language.attrib = oo-language.attribute
db.destructorsynopsis =
element destructorsynopsis {
db.modifier*,
db.methodname?,
(db.methodparam+ | db.void),
db.exceptionname*,
db.modifier*
}
methodsynopsis.language.attrib = oo-language.attribute
db.methodsynopsis =
element methodsynopsis {
db.modifier*,
(db.type | db.void)?,
db.methodname,
(db.methodparam+ | db.void),
db.exceptionname*,
db.modifier*
}
db.methodname = element methodname { docbook.text }
methodparam.rep.attrib = rep.attribute
methodparam.choice.attrib = choice.attribute
db.methodparam =
element methodparam {
db.modifier*,
db.type?,
((db.parameter, db.initializer?) | db.funcparams),
db.modifier*
}
db.ackno = element ackno { inlines* }
# TEI: addrPart
address.linenumbering.attrib = linenumbering.attribute
db.address =
element address {
(docbook.text
| db.personname
| db.pob
| db.street
| db.city
| db.state
| db.postcode
| db.country
| db.phone
| db.fax
| db.email)*
}
db.street = element street { docbook.text }
db.pob = element pob { docbook.text }
db.postcode = element postcode { docbook.text }
db.city = element city { docbook.text }
db.state = element state { docbook.text }
db.country = element country { docbook.text }
db.phone = element phone { docbook.text }
db.fax = element fax { docbook.text }
db.affiliation =
element affiliation {
db.shortaffil?,
db.jobtitle*,
db.orgname?,
db.orgdiv?,
db.address*
}
db.shortaffil = element shortaffil { inlines* }
db.jobtitle = element jobtitle { docbook.text }
orgname.class.attrib =
attribute class {
"consortium"
| "corporation"
| "informal"
| "nonprofit"
| "other"
}?
db.orgname = element orgname { inlines* }
db.orgdiv = element orgdiv { inlines* }
db.artpagenums = element artpagenums { docbook.text }
db.personname =
element personname {
(docbook.text
| (db.honorific
| db.firstname
| db.surname
| db.lineage
| db.othername)+)
}
person.author =
db.personname,
(db.personblurb
| db.affiliation
| db.email
| db.address
| db.contrib)*
org.author =
db.orgname,
(db.orgdiv
| db.affiliation
| db.email
| db.address
| db.contrib)*
credit.contentmodel = person.author | org.author
db.author = element author { credit.contentmodel }
db.authorgroup = element authorgroup { (db.author | db.editor | db.othercredit)+ }
db.collab = element collab { (db.personname | db.orgname)+, db.affiliation* }
db.authorinitials = element authorinitials { docbook.text }
db.confgroup =
element confgroup {
(db.confdates
| db.conftitle
| db.confnum
| db.confsponsor
| db.address)*
}
db.confdates = element confdates { docbook.text }
db.conftitle = element conftitle { inlines* }
db.confnum = element confnum { docbook.text }
db.confsponsor = element confsponsor { inlines* }
db.contractnum = element contractnum { inlines* }
db.contractsponsor = element contractsponsor { inlines* }
db.copyright = element copyright { db.year+, db.holder* }
db.year = element year { docbook.text }
db.holder = element holder { docbook.text }
db.date = element date { docbook.text }
db.edition = element edition { docbook.text }
db.editor = element editor { credit.contentmodel }
biblioid.class.attrib = biblio.class.attrib
db.biblioid = element biblioid { docbook.text }
citebiblioid.class.attrib = biblio.class.attrib
db.citebiblioid =
element citebiblioid { docbook.text }
bibliosource.class.attrib = biblio.class.attrib
db.bibliosource = element bibliosource { docbook.text }
bibliorelation.class.attrib = biblio.class.attrib
ctrl:other-attribute [ name="bibliorelation.type.attrib"
enum-name="bibliorelation.type-enum.attribute"
other-name="bibliorelation.type-other.attributes" ]
bibliorelation.type-enum.attribute =
attribute type { "hasformat"
| "haspart"
| "hasversion"
| "isformatof"
| "ispartof"
| "isreferencedby"
| "isreplacedby"
| "isrequiredby"
| "isversionof"
| "othertype"
| "references"
| "replaces"
| "requires" }?
bibliorelation.type-other.attributes =
attribute type { "othertype" },
attribute othertype { xsd:NMTOKEN }
bibliorelation.type.attrib =
(bibliorelation.type-enum.attribute | bibliorelation.type-other.attributes)
db.bibliorelation = element bibliorelation { docbook.text }
ctrl:other-attribute [ name="bibliocoverage.spatial.attrib"
enum-name="bibliocoverage.spatial-enum.attribute"
other-name="bibliocoverage.spatial-other.attributes" ]
bibliocoverage.spatial-enum.attribute =
attribute spatial {
"dcmipoint" | "iso3166" | "dcmibox" | "tgn"
}?
bibliocoverage.spatial-other.attributes =
attribute spatial { "otherspatial" },
attribute otherspacial { xsd:NMTOKEN }
bibliocoverage.spatial.attrib =
(bibliocoverage.spatial-enum.attribute | bibliocoverage.spatial-other.attributes)
ctrl:other-attribute [ name="bibliocoverage.temporal.attrib"
enum-name="bibliocoverage.temporal-enum.attribute"
other-name="bibliocoverage.temporal-other.attributes" ]
bibliocoverage.temporal-enum.attribute =
attribute temporal {
"dcmiperiod" | "w3c-dtf"
}?
bibliocoverage.temporal-other.attributes =
attribute temporal { "othertemporal" },
attribute othertemporal { xsd:NMTOKEN }
bibliocoverage.temporal.attrib =
(bibliocoverage.temporal-enum.attribute | bibliocoverage.temporal-other.attributes)
db.bibliocoverage = element bibliocoverage { docbook.text }
legalnotice.info = docbook.info
db.legalnotice = element legalnotice { legalnotice.info, blocks+ }
db.othercredit = element othercredit { credit.contentmodel }
db.pagenums = element pagenums { docbook.text }
db.contrib = element contrib { docbook.text }
db.honorific = element honorific { docbook.text }
db.firstname = element firstname { docbook.text }
db.surname = element surname { docbook.text }
db.lineage = element lineage { docbook.text }
db.othername = element othername { docbook.text }
db.printhistory = element printhistory { para.blocks+ }
db.productname = element productname { docbook.text }
db.productnumber = element productnumber { docbook.text }
db.pubdate = element pubdate { docbook.text }
db.publisher = element publisher { (docbook.text | (db.publishername, db.address*)) }
db.publishername = element publishername { docbook.text }
db.releaseinfo = element releaseinfo { docbook.text }
revhistory.info = docbook.info
db.revhistory = element revhistory { revhistory.info, db.revision+ }
db.revision =
element revision {
db.revnumber,
db.date,
(db.authorinitials | db.author)*,
(db.revremark | db.revdescription)?
}
db.revnumber = element revnumber { docbook.text }
db.revremark = element revremark { inlines* }
db.revdescription = element revdescription { blocks* }
db.seriesvolnums = element seriesvolnums { docbook.text }
db.volumenum = element volumenum { docbook.text }
db.accel = element accel { docbook.text }
application.class.attrib = attribute class { "hardware" | "software" }?
db.application = element application { docbook.text }
db.classname = element classname { docbook.text }
db.command = element command { inlines* }
computeroutput.inlines = inlines
db.computeroutput = element computeroutput { computeroutput.inlines* }
database.class.attrib =
attribute class {
"field" | "key1" | "key2" | "name" | "record" | "table"
}?
db.database = element database { docbook.text }
db.email = element email { docbook.text }
db.envar = element envar { docbook.text }
db.errorcode = element errorcode { docbook.text }
db.errorname = element errorname { docbook.text }
db.errortext = element errortext { inlines* }
db.errortype = element errortype { docbook.text }
filename.path.attrib = attribute path { text }?
filename.class.attrib =
attribute class {
"devicefile"
| "directory"
| "extension"
| "headerfile"
| "libraryfile"
| "partition"
| "symlink"
}?
db.filename = element filename { docbook.text }
db.function = element function { docbook.text }
db.guibutton = element guibutton { docbook.text }
db.guiicon = element guiicon { docbook.text }
db.guilabel = element guilabel { docbook.text }
db.guimenu = element guimenu { docbook.text }
db.guimenuitem = element guimenuitem { docbook.text }
db.guisubmenu = element guisubmenu { docbook.text }
db.hardware = element hardware { docbook.text }
db.keycap = element keycap { docbook.text }
db.keycode = element keycode { docbook.text }
ctrl:other-attribute [ name="keycombo.action.attrib"
enum-name="keycombo.action-enum.attribute"
other-name="keycombo.action-other.attributes" ]
keycombo.action-enum.attribute =
attribute action {
"click" | "double-click" | "press" | "seq" | "simul"
}?
keycombo.action-other.attributes =
attribute action { "other" },
attribute otheraction { xsd:NMTOKEN }
keycombo.action.attrib =
(keycombo.action-enum.attribute | keycombo.action-other.attributes)
db.keycombo = element keycombo { docbook.text }
db.keysym = element keysym { docbook.text }
db.lineannotation = element lineannotation { inlines* }
db.literal = element literal { inlines* }
db.constant = element constant { docbook.text }
db.varname = element varname { docbook.text }
db.markup = element markup { docbook.text }
db.menuchoice = element menuchoice { docbook.text }
shortcut.action.attrib = keycombo.action.attrib
db.shortcut = element shortcut { docbook.text }
db.mousebutton = element mousebutton { docbook.text }
db.option = element option { docbook.text }
db.optional = element optional { inlines* }
parameter.class.attrib = attribute class { "command" | "function" | "option" }?
db.parameter = element parameter { docbook.text }
prompt.inlines = docbook.text
db.prompt = element prompt { prompt.inlines* }
db.replaceable = element replaceable { docbook.text }
db.returnvalue = element returnvalue { docbook.text }
xmltag.class.attrib =
attribute class {
"attribute"
| "attvalue"
| "element"
| "emptytag"
| "endtag"
| "genentity"
| "numcharref"
| "paramentity"
| "pi"
| "sgmlcomment"
| "starttag"
| "xmlpi"
}?
db.xmltag = element xmltag { docbook.text }
db.symbol = element symbol { docbook.text }
systemitem.class.attrib =
attribute class {
"domainname"
| "etheraddress"
| "event"
| "eventhandler"
| "filesystem"
| "fqdomainname"
| "groupname"
| "ipaddress"
| "library"
| "macro"
| "netmask"
| "newsgroup"
| "osname"
| "resource"
| "systemname"
| "username"
}?
systemitem.inlines = docbook.text
db.systemitem = element systemitem { systemitem.inlines* }
db.uri = element uri { docbook.text }
db.token = element token { docbook.text }
db.type = element type { docbook.text }
db.userinput = element userinput { inlines* }
db.abbrev = element abbrev { docbook.text }
db.acronym = element acronym { docbook.text }
db.citation = element citation { docbook.text }
db.citerefentry = element citerefentry { db.refentrytitle, db.manvolnum? }
db.refentrytitle = element refentrytitle { inlines* }
db.manvolnum = element manvolnum { docbook.text }
citetitle.pubwork.attrib =
attribute pubwork {
"article"
| "book"
| "chapter"
| "journal"
| "manuscript"
| "part"
| "refentry"
| "section"
| "series"
| "set"
}?
db.citetitle = element citetitle { inlines* }
db.emphasis = element emphasis { inlines* }
firstterm.baseform.attrib = glossterm.baseform.attrib
db.firstterm = element firstterm { docbook.text }
db.foreignphrase = element foreignphrase { inlines* }
glossterm.baseform.attrib = attribute baseform { text }?
db.glossterm = element glossterm { docbook.text }
db.phrase = element phrase { inlines* }
db.quote = element quote { inlines* }
db.subscript = element subscript { docbook.text }
db.superscript = element superscript { docbook.text }
trademark.class.attrib =
attribute class { "copyright" | "registered" | "service" | "trade" }?
db.trademark = element trademark { docbook.text }
db.wordasword = element wordasword { docbook.text }
db.footnoteref = element footnoteref { empty }
ctrl:common-linking [ element="xref" attributes="common.linking.attributes.req" ]
xref.xrefstyle.attrib = attribute xrefstyle { text }
db.xref = element xref { empty }
db.uri = element uri { docbook.text }
ctrl:common-linking [ element="anchor" suppress="yes" ]
db.anchor = element anchor { empty }
indexterm.singular.significance.attrib = significance.attribute?
indexterm.startofrange.significance.attrib = significance.attribute?
indexterm.endofrange.significance.attrib = significance.attribute?
indexterm.singular.zone.attrib = zone.attribute?
indexterm.startofrange.zone.attrib = zone.attribute?
indexterm.endofrange.zone.attrib = zone.attribute?
indexterm.singular.pagenum.attrib = pagenum.attribute?
indexterm.startofrange.pagenum.attrib = pagenum.attribute?
indexterm.endofrange.pagenum.attrib = pagenum.attribute?
indexterm.singular.scope.attrib = scope.attribute?
indexterm.startofrange.scope.attrib = scope.attribute?
indexterm.endofrange.scope.attrib = scope.attribute?
indexterm.singular.class.attrib = attribute class { "singular" }?
indexterm.startofrange.class.attrib = attribute class { "startofrange" }
indexterm.endofrange.class.attrib = attribute class { "endofrange" }
indexterm.endofrange.startref.attrib = attribute startref { xsd:IDREF }?
indexterm.contentmodel =
db.primary?,
((db.secondary,
((db.tertiary, (db.see | db.seealso+)?)
| db.see
| db.seealso+)?)
| db.see
| db.seealso+)?
indexterm.singular =
element indexterm {
indexterm.contentmodel
}
indexterm.startofrange =
element indexterm {
indexterm.contentmodel
}
indexterm.endofrange =
element indexterm {
indexterm.contentmodel
}
db.indexterm = (indexterm.singular|indexterm.startofrange|indexterm.endofrange)
sortas.attribute = attribute sortas { text }?
primary.sortas.attrib = sortas.attribute?
db.primary = element primary { inlines* }
secondary.sortas.attrib = sortas.attribute?
db.secondary = element secondary { inlines* }
tertiary.sortas.attrib = sortas.attribute?
db.tertiary = element tertiary { inlines* }
db.see = element see { inlines* }
db.seealso = element seealso { inlines* }
Last recorded change to this page:
2007-09-16
• For corrections or updates, contact webmaster AT tei-c DOT org