namespace ctrl = "http://nwalsh.com/xmlns/schema-control/"
namespace rng = "http://relaxng.org/ns/structure/1.0"
namespace s = "http://www.ascc.net/xml/schematron"
+namespace db = "http://docbook.org/docbook-ng/absinthe"
+default namespace = "http://docbook.org/docbook-ng/absinthe"
# ======================================================================
xreflabel.attribute = attribute xreflabel { text }
-role.attribute = attribute role { text }
-
revisionflag.attribute =
attribute revisionflag { "changed" | "added" | "deleted" | "off" }
revisionflag.attribute?,
effectivity.attributes
-common.attrib.idreq =
+common.attributes.idreq =
id.attribute,
xml.lang.attribute?,
xml.base.attribute?,
data.format.attribute = attribute format { text }
data.fileref.attribute = attribute fileref { text }
data.entityref.attribute = attribute entityref { xsd:ENTITY }
-data.common.attribute &=
+data.common.attrib &=
data.format.attribute?,
(data.fileref.attribute | data.entityref.attribute)
# TEI: sgmlKeywords, ident
markup.inlines =
- db.xmltag
+ db.tag
| db.markup
| db.token
| db.symbol
| db.procedure
| db.simplelist
| db.variablelist
- | db.qandaset
| db.segmentedlist
verbatim.blocks =
# ======================================================================
-db.title = element title { inlines* }
+[
+ db:refname [ "title" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ title.role.attribute = attribute role { text }
+
+ title.attr =
+ title.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.title =
+ element title {
+ title.attr,
+ inlines*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "titleabbrev" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ titleabbrev.role.attribute = attribute role { text }
+
+ titleabbrev.attr =
+ titleabbrev.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.titleabbrev =
+ element titleabbrev {
+ titleabbrev.attr,
+ inlines*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "subtitle" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ subtitle.role.attribute = attribute role { text }
+
+ subtitle.attr =
+ subtitle.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-db.titleabbrev = element titleabbrev { inlines* }
+ db.subtitle =
+ element subtitle {
+ subtitle.attr,
+ inlines*
+ }
+}
-db.subtitle = element subtitle { inlines* }
+# ======================================================================
docbook.title = db.title? & db.titleabbrev? & db.subtitle?
docbook.titlereq = db.title & db.titleabbrev? & db.subtitle?
]
]
-subjectset.scheme.attrib = attribute scheme { xsd:NMTOKEN }?
-db.subjectset = element subjectset { db.subject+ }
-
-subject.weight.attrib = attribute weight { text }?
-db.subject = element subject { db.subjectterm+ }
-
-db.subjectterm = element subjectterm { text }
-
-db.keywordset = element keywordset { db.keyword+ }
-
-db.keyword = element keyword { text }
+# ======================================================================
-qandaset.defaultlabel.attrib = attribute defaultlabel { "none" | "number" | "qanda" }?
-qandaset.info = docbook.info.titleonly
-db.qandaset =
- element qandaset { qandaset.info, blocks*, (db.qandadiv+ | db.qandaentry+) }
+[
+ db:refname [ "subjectset" ]
+ db:refpurpose [ "" ]
+]
+div {
-qandadiv.info = docbook.info.titleonly
-db.qandadiv =
- element qandadiv { qandadiv.info, blocks*, (db.qandadiv+ | db.qandaentry+) }
+ subjectset.role.attribute = attribute role { text }
-qandaentry.info = docbook.info.titleforbidden
-db.qandaentry =
- element qandaentry { qandaentry.info, db.question, db.answer* }
+ subjectset.attr =
+ subjectset.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & attribute scheme { xsd:NMTOKEN }?
-db.question = element question { db.label?, blocks+ }
+ db.subjectset =
+ element subjectset {
+ subjectset.attr,
+ db.subject+
+ }
+}
-db.answer = element answer { db.label?, blocks+ }
+# ======================================================================
-db.label = element label { docbook.text }
+[
+ db:refname [ "subject" ]
+ db:refpurpose [ "" ]
+]
+div {
-table.choice = notAllowed
-informaltable.choice = notAllowed
+ subject.role.attribute = attribute role { text }
-db.table = table.choice
-db.informaltable = informaltable.choice
+ subject.attr =
+ subject.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & attribute weight { text }?
-procedure.info = docbook.info.titleonly
-db.procedure = element procedure { procedure.info, blocks*, db.step+ }
+ db.subject =
+ element subject {
+ subject.attr,
+ db.subjectterm+
+ }
+}
-step.performance.attrib = attribute performance { "optional" | "required" }?
-step.info = docbook.info.titleonly
-db.step = element step {
- step.info,
- blocks*,
- (db.substeps|db.stepalternatives)?,
- blocks* }
+# ======================================================================
-stepalternatives.performance.attrib = attribute performance { "optional" | "required" }?
-stepalternatives.info = docbook.info.titleforbidden
-db.stepalternatives = element stepalternatives { stepalternatives.info, db.step+ }
+[
+ db:refname [ "subjectterm" ]
+ db:refpurpose [ "" ]
+]
+div {
-substeps.performance.attrib = attribute performance { "optional" | "required" }?
-db.substeps = element substeps { db.step+ }
+ subjectterm.role.attribute = attribute role { text }
-ctrl:exclude [ from="db.sidebar" exclude="db.sidebar" ]
+ subjectterm.attr =
+ subjectterm.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-sidebar.info = docbook.info.titleonly
+ db.subjectterm =
+ element subjectterm {
+ subjectterm.attr,
+ text
+ }
+}
-db.sidebar = element sidebar { sidebar.info, blocks+ }
+# ======================================================================
-abstract.info = docbook.info.titleonly
-db.abstract = element abstract { abstract.info, para.blocks+ }
+[
+ db:refname [ "keywordset" ]
+ db:refpurpose [ "" ]
+]
+div {
-personblurb.info = docbook.info.titleonly
-db.personblurb = element personblurb { personblurb.info, para.blocks+ }
+ keywordset.role.attribute = attribute role { text }
-blockquote.info = docbook.info.titleonly
-db.blockquote = element blockquote { blockquote.info, db.attribution?, blocks+ }
+ keywordset.attr =
+ keywordset.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-db.attribution = element attribution { (docbook.text | db.personname) }
+ db.keywordset = element keywordset {
+ keywordset.attr,
+ db.keyword+
+ }
+}
-bridgehead.renderas.attrib =
- attribute renderas {
- "other"
- | "sect1"
- | "sect2"
- | "sect3"
- | "sect4"
- | "sect5" }?
+# ======================================================================
-db.bridgehead = element bridgehead { inlines* }
+[
+ db:refname [ "keyword" ]
+ db:refpurpose [ "" ]
+]
+div {
-db.remark = element remark { docbook.text }
+ keyword.role.attribute = attribute role { text }
-epigraph.info = docbook.info.titleforbidden
+ keyword.attr =
+ keyword.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-db.epigraph =
- element epigraph {
- epigraph.info,
- db.attribution?,
- (para.blocks | db.literallayout)+
+ db.keyword = element keyword {
+ keyword.attr,
+ text
}
+}
-ctrl:exclude [ from="db.footnote" exclude="db.footnote" ]
+# ======================================================================
-db.footnote = element footnote { blocks+ }
+table.choice = notAllowed
+informaltable.choice = notAllowed
-db.highlights = element highlights {
- (list.blocks | admonition.blocks | para.blocks | indexing.inlines)+
-}
+db.table = table.choice
+db.informaltable = informaltable.choice
-para.blocks =
- db.anchor
- | db.para
- | db.formalpara
- | db.simpara
+# ======================================================================
-formalpara.info = docbook.info.titleonlyreq
-db.formalpara = element formalpara { formalpara.info, indexing.inlines*, db.para }
+[
+ db:refname [ "procedure" ]
+ db:refpurpose [ "" ]
+]
+div {
-para.info = docbook.info.titleforbidden
-db.para = element para { para.info, (inlines | blocks.nopara)* }
+ procedure.role.attribute = attribute role { text }
-simpara.info = docbook.info.titleforbidden
-db.simpara = element simpara { simpara.info, inlines* }
+ procedure.attr =
+ procedure.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-# admonitions are not excluded from themselves
-admonition.contentmodel = docbook.info.titleonly, blocks+
+ procedure.info = docbook.info.titleonly
-db.caution = element caution { admonition.contentmodel }
+ db.procedure =
+ element procedure {
+ procedure.attr,
+ procedure.info,
+ blocks*,
+ db.step+
+ }
+}
-ctrl:exclude [ from="admonition.blocks" exclude="admonition.blocks" ]
+# ======================================================================
-db.important = element important { admonition.contentmodel }
+performance.attribute = attribute performance { "optional" | "required" }
-db.note = element note { admonition.contentmodel }
+# ======================================================================
-db.tip = element tip { admonition.contentmodel }
+[
+ db:refname [ "step" ]
+ db:refpurpose [ "" ]
+]
+div {
-db.warning = element warning { admonition.contentmodel }
+ step.role.attribute = attribute role { text }
-itemizedlist.mark.attrib = attribute mark { text }?
-itemizedlist.spacing.attrib = attribute spacing { "compact" | "normal" }?
+ step.attr =
+ step.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & performance.attribute
-itemizedlist.info = docbook.info.titleonly
-db.itemizedlist = element itemizedlist { itemizedlist.info, blocks*, db.listitem+ }
+ step.info = docbook.info.titleonly
-orderedlist.inheritnum.attrib = attribute inheritnum { "ignore" | "inherit" }?
-orderedlist.spacing.attrib = attribute spacing { "compact" | "normal" }?
-orderedlist.continuation.attrib = continuation.attribute?
-orderedlist.numeration.attrib = attribute numeration { text }?
+ db.step = element step {
+ step.attr,
+ step.info,
+ blocks*,
+ (db.substeps|db.stepalternatives)?,
+ blocks*
+ }
+}
-orderedlist.info = docbook.info.titleonly
-db.orderedlist = element orderedlist { orderedlist.info, blocks*, db.listitem+ }
+# ======================================================================
-listitem.override.attrib = attribute override { text }?
-db.listitem = element listitem { blocks+ }
+[
+ db:refname [ "stepalternatives" ]
+ db:refpurpose [ "" ]
+]
+div {
-segmentedlist.info = docbook.info.titleonly
-db.segmentedlist =
- element segmentedlist {
- segmentedlist.info,
- db.segtitle+,
- db.seglistitem+ }
+ stepalternatives.role.attribute = attribute role { text }
-db.segtitle = element segtitle { inlines* }
+ stepalternatives.attr =
+ stepalternatives.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & performance.attribute
-db.seglistitem =
- [
- s:rule [
- context = "seglistitem"
- s:assert [
- test = "count(seg) = count(../segtitle)"
- "The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist"
- ]
- ]
- ]
- element seglistitem { db.seg+ }
+ stepalternatives.info = docbook.info.titleforbidden
-db.seg = element seg { inlines* }
+ db.stepalternatives =
+ element stepalternatives {
+ stepalternatives.attr,
+ stepalternatives.info,
+ db.step+
+ }
+}
-simplelist.type.attrib = attribute type { "horiz" | "vert" | "inline" }?
-simplelist.columns.attrib = attribute columns { xsd:integer}?
-db.simplelist = element simplelist { db.member+ }
+# ======================================================================
-db.member = element member { inlines* }
+[
+ db:refname [ "substeps" ]
+ db:refpurpose [ "" ]
+]
+div {
-variablelist.termlength.attrib = attribute termlength { text }?
-variablelist.info = docbook.info.titleonly
+ substeps.role.attribute = attribute role { text }
-db.variablelist = element variablelist { variablelist.info, blocks*, db.varlistentry+ }
+ substeps.attr =
+ substeps.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & performance.attribute
-db.varlistentry = element varlistentry { db.term+, db.listitem }
+ db.substeps =
+ element substeps {
+ substeps.attr,
+ db.step+
+ }
+}
-db.term = element term { inlines* }
+# ======================================================================
-floatstyle.attribute = attribute floatstyle { text }
+[
+ db:refname [ "sidebar" ]
+ db:refpurpose [ "" ]
+]
+div {
-example.floatstyle.attrib = floatstyle.attribute?
-example.width.attrib = attribute width { text }?
-example.label.attrib = attribute label { text }?
+ ctrl:exclude [ from="db.sidebar" exclude="db.sidebar" ]
-example.info = docbook.info.titleonlyreq
-db.example = element example { example.info, blocks+ }
+ sidebar.role.attribute = attribute role { text }
-informalexample.info = docbook.info.titleforbidden
-informalexample.width.attrib = attribute width { text }?
-informalexample.floatstyle.attrib = floatstyle.attribute?
-db.informalexample = element informalexample { informalexample.info, blocks+ }
+ sidebar.attr =
+ sidebar.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-verbatim.inlines = inlines | db.lineannotation
+ sidebar.info = docbook.info.titleonly
-verbatim.contentmodel = docbook.info.titleforbidden, (db.textobject|verbatim.inlines*)
+ db.sidebar =
+ element sidebar {
+ sidebar.attr,
+ sidebar.info,
+ blocks+
+ }
+}
-programlisting.verbatim.attribs = verbatim.attributes
-programlisting.width.attrib = attribute width { text }?
-db.programlisting = element programlisting { verbatim.contentmodel }
+# ======================================================================
-literallayout.verbatim.attribs = verbatim.attributes
-literallayout.class.attrib = attribute class { "monospaced" | "normal" }?
-db.literallayout = element literallayout { verbatim.contentmodel }
+[
+ db:refname [ "abstract" ]
+ db:refpurpose [ "" ]
+]
+div {
-screen.verbatim.attribs = verbatim.attributes
-screen.width.attrib = attribute width { text }?
-db.screen = element screen { verbatim.contentmodel }
+ abstract.role.attribute = attribute role { text }
-screenshot.block = db.mediaobject
+ abstract.attr =
+ abstract.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-screenshot.info = docbook.info
-db.screenshot =
- element screenshot { screenshot.info, screenshot.block }
+ abstract.info = docbook.info.titleonly
-figure.floatstyle.attrib = floatstyle.attribute?
-figure.float.attrib = attribute float { text }?
-figure.pgwide.attrib = pgwide.attribute?
-figure.label.attrib = attribute label { text }?
-figure.info = docbook.info.titleonlyreq
-db.figure = element figure { figure.info, blocks+ }
+ db.abstract = element abstract {
+ abstract.attr,
+ abstract.info,
+ para.blocks+
+ }
+}
-informalfigure.floatstyle.attrib = floatstyle.attribute?
-informalfigure.float.attrib = float.attribute?
-informalfigure.pgwide.attrib = pgwide.attribute?
-informalfigure.label.attrib = attribute label { text }?
-informalfigure.info = docbook.info.titleforbidden
-db.informalfigure = element informalfigure { informalfigure.info, blocks+ }
+# ======================================================================
-mediaobject.content =
- db.videoobject | db.audioobject | db.imageobject | db.textobject
+[
+ db:refname [ "personblurb" ]
+ db:refpurpose [ "" ]
+]
+div {
-mediaobject.info = docbook.info.titleforbidden
-db.mediaobject =
- element mediaobject { mediaobject.info, mediaobject.content+ }
+ personblurb.role.attribute = attribute role { text }
-inlinemediaobject.content =
- db.videoobject | db.audioobject | db.imageobject | db.textobject
+ personblurb.attr =
+ personblurb.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-inlinemediaobject.info = docbook.info.titleforbidden
-db.inlinemediaobject =
- element inlinemediaobject { inlinemediaobject.info, inlinemediaobject.content+ }
+ personblurb.info = docbook.info.titleonly
-videoobject.info = docbook.info.titleforbidden
-db.videoobject = element videoobject { videoobject.info, db.videodata }
+ db.personblurb =
+ element personblurb {
+ personblurb.attr,
+ personblurb.info,
+ para.blocks+
+ }
+}
-audioobject.info = docbook.info.titleforbidden
-db.audioobject = element audioobject { audioobject.info, db.audiodata }
+# ======================================================================
-imageobject.content = db.imagedata
+[
+ db:refname [ "blockquote" ]
+ db:refpurpose [ "" ]
+]
+div {
-imageobject.info = docbook.info.titleforbidden
-db.imageobject = element imageobject { imageobject.info, imageobject.content }
-
-textobject.info = docbook.info.titleforbidden
-db.textobject =
- element textobject { textobject.info, (db.phrase | db.textdata | blocks+) }
-
-videodata.data.attrib = data.common.attribute
-videodata.align.attrib =
- attribute align { "center" | "char" | "justify" | "left" | "right" }?
-videodata.valign.attrib = attribute valign { "bottom" | "middle" | "top" }?
-videodata.width.attrib = attribute width { text }?
-videodata.contentwidth.attrib = attribute contentwidth { text }?
-videodata.scalefit.attrib = attribute scalefit { "0" | "1" }?
-videodata.scale.attrib = attribute scale { text }?
-videodata.depth.attrib = attribute depth { text }?
-videodata.contentdepth.attrib = attribute contentdepth { text }?
-
-videodata.info = docbook.info.titleforbidden
-db.videodata = element videodata { videodata.info }
-
-audiodata.data.attrib = data.common.attribute
-audiodata.info = docbook.info.titleforbidden
-db.audiodata = element audiodata { audiodata.info }
-
-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.scale.attrib = attribute scale { text }?
-imagedata.depth.attrib = attribute depth { text }?
-imagedata.contentdepth.attrib = attribute contentdepth { text }?
-
-imagedata.info = docbook.info.titleforbidden
-db.imagedata = element imagedata { imagedata.info }
-
-textdata.data.attrib = data.common.attribute
-textdata.encoding.attrib = attribute encoding { text }?
-
-textdata.info = docbook.info.titleforbidden
-db.textdata = element textdata { textdata.info }
+ blockquote.role.attribute = attribute role { text }
-# db.caption = element caption { blocks+ }
+ blockquote.attr =
+ blockquote.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-equation.content = db.mediaobject
+ blockquote.info = docbook.info.titleonly
-equation.info = docbook.info.titleonlyreq
-db.equation = element equation { equation.info, equation.content+ }
+ db.blockquote =
+ element blockquote {
+ blockquote.attr,
+ blockquote.info,
+ db.attribution?,
+ blocks+
+ }
+}
-informalequation.info = docbook.info.titleforbidden
-db.informalequation =
- element informalequation {
- informalequation.info,
- equation.content+
- }
+# ======================================================================
-inlineequation.content = db.inlinemediaobject
+[
+ db:refname [ "attribution" ]
+ db:refpurpose [ "" ]
+]
+div {
-db.inlineequation = element inlineequation { inlineequation.content+ }
+ attribution.role.attribute = attribute role { text }
-synopsis.verbatim.attribs = verbatim.attributes
-synopsis.label.attrib = attribute label { text }
-db.synopsis = element synopsis { verbatim.contentmodel }
+ attribution.attr =
+ attribution.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-cmdsynopsis.sepchar.attrib = attribute sepchar { text }?
-cmdsynopsis.cmdlength.attrib = attribute cmdlength { text }?
-cmdsynopsis.label.attrib = attribute label { text }?
+ db.attribution =
+ element attribution {
+ attribution.attr,
+ (docbook.text | db.personname)
+ }
+}
-cmdsynopsis.info = docbook.info.titleforbidden
-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" }
+renderas.attribute =
+ attribute renderas {
+ "other"
+ | "sect1"
+ | "sect2"
+ | "sect3"
+ | "sect4"
+ | "sect5" }
-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)*
- }
+# ======================================================================
+
+[
+ db:refname [ "bridgehead" ]
+ db:refpurpose [ "" ]
+]
+div {
+ bridgehead.role.attribute = attribute role { text }
-group.rep.attrib = rep.attribute?
-group.choice.attrib = choice.attribute?
+ bridgehead.attr =
+ bridgehead.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & renderas.attribute?
-db.group =
- element group {
- (db.arg | db.group | db.option | db.synopfragmentref | db.replaceable | db.sbr)+
- }
+ db.bridgehead =
+ element bridgehead {
+ bridgehead.attr,
+ inlines*
+ }
+}
-ctrl:common-linking [ element="sbr" suppress="yes" ]
+# ======================================================================
-db.sbr = element sbr { empty }
+[
+ db:refname [ "remark" ]
+ db:refpurpose [ "" ]
+]
+div {
-db.synopfragment = element synopfragment { (db.arg | db.group)+ }
+ remark.role.attribute = attribute role { text }
-synopfragmentref.linkend.attrib = linkend.attribute
-db.synopfragmentref =
- [
- s:rule [
- context = "synopfragmentref"
- s:assert [
- test = "name(//*[@id=current()/@linkend]) = 'synopfragment'"
- "@linkend on synopfragmentref must point to a synopfragment."
- ]
- ]
- ]
- element synopfragmentref { text }
+ remark.attr =
+ remark.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-funcsynopsis.info = docbook.info.titleforbidden
-db.funcsynopsis =
- element funcsynopsis {
- funcsynopsis.info?,
- (db.funcsynopsisinfo | db.funcprototype)+
+ db.remark = element remark {
+ remark.attr,
+ docbook.text
}
+}
-funcsynopsisinfo.verbatim.attribs = verbatim.attributes
-db.funcsynopsisinfo = element funcsynopsisinfo { verbatim.contentmodel }
+# ======================================================================
-db.funcprototype =
- element funcprototype {
- db.modifier*,
- db.funcdef,
- (db.void | db.varargs | (db.paramdef+, db.varargs?)),
- db.modifier*
- }
+[
+ db:refname [ "epigraph" ]
+ db:refpurpose [ "" ]
+]
+div {
-db.funcdef = element funcdef { (docbook.text | db.type | db.function)* }
+ epigraph.role.attribute = attribute role { text }
-db.void = element void { empty }
+ epigraph.attr =
+ epigraph.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-db.varargs = element varargs { empty }
+ epigraph.info = docbook.info.titleforbidden
-paramdef.choice.attrib = attribute choice { "opt" | "req" }?
+ db.epigraph =
+ element epigraph {
+ epigraph.attr,
+ epigraph.info,
+ db.attribution?,
+ (para.blocks | db.literallayout)+
+ }
+}
-db.paramdef =
- element paramdef { (docbook.text | db.type | db.parameter | db.funcparams)* }
+# ======================================================================
-db.funcparams = element funcparams { inlines* }
+[
+ db:refname [ "footnote" ]
+ db:refpurpose [ "" ]
+]
+div {
-oo-method.synopsis.blocks =
- db.methodsynopsis | db.constructorsynopsis | db.destructorsynopsis
+ ctrl:exclude [ from="db.footnote" exclude="db.footnote" ]
-oo-field.synopsis.blocks = db.fieldsynopsis
+ footnote.role.attribute = attribute role { text }
-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)*
- }
+ footnote.attr =
+ footnote.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-classsynopsisinfo.verbatim.attribs = verbatim.attributes
-db.classsynopsisinfo = element classsynopsisinfo { verbatim.contentmodel }
+ db.footnote =
+ element footnote {
+ footnote.attr,
+ blocks+
+ }
+}
-db.ooclass = element ooclass { db.modifier*, db.classname }
+# ======================================================================
-db.oointerface = element oointerface { db.modifier*, db.interfacename }
+[
+ db:refname [ "highlights" ]
+ db:refpurpose [ "" ]
+]
+div {
-db.ooexception = element ooexception {db.modifier*, db.exceptionname }
+ highlights.role.attribute = attribute role { text }
-db.modifier = element modifier { docbook.text }
+ highlights.attr =
+ highlights.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-db.interfacename = element interfacename { docbook.text }
+ db.highlights =
+ element highlights {
+ highlights.attr,
+ (list.blocks | admonition.blocks | para.blocks | indexing.inlines)+
+ }
+}
-db.exceptionname = element exceptionname { docbook.text }
+# ======================================================================
-fieldsynopsis.language.attrib = oo-language.attribute
-db.fieldsynopsis =
- element fieldsynopsis {
- db.modifier*,
- db.type?,
- db.varname,
- db.initializer?
- }
+para.blocks =
+ db.anchor
+ | db.para
+ | db.formalpara
+ | db.simpara
-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:refname [ "formalpara" ]
+ db:refpurpose [ "" ]
+]
+div {
-destructorsynopsis.language.attrib = oo-language.attribute
-db.destructorsynopsis =
- element destructorsynopsis {
- db.modifier*,
- db.methodname?,
- (db.methodparam+ | db.void?),
- db.exceptionname*
- }
+ formalpara.role.attribute = attribute role { text }
-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*
- }
+ formalpara.attr =
+ formalpara.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-db.methodname = element methodname { docbook.text }
+ formalpara.info = docbook.info.titleonlyreq
-methodparam.rep.attrib = rep.attribute?
-methodparam.choice.attrib = choice.attribute?
+ db.formalpara =
+ element formalpara {
+ formalpara.attr,
+ formalpara.info,
+ indexing.inlines*,
+ db.para
+ }
+}
-db.methodparam =
- element methodparam {
- db.modifier*,
- db.type?,
- ((db.parameter, db.initializer?) | db.funcparams),
- db.modifier*
- }
+# ======================================================================
-# TEI: addrPart
+[
+ db:refname [ "para" ]
+ db:refpurpose [ "" ]
+]
+div {
-address.verbatim.attribs = verbatim.attributes
-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.otheraddr)*
- }
+ para.role.attribute = attribute role { text }
-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.otheraddr = element otheraddr { docbook.text }
-
-db.affiliation =
- element affiliation {
- db.shortaffil?,
- db.jobtitle*,
- db.orgname?,
- db.orgdiv*,
- db.address*
- }
+ para.attr =
+ para.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-db.shortaffil = element shortaffil { docbook.text }
+ para.info = docbook.info.titleforbidden
-db.jobtitle = element jobtitle { docbook.text }
+ db.para =
+ element para {
+ para.attr,
+ para.info,
+ (inlines | blocks.nopara)*
+ }
+}
-ctrl:other-attribute [ name="orgname.class.attrib"
- enum-name="orgname.class-enum.attribute"
- other-name="orgname.class-other.attributes" ]
+# ======================================================================
-orgname.class-enum.attribute =
- attribute class {
- "consortium"
- | "corporation"
- | "informal"
- | "nonprofit" }?
+[
+ db:refname [ "simpara" ]
+ db:refpurpose [ "" ]
+]
+div {
-orgname.class-other.attributes =
- attribute class { "other" },
- attribute otherclass { text }
+ simpara.role.attribute = attribute role { text }
-orgname.class.attrib = (orgname.class-enum.attribute | orgname.class-other.attributes)
+ simpara.attr =
+ simpara.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-db.orgname = element orgname { docbook.text }
+ simpara.info = docbook.info.titleforbidden
-db.orgdiv = element orgdiv { inlines* }
+ db.simpara =
+ element simpara {
+ simpara.attr,
+ simpara.info,
+ inlines*
+ }
+}
-db.artpagenums = element artpagenums { docbook.text }
+# ======================================================================
-db.personname =
- element personname {
- docbook.text
- | (db.honorific
- | db.firstname
- | db.surname
- | db.lineage
- | db.othername)+
- }
+ctrl:exclude [ from="admonition.blocks" exclude="admonition.blocks" ]
-person.author =
- db.personname,
- (db.personblurb
- | db.affiliation
- | db.email
- | db.address
- | db.contrib)*
+admonition.contentmodel = docbook.info.titleonly, blocks+
-org.author =
- db.orgname,
- (db.orgdiv
- | db.affiliation
- | db.email
- | db.address
- | db.contrib)*
+# ======================================================================
-credit.contentmodel = person.author | org.author
+[
+ db:refname [ "caution" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ caution.role.attribute = attribute role { text }
-db.author = element author { credit.contentmodel }
+ caution.attr =
+ caution.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-db.authorgroup = element authorgroup { (db.author | db.editor | db.othercredit)+ }
+ db.caution =
+ element caution {
+ caution.attr,
+ admonition.contentmodel
+ }
+}
-db.collab = element collab { (db.personname | db.orgname)+, db.affiliation* }
+# ======================================================================
-db.authorinitials = element authorinitials { docbook.text }
+[
+ db:refname [ "important" ]
+ db:refpurpose [ "" ]
+]
+div {
-db.confgroup =
- element confgroup {
- (db.confdates
- | db.conftitle
- | db.confnum
- | db.confsponsor
- | db.address)*
- }
+ important.role.attribute = attribute role { text }
-db.confdates = element confdates { docbook.text }
+ important.attr =
+ important.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-db.conftitle = element conftitle { docbook.text }
+ db.important =
+ element important {
+ important.attr,
+ admonition.contentmodel
+ }
+}
-db.confnum = element confnum { docbook.text }
+# ======================================================================
-db.confsponsor = element confsponsor { docbook.text }
+[
+ db:refname [ "note" ]
+ db:refpurpose [ "" ]
+]
+div {
-# db.contractnum = element contractnum { docbook.text }
+ note.role.attribute = attribute role { text }
-# db.contractsponsor = element contractsponsor { docbook.text }
+ note.attr =
+ note.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-db.copyright = element copyright { db.year+, db.holder* }
+ db.note =
+ element note {
+ note.attr,
+ admonition.contentmodel
+ }
+}
-db.year = element year { docbook.text }
+# ======================================================================
-db.holder = element holder { docbook.text }
+[
+ db:refname [ "tip" ]
+ db:refpurpose [ "" ]
+]
+div {
-db.date = element date { docbook.text }
+ tip.role.attribute = attribute role { text }
-db.edition = element edition { docbook.text }
+ tip.attr =
+ tip.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-db.editor = element editor { credit.contentmodel }
+ db.tip =
+ element tip {
+ tip.attr,
+ admonition.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 }
+[
+ db:refname [ "warning" ]
+ db:refpurpose [ "" ]
+]
+div {
-bibliosource.class.attrib = biblio.class.attrib
-db.bibliosource = element bibliosource { docbook.text }
+ warning.role.attribute = attribute role { text }
-bibliorelation.class.attrib = biblio.class.attrib
+ warning.attr =
+ warning.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-ctrl:other-attribute [ name="bibliorelation.type.attrib"
- enum-name="bibliorelation.type-enum.attribute"
- other-name="bibliorelation.type-other.attributes" ]
+ db.warning =
+ element warning {
+ warning.attr,
+ admonition.contentmodel
+ }
+}
-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 }
+spacing.attribute = attribute spacing { "compact" | "normal" }
-bibliorelation.type.attrib =
- (bibliorelation.type-enum.attribute | bibliorelation.type-other.attributes)
+# ======================================================================
-db.bibliorelation = element bibliorelation { docbook.text }
+[
+ db:refname [ "itemizedlist" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ itemizedlist.role.attribute = attribute role { text }
+
+ itemizedlist.attr =
+ itemizedlist.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & spacing.attribute?
+ & attribute mark { text }?
+
+ itemizedlist.info = docbook.info.titleonly
+
+ db.itemizedlist =
+ element itemizedlist {
+ itemizedlist.attr,
+ itemizedlist.info,
+ blocks*,
+ db.listitem+
+ }
+}
-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"
+[
+ db:refname [ "orderedlist" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ orderedlist.role.attribute = attribute role { text }
+
+ orderedlist.attr =
+ orderedlist.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & spacing.attribute?
+ & continuation.attribute?
+ & attribute inheritnum { "ignore" | "inherit" }?
+ & attribute numeration { text }?
+
+ orderedlist.info = docbook.info.titleonly
+
+ db.orderedlist = element orderedlist {
+ orderedlist.attr,
+ orderedlist.info,
+ blocks*,
+ db.listitem+
}
+}
-bibliocoverage.spatial-other.attributes =
- attribute spatial { "otherspatial" },
- attribute otherspatial { xsd:NMTOKEN }
+# ======================================================================
-bibliocoverage.spatial.attrs =
- (bibliocoverage.spatial-enum.attribute | bibliocoverage.spatial-other.attributes)
+[
+ db:refname [ "listitem" ]
+ db:refpurpose [ "" ]
+]
+div {
-ctrl:other-attribute [ name="bibliocoverage.temporal.attrib"
- enum-name="bibliocoverage.temporal-enum.attribute"
- other-name="bibliocoverage.temporal-other.attributes" ]
+ listitem.role.attribute = attribute role { text }
-bibliocoverage.temporal-enum.attribute =
- attribute temporal {
- "dcmiperiod" | "w3c-dtf"
- }
+ listitem.attr =
+ listitem.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & attribute override { text }?
-bibliocoverage.temporal-other.attributes =
- attribute temporal { "othertemporal" },
- attribute othertemporal { xsd:NMTOKEN }
+ db.listitem = element listitem {
+ listitem.attr,
+ blocks+
+ }
+}
-bibliocoverage.temporal.attrs =
- (bibliocoverage.temporal-enum.attribute | bibliocoverage.temporal-other.attributes)
+# ======================================================================
-bibliocoverage.coverage.attrib =
- (bibliocoverage.spatial.attrs | bibliocoverage.temporal.attrs)
- | (bibliocoverage.spatial.attrs & bibliocoverage.temporal.attrs)
+[
+ db:refname [ "segmentedlist" ]
+ db:refpurpose [ "" ]
+]
+div {
-db.bibliocoverage = element bibliocoverage { docbook.text }
+ segmentedlist.role.attribute = attribute role { text }
-legalnotice.info = docbook.info.titleonly
-db.legalnotice = element legalnotice { legalnotice.info, blocks+ }
+ segmentedlist.attr =
+ segmentedlist.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-othercredit.class.attrib = attribute class {
- "copyeditor"
- | "graphicdesigner"
- | "other"
- | "productioneditor"
- | "technicaleditor"
- | "translator" }?
+ segmentedlist.info = docbook.info.titleonly
-db.othercredit = element othercredit { credit.contentmodel }
+ db.segmentedlist =
+ element segmentedlist {
+ segmentedlist.attr,
+ segmentedlist.info,
+ db.segtitle+,
+ db.seglistitem+
+ }
+}
-db.pagenums = element pagenums { docbook.text }
+# ======================================================================
-db.contrib = element contrib { docbook.text }
+[
+ db:refname [ "segtitle" ]
+ db:refpurpose [ "" ]
+]
+div {
-db.honorific = element honorific { docbook.text }
+ segtitle.role.attribute = attribute role { text }
-db.firstname = element firstname { docbook.text }
+ segtitle.attr =
+ segtitle.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-db.surname = element surname { docbook.text }
+ db.segtitle =
+ element segtitle {
+ segtitle.attr,
+ inlines*
+ }
+}
-db.lineage = element lineage { docbook.text }
+# ======================================================================
-db.othername = element othername { docbook.text }
+[
+ db:refname [ "seglistitem" ]
+ db:refpurpose [ "" ]
+]
+div {
-db.printhistory = element printhistory { para.blocks+ }
+ seglistitem.role.attribute = attribute role { text }
-productname.class.attrib = attribute class {
- "copyright" | "registered" | "service" | "trade" }?
-db.productname = element productname { docbook.text }
+ seglistitem.attr =
+ seglistitem.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-db.productnumber = element productnumber { docbook.text }
-db.pubdate = element pubdate { docbook.text }
+ db.seglistitem =
+ [
+ s:rule [
+ context = "db:seglistitem"
+ s:assert [
+ test = "count(db:seg) = count(../db:segtitle)"
+ "The number of seg elements must be the same as the number of segtitle elements in the parent segmentedlist"
+ ]
+ ]
+ ]
+ element seglistitem {
+ seglistitem.attr,
+ db.seg+
+ }
+}
-db.publisher = element publisher { db.publishername, db.address* }
+# ======================================================================
-db.publishername = element publishername { docbook.text }
+[
+ db:refname [ "seg" ]
+ db:refpurpose [ "" ]
+]
+div {
-db.releaseinfo = element releaseinfo { docbook.text }
+ seg.role.attribute = attribute role { text }
-revhistory.info = docbook.info.titleonly
-db.revhistory = element revhistory { revhistory.info, db.revision+ }
+ seg.attr =
+ seg.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-db.revision =
- element revision {
- db.revnumber,
- db.date,
- (db.authorinitials | db.author)*,
- (db.revremark | db.revdescription)?
+ db.seg = element seg {
+ seg.attr,
+ inlines*
}
+}
-db.revnumber = element revnumber { docbook.text }
+# ======================================================================
-db.revremark = element revremark { docbook.text }
+[
+ db:refname [ "simplelist" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ simplelist.role.attribute = attribute role { text }
+
+ simplelist.attr =
+ simplelist.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & attribute type { "horiz" | "vert" | "inline" }?
+ & attribute columns { xsd:integer}?
+
+ db.simplelist =
+ element simplelist {
+ simplelist.attr,
+ db.member+
+ }
+}
-db.revdescription = element revdescription { blocks* }
+# ======================================================================
-db.seriesvolnums = element seriesvolnums { docbook.text }
+[
+ db:refname [ "member" ]
+ db:refpurpose [ "" ]
+]
+div {
-db.volumenum = element volumenum { docbook.text }
+ member.role.attribute = attribute role { text }
-db.issuenum = element issuenum { docbook.text }
+ member.attr =
+ member.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-db.accel = element accel { docbook.text }
+ db.member =
+ element member {
+ member.attr,
+ inlines*
+ }
+}
-application.class.attrib = attribute class { "hardware" | "software" }?
-db.application = element application { docbook.text }
+# ======================================================================
-db.classname = element classname { docbook.text }
+[
+ db:refname [ "variablelist" ]
+ db:refpurpose [ "" ]
+]
+div {
-db.command = element command { inlines* }
+ variablelist.role.attribute = attribute role { text }
-computeroutput.inlines = (inlines)
+ variablelist.attr =
+ variablelist.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & attribute termlength { text }?
-db.computeroutput = element computeroutput { computeroutput.inlines* }
+ variablelist.info = docbook.info.titleonly
-database.class.attrib =
- attribute class {
- "altkey"
- | "constraint"
- | "datatype"
- | "field"
- | "foreignkey"
- | "group"
- | "index"
- | "key1"
- | "key2"
- | "name"
- | "primarykey"
- | "procedure"
- | "record"
- | "rule"
- | "secondarykey"
- | "table"
- | "user"
- | "view"
- }?
-db.database = element database { docbook.text }
+ db.variablelist =
+ element variablelist {
+ variablelist.attr,
+ variablelist.info,
+ blocks*,
+ db.varlistentry+
+ }
+}
-db.email = element email { docbook.text }
+# ======================================================================
-db.envar = element envar { docbook.text }
+[
+ db:refname [ "varlistentry" ]
+ db:refpurpose [ "" ]
+]
+div {
-db.errorcode = element errorcode { docbook.text }
+ varlistentry.role.attribute = attribute role { text }
-db.errorname = element errorname { docbook.text }
+ varlistentry.attr =
+ varlistentry.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-db.errortext = element errortext { docbook.text }
+ db.varlistentry =
+ element varlistentry {
+ varlistentry.attr,
+ db.term+,
+ db.listitem
+ }
+}
-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:refname [ "term" ]
+ db:refpurpose [ "" ]
+]
+div {
-db.function = element function { docbook.text }
+ term.role.attribute = attribute role { text }
-db.guibutton = element guibutton { (docbook.text | db.accel)* }
+ term.attr =
+ term.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-db.guiicon = element guiicon { (docbook.text | db.accel)* }
+ db.term =
+ element term {
+ term.attr,
+ inlines*
+ }
+}
-db.guilabel = element guilabel { (docbook.text | db.accel)* }
+# ======================================================================
+
+floatstyle.attribute = attribute floatstyle { text }
+
+# ======================================================================
+
+[
+ db:refname [ "example" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ example.role.attribute = attribute role { text }
+
+ example.attr =
+ example.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & attribute label { text }?
+ & floatstyle.attribute?
+ & attribute width { text }?
+
+ example.info = docbook.info.titleonlyreq
+
+ db.example =
+ element example {
+ example.attr,
+ example.info,
+ blocks+
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "informalexample" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ informalexample.role.attribute = attribute role { text }
+
+ informalexample.attr =
+ informalexample.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & floatstyle.attribute?
+ & attribute width { text }?
+
+ informalexample.info = docbook.info.titleforbidden
+
+ db.informalexample =
+ element informalexample {
+ informalexample.attr,
+ informalexample.info,
+ blocks+
+ }
+}
+
+# ======================================================================
+
+verbatim.inlines = inlines | db.lineannotation
+
+verbatim.contentmodel = docbook.info.titleforbidden, (db.textobject|verbatim.inlines*)
+
+# ======================================================================
+
+[
+ db:refname [ "programlisting" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ programlisting.role.attribute = attribute role { text }
+
+ programlisting.attr =
+ programlisting.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & verbatim.attributes
+ & attribute width { text }?
+
+ db.programlisting =
+ element programlisting {
+ programlisting.attr,
+ verbatim.contentmodel
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "literallayout" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ literallayout.role.attribute = attribute role { text }
+
+ literallayout.attr =
+ literallayout.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & verbatim.attributes
+ & attribute class { "monospaced" | "normal" }?
+
+ db.literallayout =
+ element literallayout {
+ literallayout.attr,
+ verbatim.contentmodel
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "screen" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ screen.role.attribute = attribute role { text }
+
+ screen.attr =
+ screen.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & verbatim.attributes
+ & attribute width { text }?
+
+ db.screen =
+ element screen {
+ screen.attr,
+ verbatim.contentmodel
+ }
+}
+
+# ======================================================================
+
+screenshot.block = db.mediaobject
+
+# ======================================================================
+
+[
+ db:refname [ "screenshot" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ screenshot.role.attribute = attribute role { text }
+
+ screenshot.attr =
+ screenshot.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ screenshot.info = docbook.info
+
+ db.screenshot =
+ element screenshot {
+ screenshot.attr,
+ screenshot.info,
+ screenshot.block
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "figure" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ figure.role.attribute = attribute role { text }
+
+ figure.attr =
+ figure.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & attribute label { text }?
+ & pgwide.attribute?
+ & floatstyle.attribute?
+ & float.attribute?
+
+ figure.info = docbook.info.titleonlyreq
+
+ db.figure =
+ element figure {
+ figure.attr,
+ figure.info,
+ blocks+
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "informalfigure" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ informalfigure.role.attribute = attribute role { text }
+
+ informalfigure.attr =
+ informalfigure.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & attribute label { text }?
+ & pgwide.attribute?
+ & floatstyle.attribute?
+ & float.attribute?
+
+ informalfigure.info = docbook.info.titleforbidden
+
+ db.informalfigure =
+ element informalfigure {
+ informalfigure.attr,
+ informalfigure.info,
+ blocks+
+ }
+}
+
+# ======================================================================
+
+mediaobject.content =
+ db.videoobject | db.audioobject | db.imageobject | db.textobject
+
+# ======================================================================
+
+[
+ db:refname [ "mediaobject" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ mediaobject.role.attribute = attribute role { text }
+
+ mediaobject.attr =
+ mediaobject.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ mediaobject.info = docbook.info.titleforbidden
+
+ db.mediaobject =
+ element mediaobject {
+ mediaobject.attr,
+ mediaobject.info,
+ mediaobject.content+
+ }
+}
+
+# ======================================================================
+
+inlinemediaobject.content =
+ db.videoobject | db.audioobject | db.imageobject | db.textobject
+
+# ======================================================================
+
+[
+ db:refname [ "inlinemediaobject" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ inlinemediaobject.role.attribute = attribute role { text }
+
+ inlinemediaobject.attr =
+ inlinemediaobject.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ inlinemediaobject.info = docbook.info.titleforbidden
+
+ db.inlinemediaobject =
+ element inlinemediaobject {
+ inlinemediaobject.attr,
+ inlinemediaobject.info,
+ inlinemediaobject.content+
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "videoobject" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ videoobject.role.attribute = attribute role { text }
+
+ videoobject.attr =
+ videoobject.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ videoobject.info = docbook.info.titleforbidden
+
+ db.videoobject =
+ element videoobject {
+ videoobject.attr,
+ videoobject.info,
+ db.videodata
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "audioobject" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ audioobject.role.attribute = attribute role { text }
+
+ audioobject.attr =
+ audioobject.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ audioobject.info = docbook.info.titleforbidden
+
+ db.audioobject =
+ element audioobject {
+ audioobject.attr,
+ audioobject.info,
+ db.audiodata
+ }
+}
+
+# ======================================================================
+
+imageobject.content = db.imagedata
+
+# ======================================================================
+
+[
+ db:refname [ "imageobject" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ imageobject.role.attribute = attribute role { text }
+
+ imageobject.attr =
+ imageobject.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ imageobject.info = docbook.info.titleforbidden
+
+ db.imageobject =
+ element imageobject {
+ imageobject.attr,
+ imageobject.info,
+ imageobject.content
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "textobject" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ textobject.role.attribute = attribute role { text }
+
+ textobject.attr =
+ textobject.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ textobject.info = docbook.info.titleforbidden
+
+ db.textobject =
+ element textobject {
+ textobject.attr,
+ textobject.info,
+ (db.phrase | db.textdata | blocks+)
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "videodata" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ videodata.role.attribute = attribute role { text }
+
+ videodata.attr =
+ videodata.role.attribute?
+ & common.attributes
+ & data.common.attrib
+ & attribute align { "center" | "char" | "justify" | "left" | "right" }?
+ & attribute valign { "bottom" | "middle" | "top" }?
+ & attribute width { text }?
+ & attribute contentwidth { text }?
+ & attribute scalefit { "0" | "1" }?
+ & attribute scale { text }?
+ & attribute depth { text }?
+ & attribute contentdepth { text }?
+
+ videodata.info = docbook.info.titleforbidden
+
+ db.videodata = element videodata {
+ videodata.attr,
+ videodata.info
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "audiodata" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ audiodata.role.attribute = attribute role { text }
+
+ audiodata.attr =
+ audiodata.role.attribute?
+ & common.attributes
+ & data.common.attrib
+
+ audiodata.info = docbook.info.titleforbidden
+
+ db.audiodata =
+ element audiodata {
+ audiodata.attr,
+ audiodata.info
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "imagedata" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ imagedata.role.attribute = attribute role { text }
+
+ imagedata.attr =
+ imagedata.role.attribute?
+ & common.attributes
+ & data.common.attrib
+ & attribute align { "center" | "char" | "justify" | "left" | "right" }?
+ & attribute valign { "bottom" | "middle" | "top" }?
+ & attribute width { text }?
+ & attribute contentwidth { text }?
+ & attribute scalefit { "0" | "1" }?
+ & attribute scale { text }?
+ & attribute depth { text }?
+ & attribute contentdepth { text }?
+
+ imagedata.info = docbook.info.titleforbidden
+
+ db.imagedata =
+ element imagedata {
+ imagedata.attr,
+ imagedata.info
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "textdata" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ textdata.role.attribute = attribute role { text }
+
+ textdata.attr =
+ textdata.role.attribute?
+ & common.attributes
+ & data.common.attrib
+ & attribute encoding { text }?
+
+ textdata.info = docbook.info.titleforbidden
+
+ db.textdata =
+ element textdata {
+ textdata.attr,
+ textdata.info
+ }
+}
+
+# ======================================================================
+
+# db.caption = element caption { blocks+ }
+
+equation.content = db.mediaobject
+
+# ======================================================================
+
+[
+ db:refname [ "equation" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ equation.role.attribute = attribute role { text }
+
+ equation.attr =
+ equation.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ equation.info = docbook.info.titleonlyreq
+
+ db.equation =
+ element equation {
+ equation.attr,
+ equation.info,
+ equation.content+
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "informalequation" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ informalequation.role.attribute = attribute role { text }
+
+ informalequation.attr =
+ informalequation.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ informalequation.info = docbook.info.titleforbidden
+
+ db.informalequation =
+ element informalequation {
+ informalequation.attr,
+ informalequation.info,
+ equation.content+
+ }
+}
+
+# ======================================================================
+
+inlineequation.content = db.inlinemediaobject
+
+# ======================================================================
+
+[
+ db:refname [ "inlineequation" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ inlineequation.role.attribute = attribute role { text }
+
+ inlineequation.attr =
+ inlineequation.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.inlineequation =
+ element inlineequation {
+ inlineequation.attr,
+ inlineequation.content+
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "synopsis" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ synopsis.role.attribute = attribute role { text }
+
+ synopsis.attr =
+ synopsis.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & verbatim.attributes
+ & attribute label { text }?
+
+ db.synopsis =
+ element synopsis {
+ synopsis.attr,
+ verbatim.contentmodel
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "cmdsynopsis" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ cmdsynopsis.role.attribute = attribute role { text }
+
+ cmdsynopsis.attr =
+ cmdsynopsis.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & attribute sepchar { text }?
+ & attribute cmdlength { text }?
+ & attribute label { text }?
+
+ cmdsynopsis.info = docbook.info.titleforbidden
+
+ db.cmdsynopsis =
+ element cmdsynopsis {
+ cmdsynopsis.attr,
+ 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" }
+
+# ======================================================================
+
+[
+ db:refname [ "arg" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ arg.role.attribute = attribute role { text }
+
+ arg.attr =
+ arg.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & rep.attribute?
+ & choice.attribute?
+
+ db.arg =
+ element arg {
+ arg.attr,
+ (docbook.text
+ | db.arg
+ | db.group
+ | db.option
+ | db.synopfragmentref
+ | db.sbr)*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "group" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ group.role.attribute = attribute role { text }
+
+ group.attr =
+ group.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & rep.attribute?
+ & choice.attribute?
+
+ db.group =
+ element group {
+ group.attr,
+ (db.arg
+ | db.group
+ | db.option
+ | db.synopfragmentref
+ | db.replaceable
+ | db.sbr)+
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "sbr" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ sbr.role.attribute = attribute role { text }
+
+ sbr.attr =
+ sbr.role.attribute?
+ & common.attributes
+
+ db.sbr =
+ element sbr {
+ sbr.attr,
+ empty
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "synopfragment" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ synopfragment.role.attribute = attribute role { text }
+
+ synopfragment.attr =
+ synopfragment.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.synopfragment =
+ element synopfragment {
+ synopfragment.attr,
+ (db.arg | db.group)+
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "synopfragmentref" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ synopfragmentref.role.attribute = attribute role { text }
+
+ synopfragmentref.attr =
+ synopfragmentref.role.attribute?
+ & common.attributes
+ & linkend.attribute
+
+ db.synopfragmentref =
+ [
+ s:rule [
+ context = "db:synopfragmentref"
+ s:assert [
+ test = "local-name(//*[@id=current()/@linkend]) = 'synopfragment' and namespace-uri(//*[@id=current()/@linkend]) = 'http://docbook.org/docbook-ng/absinthe'"
+ "@linkend on synopfragmentref must point to a synopfragment."
+ ]
+ ]
+ ]
+ element synopfragmentref {
+ synopfragmentref.attr,
+ text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "funcsynopsis" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ funcsynopsis.role.attribute = attribute role { text }
+
+ funcsynopsis.attr =
+ funcsynopsis.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ funcsynopsis.info = docbook.info.titleforbidden
+
+ db.funcsynopsis =
+ element funcsynopsis {
+ funcsynopsis.attr,
+ funcsynopsis.info?,
+ (db.funcsynopsisinfo | db.funcprototype)+
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "funcsynopsisinfo" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ funcsynopsisinfo.role.attribute = attribute role { text }
+
+ funcsynopsisinfo.attr =
+ funcsynopsisinfo.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & verbatim.attributes
+
+ db.funcsynopsisinfo =
+ element funcsynopsisinfo {
+ funcsynopsisinfo.attr,
+ verbatim.contentmodel
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "funcprototype" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ funcprototype.role.attribute = attribute role { text }
+
+ funcprototype.attr =
+ funcprototype.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.funcprototype =
+ element funcprototype {
+ funcprototype.attr,
+ db.modifier*,
+ db.funcdef,
+ (db.void | db.varargs | (db.paramdef+, db.varargs?)),
+ db.modifier*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "funcdef" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ funcdef.role.attribute = attribute role { text }
+
+ funcdef.attr =
+ funcdef.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.funcdef =
+ element funcdef {
+ funcdef.attr,
+ (docbook.text | db.type | db.function)*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "void" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ void.role.attribute = attribute role { text }
+
+ void.attr =
+ void.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.void =
+ element void {
+ void.attr,
+ empty
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "varargs" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ varargs.role.attribute = attribute role { text }
+
+ varargs.attr =
+ varargs.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.varargs =
+ element varargs {
+ varargs.attr,
+ empty
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "paramdef" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ paramdef.role.attribute = attribute role { text }
+
+ paramdef.attr =
+ paramdef.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & attribute choice { "opt" | "req" }?
+
+ db.paramdef =
+ element paramdef {
+ paramdef.attr,
+ (docbook.text | db.type | db.parameter | db.funcparams)*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "funcparams" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ funcparams.role.attribute = attribute role { text }
+
+ funcparams.attr =
+ funcparams.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.funcparams =
+ element funcparams {
+ funcparams.attr,
+ inlines*
+ }
+}
+
+# ======================================================================
+
+oo-method.synopsis.blocks =
+ db.methodsynopsis | db.constructorsynopsis | db.destructorsynopsis
+
+oo-field.synopsis.blocks = db.fieldsynopsis
+
+# ======================================================================
+
+[
+ db:refname [ "classsynopsis" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ classsynopsis.role.attribute = attribute role { text }
+
+ classsynopsis.attr =
+ classsynopsis.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & oo-language.attribute
+ & attribute class { "class" | "interface" }?
+
+ db.classsynopsis =
+ element classsynopsis {
+ classsynopsis.attr,
+ oo.inlines+,
+ (db.classsynopsisinfo
+ | oo-method.synopsis.blocks
+ | oo-field.synopsis.blocks)*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "classsynopsisinfo" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ classsynopsisinfo.role.attribute = attribute role { text }
+
+ classsynopsisinfo.attr =
+ classsynopsisinfo.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & verbatim.attributes
+
+ db.classsynopsisinfo =
+ element classsynopsisinfo {
+ classsynopsisinfo.attr,
+ verbatim.contentmodel
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "ooclass" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ ooclass.role.attribute = attribute role { text }
+
+ ooclass.attr =
+ ooclass.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.ooclass =
+ element ooclass {
+ ooclass.attr,
+ db.modifier*,
+ db.classname
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "oointerface" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ oointerface.role.attribute = attribute role { text }
+
+ oointerface.attr =
+ oointerface.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.oointerface =
+ element oointerface {
+ oointerface.attr,
+ db.modifier*,
+ db.interfacename
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "ooexception" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ ooexception.role.attribute = attribute role { text }
+
+ ooexception.attr =
+ ooexception.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.ooexception =
+ element ooexception {
+ ooexception.attr,
+ db.modifier*,
+ db.exceptionname
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "modifier" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ modifier.role.attribute = attribute role { text }
+
+ modifier.attr =
+ modifier.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.modifier =
+ element modifier {
+ modifier.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "interfacename" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ interfacename.role.attribute = attribute role { text }
+
+ interfacename.attr =
+ interfacename.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.interfacename =
+ element interfacename {
+ interfacename.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "exceptionname" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ exceptionname.role.attribute = attribute role { text }
+
+ exceptionname.attr =
+ exceptionname.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.exceptionname =
+ element exceptionname {
+ exceptionname.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "fieldsynopsis" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ fieldsynopsis.role.attribute = attribute role { text }
+
+ fieldsynopsis.attr =
+ fieldsynopsis.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & oo-language.attribute
+
+ db.fieldsynopsis =
+ element fieldsynopsis {
+ fieldsynopsis.attr,
+ db.modifier*,
+ db.type?,
+ db.varname,
+ db.initializer?
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "initializer" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ initializer.role.attribute = attribute role { text }
+
+ initializer.attr =
+ initializer.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.initializer =
+ element initializer {
+ initializer.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "constructorsynopsis" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ constructorsynopsis.role.attribute = attribute role { text }
+
+ constructorsynopsis.attr =
+ constructorsynopsis.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & oo-language.attribute
+
+ db.constructorsynopsis =
+ element constructorsynopsis {
+ constructorsynopsis.attr,
+ db.modifier*,
+ db.methodname?,
+ (db.methodparam+ | db.void?),
+ db.exceptionname*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "destructorsynopsis" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ destructorsynopsis.role.attribute = attribute role { text }
+
+ destructorsynopsis.attr =
+ destructorsynopsis.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & oo-language.attribute
+
+ db.destructorsynopsis =
+ element destructorsynopsis {
+ destructorsynopsis.attr,
+ db.modifier*,
+ db.methodname?,
+ (db.methodparam+ | db.void?),
+ db.exceptionname*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "methodsynopsis" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ methodsynopsis.role.attribute = attribute role { text }
+
+ methodsynopsis.attr =
+ methodsynopsis.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & oo-language.attribute
+
+ db.methodsynopsis =
+ element methodsynopsis {
+ methodsynopsis.attr,
+ db.modifier*,
+ (db.type | db.void)?,
+ db.methodname,
+ (db.methodparam+ | db.void),
+ db.exceptionname*,
+ db.modifier*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "methodname" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ methodname.role.attribute = attribute role { text }
+
+ methodname.attr =
+ methodname.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.methodname =
+ element methodname {
+ methodname.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "methodparam" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ methodparam.role.attribute = attribute role { text }
+
+ methodparam.attr =
+ methodparam.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & rep.attribute?
+ & choice.attribute?
+
+ db.methodparam =
+ element methodparam {
+ methodparam.attr,
+ db.modifier*,
+ db.type?,
+ ((db.parameter, db.initializer?) | db.funcparams),
+ db.modifier*
+ }
+}
+
+# ======================================================================
+# TEI: addrPart
+
+[
+ db:refname [ "address" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ address.role.attribute = attribute role { text }
+
+ address.attr =
+ address.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & verbatim.attributes
+
+ db.address =
+ element address {
+ address.attr,
+ (docbook.text
+ | db.personname
+ | db.pob
+ | db.street
+ | db.city
+ | db.state
+ | db.postcode
+ | db.country
+ | db.phone
+ | db.fax
+ | db.email
+ | db.otheraddr)*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "street" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ street.role.attribute = attribute role { text }
+
+ street.attr =
+ street.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.street =
+ element street {
+ street.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "pob" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ pob.role.attribute = attribute role { text }
+
+ pob.attr =
+ pob.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.pob =
+ element pob {
+ pob.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "postcode" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ postcode.role.attribute = attribute role { text }
+
+ postcode.attr =
+ postcode.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.postcode =
+ element postcode {
+ postcode.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "city" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ city.role.attribute = attribute role { text }
+
+ city.attr =
+ city.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.city =
+ element city {
+ city.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "state" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ state.role.attribute = attribute role { text }
+
+ state.attr =
+ state.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.state =
+ element state {
+ state.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "country" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ country.role.attribute = attribute role { text }
+
+ country.attr =
+ country.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.country =
+ element country {
+ country.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "phone" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ phone.role.attribute = attribute role { text }
+
+ phone.attr =
+ phone.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.phone =
+ element phone {
+ phone.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "fax" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ fax.role.attribute = attribute role { text }
+
+ fax.attr =
+ fax.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.fax =
+ element fax {
+ fax.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "otheraddr" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ otheraddr.role.attribute = attribute role { text }
+
+ otheraddr.attr =
+ otheraddr.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.otheraddr =
+ element otheraddr {
+ otheraddr.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "affiliation" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ affiliation.role.attribute = attribute role { text }
+
+ affiliation.attr =
+ affiliation.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.affiliation =
+ element affiliation {
+ affiliation.attr,
+ db.shortaffil?,
+ db.jobtitle*,
+ db.orgname?,
+ db.orgdiv*,
+ db.address*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "shortaffil" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ shortaffil.role.attribute = attribute role { text }
+
+ shortaffil.attr =
+ shortaffil.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.shortaffil =
+ element shortaffil {
+ shortaffil.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "jobtitle" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ jobtitle.role.attribute = attribute role { text }
+
+ jobtitle.attr =
+ jobtitle.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.jobtitle =
+ element jobtitle {
+ jobtitle.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "orgname" ]
+ db:refpurpose [ "" ]
+]
+div {
+ ctrl:other-attribute [ name="orgname.class.attrib"
+ enum-name="orgname.class-enum.attribute"
+ other-name="orgname.class-other.attributes" ]
+
+ orgname.class-enum.attribute =
+ attribute class {
+ "consortium"
+ | "corporation"
+ | "informal"
+ | "nonprofit" }?
+
+ orgname.class-other.attributes =
+ attribute class { "other" },
+ attribute otherclass { text }
+
+ orgname.class.attrib = (orgname.class-enum.attribute | orgname.class-other.attributes)
+
+ orgname.role.attribute = attribute role { text }
+
+ orgname.attr =
+ orgname.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & orgname.class.attrib
+
+ db.orgname =
+ element orgname {
+ orgname.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "orgdiv" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ orgdiv.role.attribute = attribute role { text }
+
+ orgdiv.attr =
+ orgdiv.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.orgdiv =
+ element orgdiv {
+ orgdiv.attr,
+ inlines*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "artpagenums" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ artpagenums.role.attribute = attribute role { text }
+
+ artpagenums.attr =
+ artpagenums.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.artpagenums =
+ element artpagenums {
+ artpagenums.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "personname" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ personname.role.attribute = attribute role { text }
+
+ personname.attr =
+ personname.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.personname =
+ element personname {
+ personname.attr,
+ (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:refname [ "author" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ author.role.attribute = attribute role { text }
+
+ author.attr =
+ author.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.author =
+ element author {
+ author.attr,
+ credit.contentmodel
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "authorgroup" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ authorgroup.role.attribute = attribute role { text }
+
+ authorgroup.attr =
+ authorgroup.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.authorgroup =
+ element authorgroup {
+ authorgroup.attr,
+ (db.author | db.editor | db.othercredit)+
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "collab" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ collab.role.attribute = attribute role { text }
+
+ collab.attr =
+ collab.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.collab =
+ element collab {
+ collab.attr,
+ (db.personname | db.orgname)+,
+ db.affiliation*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "authorinitials" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ authorinitials.role.attribute = attribute role { text }
+
+ authorinitials.attr =
+ authorinitials.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.authorinitials =
+ element authorinitials {
+ authorinitials.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "confgroup" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ confgroup.role.attribute = attribute role { text }
+
+ confgroup.attr =
+ confgroup.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.confgroup =
+ element confgroup {
+ confgroup.attr,
+ (db.confdates
+ | db.conftitle
+ | db.confnum
+ | db.confsponsor
+ | db.address)*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "confdates" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ confdates.role.attribute = attribute role { text }
+
+ confdates.attr =
+ confdates.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.confdates =
+ element confdates {
+ confdates.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "conftitle" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ conftitle.role.attribute = attribute role { text }
+
+ conftitle.attr =
+ conftitle.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.conftitle =
+ element conftitle {
+ conftitle.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "confnum" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ confnum.role.attribute = attribute role { text }
+
+ confnum.attr =
+ confnum.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.confnum =
+ element confnum {
+ confnum.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "confsponsor" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ confsponsor.role.attribute = attribute role { text }
+
+ confsponsor.attr =
+ confsponsor.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.confsponsor =
+ element confsponsor {
+ confsponsor.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "contractnum" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ contractnum.role.attribute = attribute role { text }
+
+ contractnum.attr =
+ contractnum.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.contractnum =
+ element contractnum {
+ contractnum.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "contractsponsor" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ contractsponsor.role.attribute = attribute role { text }
+
+ contractsponsor.attr =
+ contractsponsor.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.contractsponsor =
+ element contractsponsor {
+ contractsponsor.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "copyright" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ copyright.role.attribute = attribute role { text }
+
+ copyright.attr =
+ copyright.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.copyright =
+ element copyright {
+ copyright.attr,
+ db.year+,
+ db.holder*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "year" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ year.role.attribute = attribute role { text }
+
+ year.attr =
+ year.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.year =
+ element year {
+ year.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "holder" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ holder.role.attribute = attribute role { text }
+
+ holder.attr =
+ holder.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.holder =
+ element holder {
+ holder.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "date" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ date.role.attribute = attribute role { text }
+
+ date.attr =
+ date.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.date =
+ element date {
+ date.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "edition" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ edition.role.attribute = attribute role { text }
+
+ edition.attr =
+ edition.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.edition =
+ element edition {
+ edition.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "editor" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ editor.role.attribute = attribute role { text }
+
+ editor.attr =
+ editor.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.editor =
+ element editor {
+ editor.attr,
+ credit.contentmodel
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "biblioid" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ biblioid.role.attribute = attribute role { text }
+
+ biblioid.attr =
+ biblioid.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & biblio.class.attrib
+
+ db.biblioid =
+ element biblioid {
+ biblioid.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "citebiblioid" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ citebiblioid.role.attribute = attribute role { text }
+
+ citebiblioid.attr =
+ citebiblioid.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & biblio.class.attrib
+
+ db.citebiblioid =
+ element citebiblioid {
+ citebiblioid.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "bibliosource" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ bibliosource.role.attribute = attribute role { text }
+
+ bibliosource.attr =
+ bibliosource.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & biblio.class.attrib
+
+ db.bibliosource =
+ element bibliosource {
+ bibliosource.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "bibliorelation" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ 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)
+
+ bibliorelation.role.attribute = attribute role { text }
+
+ bibliorelation.attr =
+ bibliorelation.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & biblio.class.attrib
+ & bibliorelation.type.attrib
+
+ db.bibliorelation =
+ element bibliorelation {
+ bibliorelation.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "bibliocoverage" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ 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 otherspatial { xsd:NMTOKEN }
+
+ bibliocoverage.spatial.attrs =
+ (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.attrs =
+ (bibliocoverage.temporal-enum.attribute | bibliocoverage.temporal-other.attributes)
+
+ bibliocoverage.coverage.attrib =
+ (bibliocoverage.spatial.attrs | bibliocoverage.temporal.attrs)
+ | (bibliocoverage.spatial.attrs & bibliocoverage.temporal.attrs)
+
+ bibliocoverage.role.attribute = attribute role { text }
+
+ bibliocoverage.attr =
+ bibliocoverage.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & bibliocoverage.coverage.attrib
+
+ db.bibliocoverage =
+ element bibliocoverage {
+ bibliocoverage.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "legalnotice" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ legalnotice.role.attribute = attribute role { text }
+
+ legalnotice.attr =
+ legalnotice.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ legalnotice.info = docbook.info.titleonly
+
+ db.legalnotice =
+ element legalnotice {
+ legalnotice.attr,
+ legalnotice.info,
+ blocks+
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "othercredit" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ othercredit.class.attrib = attribute class {
+ "copyeditor"
+ | "graphicdesigner"
+ | "other"
+ | "productioneditor"
+ | "technicaleditor"
+ | "translator"
+ }?
+
+ othercredit.role.attribute = attribute role { text }
+
+ othercredit.attr =
+ othercredit.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & othercredit.class.attrib
+
+ db.othercredit =
+ element othercredit {
+ othercredit.attr,
+ credit.contentmodel
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "pagenums" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ pagenums.role.attribute = attribute role { text }
+
+ pagenums.attr =
+ pagenums.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.pagenums =
+ element pagenums {
+ pagenums.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "contrib" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ contrib.role.attribute = attribute role { text }
+
+ contrib.attr =
+ contrib.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.contrib =
+ element contrib {
+ contrib.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "honorific" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ honorific.role.attribute = attribute role { text }
+
+ honorific.attr =
+ honorific.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.honorific =
+ element honorific {
+ honorific.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "firstname" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ firstname.role.attribute = attribute role { text }
+
+ firstname.attr =
+ firstname.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.firstname =
+ element firstname {
+ firstname.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "surname" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ surname.role.attribute = attribute role { text }
+
+ surname.attr =
+ surname.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.surname =
+ element surname {
+ surname.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "lineage" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ lineage.role.attribute = attribute role { text }
+
+ lineage.attr =
+ lineage.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.lineage =
+ element lineage {
+ lineage.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "othername" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ othername.role.attribute = attribute role { text }
+
+ othername.attr =
+ othername.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.othername =
+ element othername {
+ othername.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "printhistory" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ printhistory.role.attribute = attribute role { text }
+
+ printhistory.attr =
+ printhistory.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.printhistory =
+ element printhistory {
+ printhistory.attr,
+ para.blocks+
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "productname" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ productname.class.attrib = attribute class {
+ "copyright" | "registered" | "service" | "trade"
+ }?
+
+ productname.role.attribute = attribute role { text }
+
+ productname.attr =
+ productname.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & productname.class.attrib
+
+ db.productname =
+ element productname {
+ productname.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "productnumber" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ productnumber.role.attribute = attribute role { text }
+
+ productnumber.attr =
+ productnumber.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.productnumber =
+ element productnumber {
+ productnumber.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "pubdate" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ pubdate.role.attribute = attribute role { text }
+
+ pubdate.attr =
+ pubdate.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.pubdate =
+ element pubdate {
+ pubdate.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "publisher" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ publisher.role.attribute = attribute role { text }
+
+ publisher.attr =
+ publisher.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.publisher =
+ element publisher {
+ publisher.attr,
+ db.publishername,
+ db.address*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "publishername" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ publishername.role.attribute = attribute role { text }
+
+ publishername.attr =
+ publishername.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.publishername =
+ element publishername {
+ publishername.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "releaseinfo" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ releaseinfo.role.attribute = attribute role { text }
+
+ releaseinfo.attr =
+ releaseinfo.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.releaseinfo =
+ element releaseinfo {
+ releaseinfo.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "revhistory" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ revhistory.role.attribute = attribute role { text }
+
+ revhistory.attr =
+ revhistory.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ revhistory.info = docbook.info.titleonly
+
+ db.revhistory =
+ element revhistory {
+ revhistory.attr,
+ revhistory.info,
+ db.revision+
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "revision" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ revision.role.attribute = attribute role { text }
+
+ revision.attr =
+ revision.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.revision =
+ element revision {
+ revision.attr,
+ db.revnumber,
+ db.date,
+ (db.authorinitials | db.author)*,
+ (db.revremark | db.revdescription)?
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "revnumber" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ revnumber.role.attribute = attribute role { text }
+
+ revnumber.attr =
+ revnumber.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.revnumber =
+ element revnumber {
+ revnumber.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "revremark" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ revremark.role.attribute = attribute role { text }
+
+ revremark.attr =
+ revremark.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.revremark =
+ element revremark {
+ revremark.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "revdescription" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ revdescription.role.attribute = attribute role { text }
+
+ revdescription.attr =
+ revdescription.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.revdescription =
+ element revdescription {
+ revdescription.attr,
+ blocks*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "seriesvolnums" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ seriesvolnums.role.attribute = attribute role { text }
+
+ seriesvolnums.attr =
+ seriesvolnums.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.seriesvolnums =
+ element seriesvolnums {
+ seriesvolnums.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "volumenum" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ volumenum.role.attribute = attribute role { text }
+
+ volumenum.attr =
+ volumenum.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.volumenum =
+ element volumenum {
+ volumenum.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "issuenum" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ issuenum.role.attribute = attribute role { text }
+
+ issuenum.attr =
+ issuenum.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.issuenum =
+ element issuenum {
+ issuenum.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ accel.role.attribute = attribute role { text }
+
+ accel.attr =
+ accel.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.accel =
+ element accel {
+ accel.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "application" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ application.class.attrib = attribute class { "hardware" | "software" }
+
+ application.role.attribute = attribute role { text }
+
+ application.attr =
+ application.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & application.class.attrib
+
+ db.application =
+ element application {
+ application.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "classname" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ classname.role.attribute = attribute role { text }
+
+ classname.attr =
+ classname.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.classname =
+ element classname {
+ classname.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "command" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ command.role.attribute = attribute role { text }
+
+ command.attr =
+ command.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.command =
+ element command {
+ command.attr,
+ inlines*
+ }
+}
+
+# ======================================================================
+
+computeroutput.inlines = (inlines)
+
+# ======================================================================
+
+[
+ db:refname [ "computeroutput" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ computeroutput.role.attribute = attribute role { text }
+
+ computeroutput.attr =
+ computeroutput.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.computeroutput =
+ element computeroutput {
+ computeroutput.attr,
+ computeroutput.inlines*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "database" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ database.class.attrib =
+ attribute class {
+ "altkey"
+ | "constraint"
+ | "datatype"
+ | "field"
+ | "foreignkey"
+ | "group"
+ | "index"
+ | "key1"
+ | "key2"
+ | "name"
+ | "primarykey"
+ | "procedure"
+ | "record"
+ | "rule"
+ | "secondarykey"
+ | "table"
+ | "user"
+ | "view"
+ }
+
+ database.role.attribute = attribute role { text }
+
+ database.attr =
+ database.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & database.class.attrib?
+
+ db.database =
+ element database {
+ database.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "email" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ email.role.attribute = attribute role { text }
+
+ email.attr =
+ email.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.email =
+ element email {
+ email.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "envar" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ envar.role.attribute = attribute role { text }
+
+ envar.attr =
+ envar.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.envar =
+ element envar {
+ envar.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "errorcode" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ errorcode.role.attribute = attribute role { text }
+
+ errorcode.attr =
+ errorcode.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.errorcode =
+ element errorcode {
+ errorcode.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "errorname" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ errorname.role.attribute = attribute role { text }
+
+ errorname.attr =
+ errorname.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.errorname =
+ element errorname {
+ errorname.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "errortext" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ errortext.role.attribute = attribute role { text }
+
+ errortext.attr =
+ errortext.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.errortext =
+ element errortext {
+ errortext.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "errortype" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ errortype.role.attribute = attribute role { text }
+
+ errortype.attr =
+ errortype.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.errortype =
+ element errortype {
+ errortype.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "filename" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ filename.path.attrib = attribute path { text }
+ filename.class.attrib =
+ attribute class {
+ "devicefile"
+ | "directory"
+ | "extension"
+ | "headerfile"
+ | "libraryfile"
+ | "partition"
+ | "symlink"
+ }
+
+ filename.role.attribute = attribute role { text }
+
+ filename.attr =
+ filename.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & filename.path.attrib?
+ & filename.class.attrib?
+
+ db.filename =
+ element filename {
+ filename.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "function" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ function.role.attribute = attribute role { text }
+
+ function.attr =
+ function.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.function =
+ element function {
+ function.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "guibutton" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ guibutton.role.attribute = attribute role { text }
+
+ guibutton.attr =
+ guibutton.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.guibutton =
+ element guibutton {
+ guibutton.attr,
+ (docbook.text | db.accel)*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "guiicon" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ guiicon.role.attribute = attribute role { text }
+
+ guiicon.attr =
+ guiicon.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.guiicon =
+ element guiicon {
+ guiicon.attr,
+ (docbook.text | db.accel)*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "guilabel" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ guilabel.role.attribute = attribute role { text }
+
+ guilabel.attr =
+ guilabel.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.guilabel =
+ element guilabel {
+ guilabel.attr,
+ (docbook.text | db.accel)*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "guimenu" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ guimenu.role.attribute = attribute role { text }
+
+ guimenu.attr =
+ guimenu.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.guimenu =
+ element guimenu {
+ guimenu.attr,
+ (docbook.text | db.accel)*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "guimenuitem" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ guimenuitem.role.attribute = attribute role { text }
+
+ guimenuitem.attr =
+ guimenuitem.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.guimenuitem =
+ element guimenuitem {
+ guimenuitem.attr,
+ (docbook.text | db.accel)*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "guisubmenu" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ guisubmenu.role.attribute = attribute role { text }
+
+ guisubmenu.attr =
+ guisubmenu.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.guisubmenu =
+ element guisubmenu {
+ guisubmenu.attr,
+ (docbook.text | db.accel)*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "hardware" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ hardware.role.attribute = attribute role { text }
+
+ hardware.attr =
+ hardware.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.hardware =
+ element hardware {
+ hardware.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "keycap" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ ctrl:other-attribute [ name="keycap.function.attrib"
+ enum-name="keycap.function-enum.attribute"
+ other-name="keycap.function-other.attributes" ]
+
+ keycap.function-enum.attribute =
+ attribute function {
+ "alt"
+ | "backspace"
+ | "command"
+ | "control"
+ | "delete"
+ | "down"
+ | "end"
+ | "enter"
+ | "escape"
+ | "home"
+ | "insert"
+ | "left"
+ | "meta"
+ | "option"
+ | "pagedown"
+ | "pageup"
+ | "right"
+ | "shift"
+ | "space"
+ | "tab"
+ | "up"
+ }?
+
+ keycap.function-other.attributes =
+ attribute function { "other" },
+ attribute otherfunction { text }
+
+ keycap.function.attrib =
+ (keycap.function-enum.attribute | keycap.function-other.attributes)
+
+ keycap.role.attribute = attribute role { text }
+
+ keycap.attr =
+ keycap.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & keycap.function.attrib
+
+ db.keycap =
+ element keycap {
+ keycap.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "keycode" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ keycode.role.attribute = attribute role { text }
+
+ keycode.attr =
+ keycode.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.keycode =
+ element keycode {
+ keycode.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "keycombo" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ 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 { text }
+
+ keycombo.action.attrib =
+ (keycombo.action-enum.attribute | keycombo.action-other.attributes)
+
+ keycombo.role.attribute = attribute role { text }
+
+ keycombo.attr =
+ keycombo.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & keycombo.action.attrib
+
+ db.keycombo =
+ element keycombo {
+ keycombo.attr,
+ (db.keycap|db.keycombo|db.keysym|db.mousebutton)+
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "keysym" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ keysym.role.attribute = attribute role { text }
+
+ keysym.attr =
+ keysym.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.keysym =
+ element keysym {
+ keysym.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "lineannotation" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ lineannotation.role.attribute = attribute role { text }
+
+ lineannotation.attr =
+ lineannotation.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.lineannotation =
+ element lineannotation {
+ lineannotation.attr,
+ inlines*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "literal" ]
+ db:refpurpose [ "" ]
+]
+div {
-db.guimenu = element guimenu { (docbook.text | db.accel)* }
+ literal.role.attribute = attribute role { text }
-db.guimenuitem = element guimenuitem { (docbook.text | db.accel)* }
+ literal.attr =
+ literal.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-db.guisubmenu = element guisubmenu { (docbook.text | db.accel)* }
+ db.literal =
+ element literal {
+ literal.attr,
+ inlines*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "code" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ code.language.attrib = attribute language { text }
+
+ code.role.attribute = attribute role { text }
+
+ code.attr =
+ code.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & code.language.attrib?
+
+ db.code =
+ element code {
+ code.attr,
+ inlines*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "constant" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ constant.class.attrib = attribute class { "limit" }
+
+ constant.role.attribute = attribute role { text }
+
+ constant.attr =
+ constant.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & constant.class.attrib?
+
+ db.constant =
+ element constant {
+ constant.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "varname" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ varname.role.attribute = attribute role { text }
+
+ varname.attr =
+ varname.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.varname =
+ element varname {
+ varname.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "markup" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ markup.role.attribute = attribute role { text }
-db.hardware = element hardware { docbook.text }
+ markup.attr =
+ markup.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-ctrl:other-attribute [ name="keycap.function.attrib"
- enum-name="keycap.function-enum.attribute"
- other-name="keycap.function-other.attributes" ]
+ db.markup =
+ element markup {
+ markup.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "menuchoice" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ menuchoice.role.attribute = attribute role { text }
+
+ menuchoice.attr =
+ menuchoice.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.menuchoice =
+ element menuchoice {
+ menuchoice.attr,
+ db.shortcut?,
+ (db.guibutton|db.guiicon|db.guilabel|db.guimenu|db.guimenuitem|db.guisubmenu)+
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "shortcut" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ shortcut.action.attrib = keycombo.action.attrib
-keycap.function-enum.attribute =
- attribute function {
- "alt"
- | "backspace"
- | "command"
- | "control"
- | "delete"
- | "down"
- | "end"
- | "enter"
- | "escape"
- | "home"
- | "insert"
- | "left"
- | "meta"
- | "option"
- | "pagedown"
- | "pageup"
- | "right"
- | "shift"
- | "space"
- | "tab"
- | "up" }?
+ shortcut.role.attribute = attribute role { text }
-keycap.function-other.attributes =
- attribute function { "other" },
- attribute otherfunction { text }
+ shortcut.attr =
+ shortcut.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & shortcut.action.attrib
+
+ db.shortcut =
+ element shortcut {
+ shortcut.attr,
+ (db.keycap|db.keycombo|db.keysym|db.mousebutton)+
+ }
+}
-keycap.function.attrib =
- (keycap.function-enum.attribute | keycap.function-other.attributes)
+# ======================================================================
-db.keycap = element keycap { docbook.text }
+[
+ db:refname [ "mousebutton" ]
+ db:refpurpose [ "" ]
+]
+div {
-db.keycode = element keycode { docbook.text }
+ mousebutton.role.attribute = attribute role { text }
-ctrl:other-attribute [ name="keycombo.action.attrib"
- enum-name="keycombo.action-enum.attribute"
- other-name="keycombo.action-other.attributes" ]
+ mousebutton.attr =
+ mousebutton.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-keycombo.action-enum.attribute =
- attribute action {
- "click" | "double-click" | "press" | "seq" | "simul"
- }?
+ db.mousebutton =
+ element mousebutton {
+ mousebutton.attr,
+ docbook.text
+ }
+}
-keycombo.action-other.attributes =
- attribute action { "other" },
- attribute otheraction { text }
+# ======================================================================
-keycombo.action.attrib =
- (keycombo.action-enum.attribute | keycombo.action-other.attributes)
+[
+ db:refname [ "option" ]
+ db:refpurpose [ "" ]
+]
+div {
-db.keycombo = element keycombo { (db.keycap|db.keycombo|db.keysym|db.mousebutton)+ }
+ option.role.attribute = attribute role { text }
-db.keysym = element keysym { docbook.text }
+ option.attr =
+ option.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-db.lineannotation = element lineannotation { inlines* }
+ db.option =
+ element option {
+ option.attr,
+ docbook.text
+ }
+}
-db.literal = element literal { inlines* }
+# ======================================================================
-code.language.attrib = attribute language { text }?
-db.code = element code { inlines* }
+[
+ db:refname [ "optional" ]
+ db:refpurpose [ "" ]
+]
+div {
-constant.class.attrib = attribute class { "limit" }?
-db.constant = element constant { docbook.text }
+ optional.role.attribute = attribute role { text }
-db.varname = element varname { docbook.text }
+ optional.attr =
+ optional.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-db.markup = element markup { docbook.text }
+ db.optional =
+ element optional {
+ optional.attr,
+ inlines*
+ }
+}
-db.menuchoice = element menuchoice {
- db.shortcut?,
- (db.guibutton|db.guiicon|db.guilabel|db.guimenu|db.guimenuitem|db.guisubmenu)+ }
+# ======================================================================
-shortcut.action.attrib = keycombo.action.attrib
+[
+ db:refname [ "parameter" ]
+ db:refpurpose [ "" ]
+]
+div {
-db.shortcut = element shortcut { (db.keycap|db.keycombo|db.keysym|db.mousebutton)+ }
+ parameter.class.attrib = attribute class { "command" | "function" | "option" }
-db.mousebutton = element mousebutton { docbook.text }
+ parameter.role.attribute = attribute role { text }
-db.option = element option { docbook.text }
+ parameter.attr =
+ parameter.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & parameter.class.attrib?
-db.optional = element optional { inlines* }
+ db.parameter =
+ element parameter {
+ parameter.attr,
+ docbook.text
+ }
+}
-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:refname [ "prompt" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+
+ prompt.role.attribute = attribute role { text }
+
+ prompt.attr =
+ prompt.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.prompt =
+ element prompt {
+ prompt.attr,
+ prompt.inlines*
+ }
+}
+# ======================================================================
replaceable.inlines = (docbook.text)
-replaceable.class.attrib =
- attribute class { "command" | "function" | "option" | "parameter" }?
-db.replaceable = element replaceable { replaceable.inlines* }
-
-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 }
-
-symbol.class.attrib = attribute class { "limit" }?
-db.symbol = element symbol { docbook.text }
-
-systemitem.class.attrib =
- attribute class {
- "daemon"
- | "domainname"
- | "etheraddress"
- | "event"
- | "eventhandler"
- | "filesystem"
- | "fqdomainname"
- | "groupname"
- | "ipaddress"
- | "library"
- | "macro"
- | "netmask"
- | "newsgroup"
- | "osname"
- | "process"
- | "resource"
- | "server"
- | "service"
- | "systemname"
- | "username"
- }?
+# ======================================================================
+
+[
+ db:refname [ "replaceable" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ replaceable.class.attrib =
+ attribute class { "command" | "function" | "option" | "parameter" }
+
+ replaceable.role.attribute = attribute role { text }
+
+ replaceable.attr =
+ replaceable.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & replaceable.class.attrib?
+
+ db.replaceable =
+ element replaceable {
+ replaceable.attr,
+ replaceable.inlines*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "returnvalue" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ returnvalue.role.attribute = attribute role { text }
+
+ returnvalue.attr =
+ returnvalue.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.returnvalue =
+ element returnvalue {
+ returnvalue.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "tag" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ tag.class.attrib =
+ attribute class {
+ "attribute"
+ | "attvalue"
+ | "element"
+ | "emptytag"
+ | "endtag"
+ | "genentity"
+ | "numcharref"
+ | "paramentity"
+ | "pi"
+ | "sgmlcomment"
+ | "starttag"
+ | "xmlpi"
+ }?
+
+ tag.role.attribute = attribute role { text }
+
+ tag.attr =
+ tag.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & tag.class.attrib
+
+ db.tag =
+ element tag {
+ tag.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "symbol" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ symbol.class.attrib = attribute class { "limit" }?
+
+ symbol.role.attribute = attribute role { text }
+
+ symbol.attr =
+ symbol.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & symbol.class.attrib
+
+ db.symbol =
+ element symbol {
+ symbol.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
systemitem.inlines = (docbook.text)
-db.systemitem = element systemitem { systemitem.inlines* }
+# ======================================================================
+
+[
+ db:refname [ "systemitem" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ systemitem.class.attrib =
+ attribute class {
+ "daemon"
+ | "domainname"
+ | "etheraddress"
+ | "event"
+ | "eventhandler"
+ | "filesystem"
+ | "fqdomainname"
+ | "groupname"
+ | "ipaddress"
+ | "library"
+ | "macro"
+ | "netmask"
+ | "newsgroup"
+ | "osname"
+ | "process"
+ | "resource"
+ | "server"
+ | "service"
+ | "systemname"
+ | "username"
+ }
+
+ systemitem.role.attribute = attribute role { text }
+
+ systemitem.attr =
+ systemitem.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & systemitem.class.attrib?
+
+ db.systemitem =
+ element systemitem {
+ systemitem.attr,
+ systemitem.inlines*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "uri" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ uri.type.attrib = attribute type { text }?
+
+ uri.role.attribute = attribute role { text }
+
+ uri.attr =
+ uri.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & uri.type.attrib
+
+ db.uri =
+ element uri {
+ uri.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "token" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ token.role.attribute = attribute role { text }
+
+ token.attr =
+ token.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.token =
+ element token {
+ token.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "type" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ type.role.attribute = attribute role { text }
-uri.type.attrib = attribute type { text }?
-db.uri = element uri { docbook.text }
+ type.attr =
+ type.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-db.token = element token { docbook.text }
+ db.type =
+ element type {
+ type.attr,
+ docbook.text
+ }
+}
-db.type = element type { docbook.text }
+# ======================================================================
userinput.inlines = inlines
-db.userinput = element userinput { userinput.inlines* }
-
-db.abbrev = element abbrev {
- (docbook.text
- | db.superscript
- | db.subscript
- | db.trademark)* }
-
-db.acronym = element acronym {
- (docbook.text
- | db.superscript
- | db.subscript
- | db.trademark)* }
-
-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"
- | "bbs"
- | "book"
- | "cdrom"
- | "chapter"
- | "dvd"
- | "emailmessage"
- | "gopher"
- | "journal"
- | "manuscript"
- | "newsposting"
- | "part"
- | "refentry"
- | "section"
- | "series"
- | "set"
- | "webpage"
- | "wiki"
- }?
-db.citetitle = element citetitle { inlines* }
+# ======================================================================
+
+[
+ db:refname [ "userinput" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ userinput.role.attribute = attribute role { text }
+
+ userinput.attr =
+ userinput.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.userinput =
+ element userinput {
+ userinput.attr,
+ userinput.inlines*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "abbrev" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ abbrev.role.attribute = attribute role { text }
+
+ abbrev.attr =
+ abbrev.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.abbrev =
+ element abbrev {
+ abbrev.attr,
+ (docbook.text
+ | db.superscript
+ | db.subscript
+ | db.trademark)*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "acronym" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ acronym.role.attribute = attribute role { text }
+
+ acronym.attr =
+ acronym.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.acronym =
+ element acronym {
+ acronym.attr,
+ (docbook.text
+ | db.superscript
+ | db.subscript
+ | db.trademark)*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "citation" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ citation.role.attribute = attribute role { text }
+
+ citation.attr =
+ citation.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.citation =
+ element citation {
+ citation.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "citerefentry" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ citerefentry.role.attribute = attribute role { text }
+
+ citerefentry.attr =
+ citerefentry.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.citerefentry =
+ element citerefentry {
+ citerefentry.attr,
+ db.refentrytitle,
+ db.manvolnum?
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "refentrytitle" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ refentrytitle.role.attribute = attribute role { text }
+
+ refentrytitle.attr =
+ refentrytitle.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.refentrytitle =
+ element refentrytitle {
+ refentrytitle.attr,
+ inlines*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "manvolnum" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ manvolnum.role.attribute = attribute role { text }
+
+ manvolnum.attr =
+ manvolnum.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.manvolnum =
+ element manvolnum {
+ manvolnum.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "citetitle" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ citetitle.pubwork.attrib =
+ attribute pubwork {
+ "article"
+ | "bbs"
+ | "book"
+ | "cdrom"
+ | "chapter"
+ | "dvd"
+ | "emailmessage"
+ | "gopher"
+ | "journal"
+ | "manuscript"
+ | "newsposting"
+ | "part"
+ | "refentry"
+ | "section"
+ | "series"
+ | "set"
+ | "webpage"
+ | "wiki"
+ }
+
+ citetitle.role.attribute = attribute role { text }
+
+ citetitle.attr =
+ citetitle.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & citetitle.pubwork.attrib?
+
+ db.citetitle =
+ element citetitle {
+ citetitle.attr,
+ inlines*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "emphasis" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ emphasis.role.attribute = attribute role { text }
-db.emphasis = element emphasis { inlines* }
+ emphasis.attr =
+ emphasis.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-db.foreignphrase = element foreignphrase { inlines* }
+ db.emphasis =
+ element emphasis {
+ emphasis.attr,
+ inlines*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "foreignphrase" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ foreignphrase.role.attribute = attribute role { text }
+
+ foreignphrase.attr =
+ foreignphrase.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.foreignphrase =
+ element foreignphrase {
+ foreignphrase.attr,
+ inlines*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "phrase" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ phrase.role.attribute = attribute role { text }
+
+ phrase.attr =
+ phrase.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.phrase =
+ element phrase {
+ phrase.attr,
+ inlines*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "quote" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ quote.role.attribute = attribute role { text }
+
+ quote.attr =
+ quote.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.quote =
+ element quote {
+ quote.attr,
+ inlines*
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "subscript" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ subscript.role.attribute = attribute role { text }
+
+ subscript.attr =
+ subscript.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.subscript =
+ element subscript {
+ subscript.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "superscript" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ superscript.role.attribute = attribute role { text }
+
+ superscript.attr =
+ superscript.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+
+ db.superscript =
+ element superscript {
+ superscript.attr,
+ docbook.text
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "trademark" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ trademark.class.attrib =
+ attribute class { "copyright" | "registered" | "service" | "trade" }
-db.phrase = element phrase { inlines* }
+ trademark.role.attribute = attribute role { text }
-db.quote = element quote { inlines* }
+ trademark.attr =
+ trademark.role.attribute?
+ & common.attributes
+ & common.linking.attributes
+ & trademark.class.attrib?
+
+ db.trademark =
+ element trademark {
+ trademark.attr,
+ docbook.text
+ }
+}
-db.subscript = element subscript { docbook.text }
+# ======================================================================
-db.superscript = element superscript { docbook.text }
+[
+ db:refname [ "wordasword" ]
+ db:refpurpose [ "" ]
+]
+div {
-trademark.class.attrib =
- attribute class { "copyright" | "registered" | "service" | "trade" }?
+ wordasword.role.attribute = attribute role { text }
-db.trademark = element trademark { docbook.text }
+ wordasword.attr =
+ wordasword.role.attribute?
+ & common.attributes
+ & common.linking.attributes
-db.wordasword = element wordasword { docbook.text }
+ db.wordasword =
+ element wordasword {
+ wordasword.attr,
+ docbook.text
+ }
+}
-ctrl:common-linking [ element="footnoteref" suppress="yes" ]
+# ======================================================================
-footnoteref.linkend.attrib = linkend.attribute
-footnoteref.label.attrib = attribute label { text }?
-db.footnoteref =
- [
- s:rule [
- context = "footnoteref"
- s:assert [
- test = "name(//*[@id=current()/@linkend]) = 'footnote'"
- "@linkend on footnoteref must point to a footnote."
+[
+ db:refname [ "footnoteref" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ footnoteref.role.attribute = attribute role { text }
+
+ footnoteref.attr =
+ footnoteref.role.attribute?
+ & common.attributes
+ & linkend.attribute
+ & attribute label { text }?
+
+ db.footnoteref =
+ [
+ s:rule [
+ context = "db:footnoteref"
+ s:assert [
+ test = "local-name(//*[@id=current()/@linkend]) = 'footnote' and namespace-uri(//*[@id=current()/@linkend]) = 'http://docbook.org/docbook-ng/absinthe'"
+ "@linkend on footnoteref must point to a footnote."
+ ]
]
]
- ]
- element footnoteref { empty }
+ element footnoteref {
+ footnoteref.attr,
+ empty
+ }
+}
+
+# ======================================================================
+
+[
+ db:refname [ "xref" ]
+ db:refpurpose [ "" ]
+]
+div {
+
+ xref.role.attribute = attribute role { text }
+
+ xref.attr =
+ xref.role.attribute?
+ & common.attributes
+ & common.linking.attributes.req
+ & attribute xrefstyle { text }?
+ & attribute endterm { xsd:IDREF }?
+
+ db.xref =
+ element xref {
+ xref.attr,
+ empty
+ }
+}
-ctrl:common-linking [ element="xref" attributes="common.linking.attributes.req" ]
+# ======================================================================
+
+[
+ db:refname [ "anchor" ]
+ db:refpurpose [ "" ]
+]
+div {
-xref.xrefstyle.attrib = attribute xrefstyle { text }?
-xref.endterm.attrib = attribute endterm { xsd:IDREF }?
-db.xref = element xref { empty }
+ anchor.role.attribute = attribute role { text }
-ctrl:common-linking [ element="anchor" suppress="yes" ]
-ctrl:common-attributes [ element="anchor" attributes="common.attrib.idreq" ]
+ anchor.attr =
+ anchor.role.attribute?
+ & common.attributes.idreq
-db.anchor = element anchor { empty }
+ db.anchor =
+ element anchor {
+ anchor.attr,
+ empty
+ }
+}