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