RelaxNG/docbook.rnc
author Patrick PIERRE
ven., 30 nov. 2012 14:46:55 +0100
changeset 46 90d51f9ead80
parent 0 e8d6296c8d5e
permissions -rw-r--r--
Amélioration des ancres
patrick@0
     1
namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0"
patrick@0
     2
namespace ctrl = "http://nwalsh.com/xmlns/schema-control/"
patrick@0
     3
default namespace db = "http://docbook.org/ns/docbook"
patrick@0
     4
namespace html = "http://www.w3.org/1999/xhtml"
patrick@0
     5
namespace mml = "http://www.w3.org/1998/Math/MathML"
patrick@0
     6
namespace rng = "http://relaxng.org/ns/structure/1.0"
patrick@0
     7
namespace s = "http://www.ascc.net/xml/schematron"
patrick@0
     8
namespace svg = "http://www.w3.org/2000/svg"
patrick@0
     9
namespace xlink = "http://www.w3.org/1999/xlink"
patrick@0
    10
patrick@0
    11
#  DocBook V5.0
patrick@0
    12
patrick@0
    13
# See http://docbook.org/ns/docbook
patrick@0
    14
patrick@0
    15
# This file is part of DocBook V5.0
patrick@0
    16
# 
patrick@0
    17
# Copyright 1992-2008 HaL Computer Systems, Inc.,
patrick@0
    18
# O'Reilly & Associates, Inc., ArborText, Inc., Fujitsu Software
patrick@0
    19
# Corporation, Norman Walsh, Sun Microsystems, Inc., and the
patrick@0
    20
# Organization for the Advancement of Structured Information
patrick@0
    21
# Standards (OASIS).
patrick@0
    22
# 
patrick@0
    23
# Release: $Id$
patrick@0
    24
# 
patrick@0
    25
# Permission to use, copy, modify and distribute the DocBook schema
patrick@0
    26
# and its accompanying documentation for any purpose and without fee
patrick@0
    27
# is hereby granted in perpetuity, provided that the above copyright
patrick@0
    28
# notice and this paragraph appear in all copies. The copyright
patrick@0
    29
# holders make no representation about the suitability of the schema
patrick@0
    30
# for any purpose. It is provided "as is" without expressed or implied
patrick@0
    31
# warranty.
patrick@0
    32
# 
patrick@0
    33
# If you modify the DocBook schema in any way, label your schema as a
patrick@0
    34
# variant of DocBook. See the reference documentation
patrick@0
    35
# (http://docbook.org/tdg5/en/html/ch05.html#s-notdocbook)
patrick@0
    36
# for more information.
patrick@0
    37
# 
patrick@0
    38
# Please direct all questions, bug reports, or suggestions for changes
patrick@0
    39
# to the docbook@lists.oasis-open.org mailing list. For more
patrick@0
    40
# information, see http://www.oasis-open.org/docbook/.
patrick@0
    41
# 
patrick@0
    42
# ======================================================================
patrick@0
    43
start =
patrick@0
    44
  (db.set
patrick@0
    45
   | db.book
patrick@0
    46
   | db.divisions
patrick@0
    47
   | db.components
patrick@0
    48
   | db.navigation.components
patrick@0
    49
   | db.section
patrick@0
    50
   | db.para)
patrick@0
    51
   | (db.abstract
patrick@0
    52
     | db.mediaobject.content
patrick@0
    53
     | db.audiodata
patrick@0
    54
     | db.imagedata
patrick@0
    55
     | db.textdata
patrick@0
    56
     | db.videodata
patrick@0
    57
     | db.caption
patrick@0
    58
     | db.publishing.blocks
patrick@0
    59
     | db.formal.blocks
patrick@0
    60
     | db.informal.blocks
patrick@0
    61
     | db.formalpara
patrick@0
    62
     | db.inlinemediaobject
patrick@0
    63
     | db.list.blocks
patrick@0
    64
     | db.legalnotice
patrick@0
    65
     | db.verbatim.blocks
patrick@0
    66
     | db.graphic.blocks
patrick@0
    67
     | db.personblurb
patrick@0
    68
     | db.revhistory
patrick@0
    69
     | db.simpara
patrick@0
    70
     | db.step
patrick@0
    71
     | db.stepalternatives)
patrick@0
    72
  | (db.partintro | db.simplesect)
patrick@0
    73
  | db.annotation
patrick@0
    74
  | (db.sect1 | db.sect2 | db.sect3 | db.sect4 | db.sect5)
patrick@0
    75
  | (db.refentry | db.refsection | db.refsynopsisdiv)
patrick@0
    76
  | (db.refsect1 | db.refsect2 | db.refsect3)
patrick@0
    77
  | (db.glossary | db.glossdiv | db.glosslist)
patrick@0
    78
  | (db.bibliodiv | db.bibliolist)
patrick@0
    79
  | (db.setindex | db.index | db.indexdiv)
patrick@0
    80
  | (db.toc | db.tocdiv)
patrick@0
    81
  | (db.task | db.taskprerequisites | db.taskrelated | db.tasksummary)
patrick@0
    82
  | (db.calloutlist
patrick@0
    83
     | db.programlistingco
patrick@0
    84
     | db.screenco
patrick@0
    85
     | db.imageobjectco)
patrick@0
    86
  | (db.productionset | db.constraintdef)
patrick@0
    87
  | (db.msg
patrick@0
    88
     | db.msgexplan
patrick@0
    89
     | db.msgmain
patrick@0
    90
     | db.msgrel
patrick@0
    91
     | db.msgset
patrick@0
    92
     | db.msgsub)
patrick@0
    93
  | (db.qandadiv | db.qandaentry | db.qandaset)
patrick@0
    94
  | (db.equation | db.informalequation)
patrick@0
    95
  | db.cmdsynopsis
patrick@0
    96
  | (db.synopsis.blocks | db.funcsynopsisinfo | db.classsynopsisinfo)
patrick@0
    97
  | db.admonition.blocks
patrick@0
    98
  | db.topic
patrick@0
    99
patrick@0
   100
div {
patrick@0
   101
  db._any.attribute =
patrick@0
   102
    
patrick@0
   103
    ## Any attribute, including any attribute in any namespace.
patrick@0
   104
    attribute * { text }
patrick@0
   105
  db._any =
patrick@0
   106
    
patrick@0
   107
    ## Any element from almost any namespace
patrick@0
   108
    element * - (db:* | html:*) {
patrick@0
   109
      (db._any.attribute | text | db._any)*
patrick@0
   110
    }
patrick@0
   111
}
patrick@0
   112
patrick@0
   113
db.arch.attribute =
patrick@0
   114
  
patrick@0
   115
  ## Designates the computer or chip architecture to which the element applies
patrick@0
   116
  attribute arch { text }
patrick@0
   117
db.audience.attribute =
patrick@0
   118
  
patrick@0
   119
  ## Designates the intended audience to which the element applies, for example, system administrators, programmers, or new users.
patrick@0
   120
  attribute audience { text }
patrick@0
   121
db.condition.attribute =
patrick@0
   122
  
patrick@0
   123
  ## provides a standard place for application-specific effectivity
patrick@0
   124
  attribute condition { text }
patrick@0
   125
db.conformance.attribute =
patrick@0
   126
  
patrick@0
   127
  ## Indicates standards conformance characteristics of the element
patrick@0
   128
  attribute conformance { text }
patrick@0
   129
db.os.attribute =
patrick@0
   130
  
patrick@0
   131
  ## Indicates the operating system to which the element is applicable
patrick@0
   132
  attribute os { text }
patrick@0
   133
db.revision.attribute =
patrick@0
   134
  
patrick@0
   135
  ## Indicates the editorial revision to which the element belongs
patrick@0
   136
  attribute revision { text }
patrick@0
   137
db.security.attribute =
patrick@0
   138
  
patrick@0
   139
  ## Indicates something about the security level associated with the element to which it applies
patrick@0
   140
  attribute security { text }
patrick@0
   141
db.userlevel.attribute =
patrick@0
   142
  
patrick@0
   143
  ## Indicates the level of user experience for which the element applies
patrick@0
   144
  attribute userlevel { text }
patrick@0
   145
db.vendor.attribute =
patrick@0
   146
  
patrick@0
   147
  ## Indicates the computer vendor to which the element applies.
patrick@0
   148
  attribute vendor { text }
patrick@0
   149
db.wordsize.attribute =
patrick@0
   150
  
patrick@0
   151
  ## Indicates the word size (width in bits) of the computer architecture to which the element applies
patrick@0
   152
  attribute wordsize { text }
patrick@0
   153
db.effectivity.attributes =
patrick@0
   154
  db.arch.attribute?
patrick@0
   155
  & db.audience.attribute?
patrick@0
   156
  & db.condition.attribute?
patrick@0
   157
  & db.conformance.attribute?
patrick@0
   158
  & db.os.attribute?
patrick@0
   159
  & db.revision.attribute?
patrick@0
   160
  & db.security.attribute?
patrick@0
   161
  & db.userlevel.attribute?
patrick@0
   162
  & db.vendor.attribute?
patrick@0
   163
  & db.wordsize.attribute?
patrick@0
   164
db.endterm.attribute =
patrick@0
   165
  
patrick@0
   166
  ## Points to the element whose content is to be used as the text of the link
patrick@0
   167
  attribute endterm { xsd:IDREF }
patrick@0
   168
db.linkend.attribute =
patrick@0
   169
  
patrick@0
   170
  ## Points to an internal link target by identifying the value of its xml:id attribute
patrick@0
   171
  attribute linkend { xsd:IDREF }
patrick@0
   172
db.linkends.attribute =
patrick@0
   173
  
patrick@0
   174
  ## Points to one or more internal link targets by identifying the value of their xml:id attributes
patrick@0
   175
  attribute linkends { xsd:IDREFS }
patrick@0
   176
db.xlink.href.attribute =
patrick@0
   177
  
patrick@0
   178
  ## Identifies a link target with a URI
patrick@0
   179
  attribute xlink:href { xsd:anyURI }
patrick@0
   180
db.xlink.type.attribute =
patrick@0
   181
  
patrick@0
   182
  ## Identifies the XLink link type
patrick@0
   183
  attribute xlink:type {
patrick@0
   184
    
patrick@0
   185
    ## An XLink simple link
patrick@0
   186
    "simple"
patrick@0
   187
  }
patrick@0
   188
db.xlink.role.attribute =
patrick@0
   189
  
patrick@0
   190
  ## Identifies the XLink role of the link
patrick@0
   191
  attribute xlink:role { xsd:anyURI }
patrick@0
   192
db.xlink.arcrole.attribute =
patrick@0
   193
  
patrick@0
   194
  ## Identifies the XLink arcrole of the link
patrick@0
   195
  attribute xlink:arcrole { xsd:anyURI }
patrick@0
   196
db.xlink.title.attribute =
patrick@0
   197
  
patrick@0
   198
  ## Identifies the XLink title of the link
patrick@0
   199
  attribute xlink:title { text }
patrick@0
   200
db.xlink.show.enumeration =
patrick@0
   201
  
patrick@0
   202
  ## An application traversing to the ending resource should load it in a new window, frame, pane, or other relevant presentation context.
patrick@0
   203
  "new"
patrick@0
   204
  | 
patrick@0
   205
    ## An application traversing to the ending resource should load the resource in the same window, frame, pane, or other relevant presentation context in which the starting resource was loaded.
patrick@0
   206
    "replace"
patrick@0
   207
  | 
patrick@0
   208
    ## An application traversing to the ending resource should load its presentation in place of the presentation of the starting resource.
patrick@0
   209
    "embed"
patrick@0
   210
  | 
patrick@0
   211
    ## The behavior of an application traversing to the ending resource is unconstrained by XLink. The application should look for other markup present in the link to determine the appropriate behavior.
patrick@0
   212
    "other"
patrick@0
   213
  | 
patrick@0
   214
    ## The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior.
patrick@0
   215
    "none"
patrick@0
   216
db.xlink.show.attribute =
patrick@0
   217
  
patrick@0
   218
  ## Identifies the XLink show behavior of the link
patrick@0
   219
  attribute xlink:show { db.xlink.show.enumeration }
patrick@0
   220
db.xlink.actuate.enumeration =
patrick@0
   221
  
patrick@0
   222
  ## An application should traverse to the ending resource immediately on loading the starting resource.
patrick@0
   223
  "onLoad"
patrick@0
   224
  | 
patrick@0
   225
    ## An application should traverse from the starting resource to the ending resource only on a post-loading event triggered for the purpose of traversal.
patrick@0
   226
    "onRequest"
patrick@0
   227
  | 
patrick@0
   228
    ## The behavior of an application traversing to the ending resource is unconstrained by this specification. The application should look for other markup present in the link to determine the appropriate behavior.
patrick@0
   229
    "other"
patrick@0
   230
  | 
patrick@0
   231
    ## The behavior of an application traversing to the ending resource is unconstrained by this specification. No other markup is present to help the application determine the appropriate behavior.
patrick@0
   232
    "none"
patrick@0
   233
db.xlink.actuate.attribute =
patrick@0
   234
  
patrick@0
   235
  ## Identifies the XLink actuate behavior of the link
patrick@0
   236
  attribute xlink:actuate { db.xlink.actuate.enumeration }
patrick@0
   237
db.href.attributes =
patrick@0
   238
  db.xlink.href.attribute
patrick@0
   239
  & db.xlink.type.attribute?
patrick@0
   240
  & db.xlink.role.attribute?
patrick@0
   241
  & db.xlink.arcrole.attribute?
patrick@0
   242
  & db.xlink.title.attribute?
patrick@0
   243
  & db.xlink.show.attribute?
patrick@0
   244
  & db.xlink.actuate.attribute?
patrick@0
   245
db.xml.id.attribute =
patrick@0
   246
  
patrick@0
   247
  ## Identifies the unique ID value of the element
patrick@0
   248
  attribute xml:id { xsd:ID }
patrick@0
   249
db.version.attribute =
patrick@0
   250
  
patrick@0
   251
  ## Specifies the DocBook version of the element and its descendants
patrick@0
   252
  attribute version { text }
patrick@0
   253
db.xml.lang.attribute =
patrick@0
   254
  
patrick@0
   255
  ## Specifies the natural language of the element and its descendants
patrick@0
   256
  attribute xml:lang { text }
patrick@0
   257
db.xml.base.attribute =
patrick@0
   258
  
patrick@0
   259
  ## Specifies the base URI of the element and its descendants
patrick@0
   260
  attribute xml:base { xsd:anyURI }
patrick@0
   261
db.remap.attribute =
patrick@0
   262
  
patrick@0
   263
  ## Provides the name or similar semantic identifier assigned to the content in some previous markup scheme
patrick@0
   264
  attribute remap { text }
patrick@0
   265
db.xreflabel.attribute =
patrick@0
   266
  
patrick@0
   267
  ## Provides the text that is to be generated for a cross reference to the element
patrick@0
   268
  attribute xreflabel { text }
patrick@0
   269
db.xrefstyle.attribute =
patrick@0
   270
  
patrick@0
   271
  ## Specifies a keyword or keywords identifying additional style information
patrick@0
   272
  attribute xrefstyle { text }
patrick@0
   273
db.revisionflag.enumeration =
patrick@0
   274
  
patrick@0
   275
  ## The element has been changed.
patrick@0
   276
  "changed"
patrick@0
   277
  | 
patrick@0
   278
    ## The element is new (has been added to the document).
patrick@0
   279
    "added"
patrick@0
   280
  | 
patrick@0
   281
    ## The element has been deleted.
patrick@0
   282
    "deleted"
patrick@0
   283
  | 
patrick@0
   284
    ## Explicitly turns off revision markup for this element.
patrick@0
   285
    "off"
patrick@0
   286
db.revisionflag.attribute =
patrick@0
   287
  
patrick@0
   288
  ## Identifies the revision status of the element
patrick@0
   289
  attribute revisionflag { db.revisionflag.enumeration }
patrick@0
   290
db.dir.enumeration =
patrick@0
   291
  
patrick@0
   292
  ## Left-to-right text
patrick@0
   293
  "ltr"
patrick@0
   294
  | 
patrick@0
   295
    ## Right-to-left text
patrick@0
   296
    "rtl"
patrick@0
   297
  | 
patrick@0
   298
    ## Left-to-right override
patrick@0
   299
    "lro"
patrick@0
   300
  | 
patrick@0
   301
    ## Right-to-left override
patrick@0
   302
    "rlo"
patrick@0
   303
db.dir.attribute =
patrick@0
   304
  
patrick@0
   305
  ## Identifies the direction of text in an element
patrick@0
   306
  attribute dir { db.dir.enumeration }
patrick@0
   307
db.common.base.attributes =
patrick@0
   308
  db.version.attribute?
patrick@0
   309
  & db.xml.lang.attribute?
patrick@0
   310
  & db.xml.base.attribute?
patrick@0
   311
  & db.remap.attribute?
patrick@0
   312
  & db.xreflabel.attribute?
patrick@0
   313
  & db.revisionflag.attribute?
patrick@0
   314
  & db.dir.attribute?
patrick@0
   315
  & db.effectivity.attributes
patrick@0
   316
db.common.attributes =
patrick@0
   317
  db.xml.id.attribute?
patrick@0
   318
  & db.common.base.attributes
patrick@0
   319
  & db.annotations.attribute?
patrick@0
   320
db.common.idreq.attributes =
patrick@0
   321
  db.xml.id.attribute
patrick@0
   322
  & db.common.base.attributes
patrick@0
   323
  & db.annotations.attribute?
patrick@0
   324
db.common.linking.attributes =
patrick@0
   325
  (db.linkend.attribute | db.href.attributes)?
patrick@0
   326
db.common.req.linking.attributes =
patrick@0
   327
  db.linkend.attribute | db.href.attributes
patrick@0
   328
db.common.data.attributes =
patrick@0
   329
  
patrick@0
   330
  ## Specifies the format of the data
patrick@0
   331
  attribute format { text }?,
patrick@0
   332
  (
patrick@0
   333
   ## Indentifies the location of the data by URI
patrick@0
   334
   attribute fileref { xsd:anyURI }
patrick@0
   335
   | 
patrick@0
   336
     ## Identifies the location of the data by external identifier (entity name)
patrick@0
   337
     attribute entityref { xsd:ENTITY })
patrick@0
   338
db.verbatim.continuation.enumeration =
patrick@0
   339
  
patrick@0
   340
  ## Line numbering continues from the immediately preceding element with the same name.
patrick@0
   341
  "continues"
patrick@0
   342
  | 
patrick@0
   343
    ## Line numbering restarts (begins at 1, usually).
patrick@0
   344
    "restarts"
patrick@0
   345
db.verbatim.continuation.attribute =
patrick@0
   346
  
patrick@0
   347
  ## Determines whether line numbering continues from the previous element or restarts.
patrick@0
   348
  attribute continuation { db.verbatim.continuation.enumeration }
patrick@0
   349
db.verbatim.linenumbering.enumeration =
patrick@0
   350
  
patrick@0
   351
  ## Lines are numbered.
patrick@0
   352
  "numbered"
patrick@0
   353
  | 
patrick@0
   354
    ## Lines are not numbered.
patrick@0
   355
    "unnumbered"
patrick@0
   356
db.verbatim.linenumbering.attribute =
patrick@0
   357
  
patrick@0
   358
  ## Determines whether lines are numbered.
patrick@0
   359
  attribute linenumbering { db.verbatim.linenumbering.enumeration }
patrick@0
   360
db.verbatim.startinglinenumber.attribute =
patrick@0
   361
  
patrick@0
   362
  ## Specifies the initial line number.
patrick@0
   363
  attribute startinglinenumber { xsd:integer }
patrick@0
   364
db.verbatim.language.attribute =
patrick@0
   365
  
patrick@0
   366
  ## Identifies the language (i.e. programming language) of the verbatim content.
patrick@0
   367
  attribute language { text }
patrick@0
   368
db.verbatim.xml.space.attribute =
patrick@0
   369
  
patrick@0
   370
  ## Can be used to indicate explicitly that whitespace in the verbatim environment is preserved. Whitespace must always be preserved in verbatim environments whether this attribute is specified or not.
patrick@0
   371
  attribute xml:space {
patrick@0
   372
    
patrick@0
   373
    ## Whitespace must be preserved.
patrick@0
   374
    "preserve"
patrick@0
   375
  }
patrick@0
   376
db.verbatim.attributes =
patrick@0
   377
  db.verbatim.continuation.attribute?
patrick@0
   378
  & db.verbatim.linenumbering.attribute?
patrick@0
   379
  & db.verbatim.startinglinenumber.attribute?
patrick@0
   380
  & db.verbatim.language.attribute?
patrick@0
   381
  & db.verbatim.xml.space.attribute?
patrick@0
   382
db.label.attribute =
patrick@0
   383
  
patrick@0
   384
  ## Specifies an identifying string for presentation purposes
patrick@0
   385
  attribute label { text }
patrick@0
   386
db.width.characters.attribute =
patrick@0
   387
  
patrick@0
   388
  ## Specifies the width (in characters) of the element
patrick@0
   389
  attribute width { xsd:nonNegativeInteger }
patrick@0
   390
db.spacing.enumeration =
patrick@0
   391
  
patrick@0
   392
  ## The spacing should be "compact".
patrick@0
   393
  "compact"
patrick@0
   394
  | 
patrick@0
   395
    ## The spacing should be "normal".
patrick@0
   396
    "normal"
patrick@0
   397
db.spacing.attribute =
patrick@0
   398
  
patrick@0
   399
  ## Specifies (a hint about) the spacing of the content
patrick@0
   400
  attribute spacing { db.spacing.enumeration }
patrick@0
   401
db.pgwide.enumeration =
patrick@0
   402
  
patrick@0
   403
  ## The element should be rendered in the current text flow (with the flow column width).
patrick@0
   404
  "0"
patrick@0
   405
  | 
patrick@0
   406
    ## The element should be rendered across the full text page.
patrick@0
   407
    "1"
patrick@0
   408
db.pgwide.attribute =
patrick@0
   409
  
patrick@0
   410
  ## Indicates if the element is rendered across the column or the page
patrick@0
   411
  attribute pgwide { db.pgwide.enumeration }
patrick@0
   412
db.language.attribute =
patrick@0
   413
  
patrick@0
   414
  ## Identifies the language (i.e. programming language) of the content.
patrick@0
   415
  attribute language { text }
patrick@0
   416
db.performance.enumeration =
patrick@0
   417
  
patrick@0
   418
  ## The content describes an optional step or steps.
patrick@0
   419
  "optional"
patrick@0
   420
  | 
patrick@0
   421
    ## The content describes a required step or steps.
patrick@0
   422
    "required"
patrick@0
   423
db.performance.attribute =
patrick@0
   424
  
patrick@0
   425
  ## Specifies if the content is required or optional.
patrick@0
   426
  attribute performance { db.performance.enumeration }
patrick@0
   427
db.floatstyle.attribute =
patrick@0
   428
  
patrick@0
   429
  ## Specifies style information to be used when rendering the float
patrick@0
   430
  attribute floatstyle { text }
patrick@0
   431
db.width.attribute =
patrick@0
   432
  
patrick@0
   433
  ## Specifies the width of the element
patrick@0
   434
  attribute width { text }
patrick@0
   435
db.depth.attribute =
patrick@0
   436
  
patrick@0
   437
  ## Specifies the depth of the element
patrick@0
   438
  attribute depth { text }
patrick@0
   439
db.contentwidth.attribute =
patrick@0
   440
  
patrick@0
   441
  ## Specifies the width of the content rectangle
patrick@0
   442
  attribute contentwidth { text }
patrick@0
   443
db.contentdepth.attribute =
patrick@0
   444
  
patrick@0
   445
  ## Specifies the depth of the content rectangle
patrick@0
   446
  attribute contentdepth { text }
patrick@0
   447
db.scalefit.enumeration =
patrick@0
   448
  
patrick@0
   449
  ## False (do not scale-to-fit; anamorphic scaling may occur)
patrick@0
   450
  "0"
patrick@0
   451
  | 
patrick@0
   452
    ## True (scale-to-fit; anamorphic scaling is forbidden)
patrick@0
   453
    "1"
patrick@0
   454
db.scale.attribute =
patrick@0
   455
  
patrick@0
   456
  ## Specifies the scaling factor
patrick@0
   457
  attribute scale { xsd:positiveInteger }
patrick@0
   458
db.halign.enumeration =
patrick@0
   459
  
patrick@0
   460
  ## Centered horizontally
patrick@0
   461
  "center"
patrick@0
   462
  | 
patrick@0
   463
    ## Aligned horizontally on the specified character
patrick@0
   464
    "char"
patrick@0
   465
  | 
patrick@0
   466
    ## Fully justified (left and right margins or edges)
patrick@0
   467
    "justify"
patrick@0
   468
  | 
patrick@0
   469
    ## Left aligned
patrick@0
   470
    "left"
patrick@0
   471
  | 
patrick@0
   472
    ## Right aligned
patrick@0
   473
    "right"
patrick@0
   474
db.valign.enumeration =
patrick@0
   475
  
patrick@0
   476
  ## Aligned on the bottom of the region
patrick@0
   477
  "bottom"
patrick@0
   478
  | 
patrick@0
   479
    ## Centered vertically
patrick@0
   480
    "middle"
patrick@0
   481
  | 
patrick@0
   482
    ## Aligned on the top of the region
patrick@0
   483
    "top"
patrick@0
   484
db.biblio.class.enumeration =
patrick@0
   485
  
patrick@0
   486
  ## A digital object identifier.
patrick@0
   487
  "doi"
patrick@0
   488
  | 
patrick@0
   489
    ## An international standard book number.
patrick@0
   490
    "isbn"
patrick@0
   491
  | 
patrick@0
   492
    ## An international standard technical report number (ISO 10444).
patrick@0
   493
    "isrn"
patrick@0
   494
  | 
patrick@0
   495
    ## An international standard serial number.
patrick@0
   496
    "issn"
patrick@0
   497
  | 
patrick@0
   498
    ## A Library of Congress reference number.
patrick@0
   499
    "libraryofcongress"
patrick@0
   500
  | 
patrick@0
   501
    ## A publication number (an internal number or possibly organizational standard).
patrick@0
   502
    "pubsnumber"
patrick@0
   503
  | 
patrick@0
   504
    ## A Uniform Resource Identifier
patrick@0
   505
    "uri"
patrick@0
   506
db.biblio.class-enum.attribute =
patrick@0
   507
  
patrick@0
   508
  ## Identifies the kind of bibliographic identifier
patrick@0
   509
  attribute class { db.biblio.class.enumeration }?
patrick@0
   510
db.biblio.class-other.attribute =
patrick@0
   511
  
patrick@0
   512
  ## Identifies the nature of the non-standard bibliographic identifier
patrick@0
   513
  attribute otherclass { xsd:NMTOKEN }
patrick@0
   514
db.biblio.class-other.attributes =
patrick@0
   515
  
patrick@0
   516
  ## Identifies the kind of bibliographic identifier
patrick@0
   517
  attribute class {
patrick@0
   518
    
patrick@0
   519
    ## Indicates that the identifier is some 'other' kind.
patrick@0
   520
    "other"
patrick@0
   521
  }
patrick@0
   522
  & db.biblio.class-other.attribute
patrick@0
   523
db.biblio.class.attribute =
patrick@0
   524
  db.biblio.class-enum.attribute | db.biblio.class-other.attributes
patrick@0
   525
db.ubiq.inlines =
patrick@0
   526
  (db.inlinemediaobject
patrick@0
   527
   | db.remark
patrick@0
   528
   | db.link.inlines
patrick@0
   529
   | db.alt
patrick@0
   530
   | db.trademark
patrick@0
   531
   | # below, effectively the publishing inlines (as of 5.0)
patrick@0
   532
     db.abbrev
patrick@0
   533
   | db.acronym
patrick@0
   534
   | db.date
patrick@0
   535
   | db._emphasis
patrick@0
   536
   | db.footnote
patrick@0
   537
   | db.footnoteref
patrick@0
   538
   | db._foreignphrase
patrick@0
   539
   | db._phrase
patrick@0
   540
   | db._quote
patrick@0
   541
   | db.subscript
patrick@0
   542
   | db.superscript
patrick@0
   543
   | db.wordasword)
patrick@0
   544
  | db.annotation
patrick@0
   545
  | (db._firstterm | db._glossterm)
patrick@0
   546
  | db.indexterm
patrick@0
   547
  | db.coref
patrick@0
   548
db._text = (text | db.ubiq.inlines | db._phrase | db.replaceable)*
patrick@0
   549
db._title = db.title? & db.titleabbrev? & db.subtitle?
patrick@0
   550
db._title.req = db.title & db.titleabbrev? & db.subtitle?
patrick@0
   551
db._title.only = db.title? & db.titleabbrev?
patrick@0
   552
db._title.onlyreq = db.title & db.titleabbrev?
patrick@0
   553
db._info = (db._title, db.titleforbidden.info?) | db.info?
patrick@0
   554
db._info.title.req =
patrick@0
   555
  (db._title.req, db.titleforbidden.info?) | db.titlereq.info
patrick@0
   556
db._info.title.only =
patrick@0
   557
  (db._title.only, db.titleforbidden.info?) | db.titleonly.info
patrick@0
   558
db._info.title.onlyreq =
patrick@0
   559
  (db._title.onlyreq, db.titleforbidden.info?) | db.titleonlyreq.info
patrick@0
   560
db._info.title.forbidden = db.titleforbidden.info?
patrick@0
   561
db.all.inlines =
patrick@0
   562
  text
patrick@0
   563
  | db.ubiq.inlines
patrick@0
   564
  | db.general.inlines
patrick@0
   565
  | db.domain.inlines
patrick@0
   566
  | db.extension.inlines
patrick@0
   567
db.general.inlines =
patrick@0
   568
  db.publishing.inlines
patrick@0
   569
  | db.product.inlines
patrick@0
   570
  | db.bibliography.inlines
patrick@0
   571
  | db.graphic.inlines
patrick@0
   572
  | db.indexing.inlines
patrick@0
   573
  | db.link.inlines
patrick@0
   574
db.domain.inlines =
patrick@0
   575
  db.technical.inlines
patrick@0
   576
  | db.math.inlines
patrick@0
   577
  | db.markup.inlines
patrick@0
   578
  | db.gui.inlines
patrick@0
   579
  | db.keyboard.inlines
patrick@0
   580
  | db.os.inlines
patrick@0
   581
  | db.programming.inlines
patrick@0
   582
  | db.error.inlines
patrick@0
   583
db.technical.inlines =
patrick@0
   584
  (db.replaceable | db.package | db.parameter)
patrick@0
   585
  | db.termdef
patrick@0
   586
  | db.nonterminal
patrick@0
   587
  | (db.systemitem | db.option | db.optional | db.property)
patrick@0
   588
db.product.inlines =
patrick@0
   589
  db.trademark
patrick@0
   590
  | (db.productnumber
patrick@0
   591
     | db.productname
patrick@0
   592
     | db.database
patrick@0
   593
     | db.application
patrick@0
   594
     | db.hardware)
patrick@0
   595
db.bibliography.inlines =
patrick@0
   596
  db.citation
patrick@0
   597
  | db.citerefentry
patrick@0
   598
  | db.citetitle
patrick@0
   599
  | db.citebiblioid
patrick@0
   600
  | db.author
patrick@0
   601
  | db.person
patrick@0
   602
  | db.personname
patrick@0
   603
  | db.org
patrick@0
   604
  | db.orgname
patrick@0
   605
  | db.editor
patrick@0
   606
  | db.jobtitle
patrick@0
   607
db.publishing.inlines =
patrick@0
   608
  (db.abbrev
patrick@0
   609
   | db.acronym
patrick@0
   610
   | db.date
patrick@0
   611
   | db.emphasis
patrick@0
   612
   | db.footnote
patrick@0
   613
   | db.footnoteref
patrick@0
   614
   | db.foreignphrase
patrick@0
   615
   | db.phrase
patrick@0
   616
   | db.quote
patrick@0
   617
   | db.subscript
patrick@0
   618
   | db.superscript
patrick@0
   619
   | db.wordasword)
patrick@0
   620
  | db.glossary.inlines
patrick@0
   621
  | db.coref
patrick@0
   622
db.graphic.inlines = db.inlinemediaobject
patrick@0
   623
db.indexing.inlines = notAllowed | db.indexterm
patrick@0
   624
db.link.inlines =
patrick@0
   625
  (db.xref | db.link | db.olink | db.anchor) | db.biblioref
patrick@0
   626
db.extension.inlines = notAllowed
patrick@0
   627
db.nopara.blocks =
patrick@0
   628
  (db.list.blocks
patrick@0
   629
   | db.formal.blocks
patrick@0
   630
   | db.informal.blocks
patrick@0
   631
   | db.publishing.blocks
patrick@0
   632
   | db.graphic.blocks
patrick@0
   633
   | db.technical.blocks
patrick@0
   634
   | db.verbatim.blocks
patrick@0
   635
   | db.bridgehead
patrick@0
   636
   | db.remark
patrick@0
   637
   | db.revhistory)
patrick@0
   638
  | db.indexterm
patrick@0
   639
  | db.synopsis.blocks
patrick@0
   640
  | db.admonition.blocks
patrick@0
   641
db.para.blocks = db.anchor | db.para | db.formalpara | db.simpara
patrick@0
   642
db.all.blocks =
patrick@0
   643
  (db.nopara.blocks | db.para.blocks | db.extension.blocks)
patrick@0
   644
  | db.annotation
patrick@0
   645
db.formal.blocks = (db.example | db.figure | db.table) | db.equation
patrick@0
   646
db.informal.blocks =
patrick@0
   647
  (db.informalexample | db.informalfigure | db.informaltable)
patrick@0
   648
  | db.informalequation
patrick@0
   649
db.publishing.blocks =
patrick@0
   650
  db.sidebar | db.blockquote | db.address | db.epigraph
patrick@0
   651
db.graphic.blocks = db.mediaobject | db.screenshot
patrick@0
   652
db.technical.blocks =
patrick@0
   653
  db.procedure
patrick@0
   654
  | db.task
patrick@0
   655
  | (db.productionset | db.constraintdef)
patrick@0
   656
  | db.msgset
patrick@0
   657
db.list.blocks =
patrick@0
   658
  (db.itemizedlist
patrick@0
   659
   | db.orderedlist
patrick@0
   660
   | db.procedure
patrick@0
   661
   | db.simplelist
patrick@0
   662
   | db.variablelist
patrick@0
   663
   | db.segmentedlist)
patrick@0
   664
  | db.glosslist
patrick@0
   665
  | db.bibliolist
patrick@0
   666
  | db.calloutlist
patrick@0
   667
  | db.qandaset
patrick@0
   668
db.verbatim.blocks =
patrick@0
   669
  (db.screen | db.literallayout)
patrick@0
   670
  | (db.programlistingco | db.screenco)
patrick@0
   671
  | (db.programlisting | db.synopsis)
patrick@0
   672
db.extension.blocks = notAllowed
patrick@0
   673
db.info.extension = db._any
patrick@0
   674
db.info.elements =
patrick@0
   675
  (db.abstract
patrick@0
   676
   | db.address
patrick@0
   677
   | db.artpagenums
patrick@0
   678
   | db.author
patrick@0
   679
   | db.authorgroup
patrick@0
   680
   | db.authorinitials
patrick@0
   681
   | db.bibliocoverage
patrick@0
   682
   | db.biblioid
patrick@0
   683
   | db.bibliosource
patrick@0
   684
   | db.collab
patrick@0
   685
   | db.confgroup
patrick@0
   686
   | db.contractsponsor
patrick@0
   687
   | db.contractnum
patrick@0
   688
   | db.copyright
patrick@0
   689
   | db.cover
patrick@0
   690
   | db.date
patrick@0
   691
   | db.edition
patrick@0
   692
   | db.editor
patrick@0
   693
   | db.issuenum
patrick@0
   694
   | db.keywordset
patrick@0
   695
   | db.legalnotice
patrick@0
   696
   | db.mediaobject
patrick@0
   697
   | db.org
patrick@0
   698
   | db.orgname
patrick@0
   699
   | db.othercredit
patrick@0
   700
   | db.pagenums
patrick@0
   701
   | db.printhistory
patrick@0
   702
   | db.pubdate
patrick@0
   703
   | db.publisher
patrick@0
   704
   | db.publishername
patrick@0
   705
   | db.releaseinfo
patrick@0
   706
   | db.revhistory
patrick@0
   707
   | db.seriesvolnums
patrick@0
   708
   | db.subjectset
patrick@0
   709
   | db.volumenum
patrick@0
   710
   | db.info.extension)
patrick@0
   711
   | db.annotation
patrick@0
   712
   | db.extendedlink
patrick@0
   713
   | (db.bibliomisc | db.bibliomset | db.bibliorelation | db.biblioset)
patrick@0
   714
   | db.itermset
patrick@0
   715
   | (db.productname | db.productnumber)
patrick@0
   716
db.bibliographic.elements =
patrick@0
   717
  db.info.elements
patrick@0
   718
  | db.publishing.inlines
patrick@0
   719
  | db.citerefentry
patrick@0
   720
  | db.citetitle
patrick@0
   721
  | db.citebiblioid
patrick@0
   722
  | db.person
patrick@0
   723
  | db.personblurb
patrick@0
   724
  | db.personname
patrick@0
   725
  | db.subtitle
patrick@0
   726
  | db.title
patrick@0
   727
  | db.titleabbrev
patrick@0
   728
div {
patrick@0
   729
  db.title.role.attribute = attribute role { text }
patrick@0
   730
  db.title.attlist =
patrick@0
   731
    db.title.role.attribute?
patrick@0
   732
    & db.common.attributes
patrick@0
   733
    & db.common.linking.attributes
patrick@0
   734
  db.title =
patrick@0
   735
    
patrick@0
   736
    ## The text of the title of a section of a document or of a formal block-level element
patrick@0
   737
    element title { db.title.attlist, db.all.inlines* }
patrick@0
   738
}
patrick@0
   739
div {
patrick@0
   740
  db.titleabbrev.role.attribute = attribute role { text }
patrick@0
   741
  db.titleabbrev.attlist =
patrick@0
   742
    db.titleabbrev.role.attribute?
patrick@0
   743
    & db.common.attributes
patrick@0
   744
    & db.common.linking.attributes
patrick@0
   745
  db.titleabbrev =
patrick@0
   746
    
patrick@0
   747
    ## The abbreviation of a title
patrick@0
   748
    element titleabbrev { db.titleabbrev.attlist, db.all.inlines* }
patrick@0
   749
}
patrick@0
   750
div {
patrick@0
   751
  db.subtitle.role.attribute = attribute role { text }
patrick@0
   752
  db.subtitle.attlist =
patrick@0
   753
    db.subtitle.role.attribute?
patrick@0
   754
    & db.common.attributes
patrick@0
   755
    & db.common.linking.attributes
patrick@0
   756
  db.subtitle =
patrick@0
   757
    
patrick@0
   758
    ## The subtitle of a document
patrick@0
   759
    element subtitle { db.subtitle.attlist, db.all.inlines* }
patrick@0
   760
}
patrick@0
   761
div {
patrick@0
   762
  db.info.role.attribute = attribute role { text }
patrick@0
   763
  db.info.attlist = db.info.role.attribute? & db.common.attributes
patrick@0
   764
  db.info =
patrick@0
   765
    
patrick@0
   766
    ## A wrapper for information about a component or other block
patrick@0
   767
    element info { db.info.attlist, (db._title & db.info.elements*) }
patrick@0
   768
}
patrick@0
   769
div {
patrick@0
   770
  db.titlereq.info.role.attribute = attribute role { text }
patrick@0
   771
  db.titlereq.info.attlist =
patrick@0
   772
    db.titlereq.info.role.attribute? & db.common.attributes
patrick@0
   773
  db.titlereq.info =
patrick@0
   774
    
patrick@0
   775
    ## A wrapper for information about a component or other block with a required title
patrick@0
   776
    element info {
patrick@0
   777
      db.titlereq.info.attlist, (db._title.req & db.info.elements*)
patrick@0
   778
    }
patrick@0
   779
}
patrick@0
   780
div {
patrick@0
   781
  db.titleonly.info.role.attribute = attribute role { text }
patrick@0
   782
  db.titleonly.info.attlist =
patrick@0
   783
    db.titleonly.info.role.attribute? & db.common.attributes
patrick@0
   784
  db.titleonly.info =
patrick@0
   785
    
patrick@0
   786
    ## A wrapper for information about a component or other block with only a title
patrick@0
   787
    element info {
patrick@0
   788
      db.titleonly.info.attlist, (db._title.only & db.info.elements*)
patrick@0
   789
    }
patrick@0
   790
}
patrick@0
   791
div {
patrick@0
   792
  db.titleonlyreq.info.role.attribute = attribute role { text }
patrick@0
   793
  db.titleonlyreq.info.attlist =
patrick@0
   794
    db.titleonlyreq.info.role.attribute? & db.common.attributes
patrick@0
   795
  db.titleonlyreq.info =
patrick@0
   796
    
patrick@0
   797
    ## A wrapper for information about a component or other block with only a required title
patrick@0
   798
    element info {
patrick@0
   799
      db.titleonlyreq.info.attlist,
patrick@0
   800
      (db._title.onlyreq & db.info.elements*)
patrick@0
   801
    }
patrick@0
   802
}
patrick@0
   803
div {
patrick@0
   804
  db.titleforbidden.info.role.attribute = attribute role { text }
patrick@0
   805
  db.titleforbidden.info.attlist =
patrick@0
   806
    db.titleforbidden.info.role.attribute? & db.common.attributes
patrick@0
   807
  db.titleforbidden.info =
patrick@0
   808
    
patrick@0
   809
    ## A wrapper for information about a component or other block without a title
patrick@0
   810
    element info { db.titleforbidden.info.attlist, db.info.elements* }
patrick@0
   811
}
patrick@0
   812
div {
patrick@0
   813
  db.subjectset.role.attribute = attribute role { text }
patrick@0
   814
  db.subjectset.scheme.attribute =
patrick@0
   815
    
patrick@0
   816
    ## Identifies the controlled vocabulary used by this set's terms
patrick@0
   817
    attribute scheme { xsd:NMTOKEN }
patrick@0
   818
  db.subjectset.attlist =
patrick@0
   819
    db.subjectset.role.attribute?
patrick@0
   820
    & db.common.attributes
patrick@0
   821
    & db.common.linking.attributes
patrick@0
   822
    & db.subjectset.scheme.attribute?
patrick@0
   823
  db.subjectset =
patrick@0
   824
    
patrick@0
   825
    ## A set of terms describing the subject matter of a document
patrick@0
   826
    element subjectset { db.subjectset.attlist, db.subject+ }
patrick@0
   827
}
patrick@0
   828
div {
patrick@0
   829
  db.subject.role.attribute = attribute role { text }
patrick@0
   830
  db.subject.weight.attribute =
patrick@0
   831
    
patrick@0
   832
    ## Specifies a ranking for this subject relative to other subjects in the same set
patrick@0
   833
    attribute weight { text }
patrick@0
   834
  db.subject.attlist =
patrick@0
   835
    db.subject.role.attribute?
patrick@0
   836
    & db.common.attributes
patrick@0
   837
    & db.common.linking.attributes
patrick@0
   838
    & db.subject.weight.attribute?
patrick@0
   839
  db.subject =
patrick@0
   840
    
patrick@0
   841
    ## One of a group of terms describing the subject matter of a document
patrick@0
   842
    element subject { db.subject.attlist, db.subjectterm+ }
patrick@0
   843
}
patrick@0
   844
div {
patrick@0
   845
  db.subjectterm.role.attribute = attribute role { text }
patrick@0
   846
  db.subjectterm.attlist =
patrick@0
   847
    db.subjectterm.role.attribute?
patrick@0
   848
    & db.common.attributes
patrick@0
   849
    & db.common.linking.attributes
patrick@0
   850
  db.subjectterm =
patrick@0
   851
    
patrick@0
   852
    ## A term in a group of terms describing the subject matter of a document
patrick@0
   853
    element subjectterm { db.subjectterm.attlist, text }
patrick@0
   854
}
patrick@0
   855
div {
patrick@0
   856
  db.keywordset.role.attribute = attribute role { text }
patrick@0
   857
  db.keywordset.attlist =
patrick@0
   858
    db.keywordset.role.attribute?
patrick@0
   859
    & db.common.attributes
patrick@0
   860
    & db.common.linking.attributes
patrick@0
   861
  db.keywordset =
patrick@0
   862
    
patrick@0
   863
    ## A set of keywords describing the content of a document
patrick@0
   864
    element keywordset { db.keywordset.attlist, db.keyword+ }
patrick@0
   865
}
patrick@0
   866
div {
patrick@0
   867
  db.keyword.role.attribute = attribute role { text }
patrick@0
   868
  db.keyword.attlist =
patrick@0
   869
    db.keyword.role.attribute?
patrick@0
   870
    & db.common.attributes
patrick@0
   871
    & db.common.linking.attributes
patrick@0
   872
  db.keyword =
patrick@0
   873
    
patrick@0
   874
    ## One of a set of keywords describing the content of a document
patrick@0
   875
    element keyword { db.keyword.attlist, text }
patrick@0
   876
}
patrick@0
   877
db.table.choice = notAllowed | db.cals.table | db.html.table
patrick@0
   878
db.informaltable.choice =
patrick@0
   879
  notAllowed | db.cals.informaltable | db.html.informaltable
patrick@0
   880
db.table = db.table.choice
patrick@0
   881
db.informaltable = db.informaltable.choice
patrick@0
   882
div {
patrick@0
   883
  db.procedure.role.attribute = attribute role { text }
patrick@0
   884
  db.procedure.attlist =
patrick@0
   885
    db.procedure.role.attribute?
patrick@0
   886
    & db.common.attributes
patrick@0
   887
    & db.common.linking.attributes
patrick@0
   888
  db.procedure.info = db._info.title.only
patrick@0
   889
  db.procedure =
patrick@0
   890
    
patrick@0
   891
    ## A list of operations to be performed in a well-defined sequence
patrick@0
   892
    element procedure {
patrick@0
   893
      db.procedure.attlist, db.procedure.info, db.all.blocks*, db.step+
patrick@0
   894
    }
patrick@0
   895
}
patrick@0
   896
div {
patrick@0
   897
  db.step.role.attribute = attribute role { text }
patrick@0
   898
  db.step.attlist =
patrick@0
   899
    db.step.role.attribute?
patrick@0
   900
    & db.common.attributes
patrick@0
   901
    & db.common.linking.attributes
patrick@0
   902
    & db.performance.attribute?
patrick@0
   903
  db.step.info = db._info.title.only
patrick@0
   904
  # 
patrick@0
   905
  # This content model is blocks*, step|stepalternatives, blocks* but
patrick@0
   906
  # expressed this way it avoids UPA issues in XSD and DTD versions
patrick@0
   907
  db.step =
patrick@0
   908
    
patrick@0
   909
    ## A unit of action in a procedure
patrick@0
   910
    element step {
patrick@0
   911
      db.step.attlist,
patrick@0
   912
      db.step.info,
patrick@0
   913
      ((db.all.blocks+,
patrick@0
   914
        ((db.substeps | db.stepalternatives), db.all.blocks*)?)
patrick@0
   915
       | ((db.substeps | db.stepalternatives), db.all.blocks*))
patrick@0
   916
    }
patrick@0
   917
}
patrick@0
   918
div {
patrick@0
   919
  db.stepalternatives.role.attribute = attribute role { text }
patrick@0
   920
  db.stepalternatives.attlist =
patrick@0
   921
    db.stepalternatives.role.attribute?
patrick@0
   922
    & db.common.attributes
patrick@0
   923
    & db.common.linking.attributes
patrick@0
   924
    & db.performance.attribute?
patrick@0
   925
  db.stepalternatives.info = db._info.title.forbidden
patrick@0
   926
  db.stepalternatives =
patrick@0
   927
    
patrick@0
   928
    ## Alternative steps in a procedure
patrick@0
   929
    element stepalternatives {
patrick@0
   930
      db.stepalternatives.attlist, db.stepalternatives.info, db.step+
patrick@0
   931
    }
patrick@0
   932
}
patrick@0
   933
div {
patrick@0
   934
  db.substeps.role.attribute = attribute role { text }
patrick@0
   935
  db.substeps.attlist =
patrick@0
   936
    db.substeps.role.attribute?
patrick@0
   937
    & db.common.attributes
patrick@0
   938
    & db.common.linking.attributes
patrick@0
   939
    & db.performance.attribute?
patrick@0
   940
  db.substeps =
patrick@0
   941
    
patrick@0
   942
    ## A wrapper for steps that occur within steps in a procedure
patrick@0
   943
    element substeps { db.substeps.attlist, db.step+ }
patrick@0
   944
}
patrick@0
   945
div {
patrick@0
   946
  db.sidebar.floatstyle.attribute = db.floatstyle.attribute
patrick@0
   947
  db.sidebar.role.attribute = attribute role { text }
patrick@0
   948
  db.sidebar.attlist =
patrick@0
   949
    db.sidebar.role.attribute?
patrick@0
   950
    & db.sidebar.floatstyle.attribute?
patrick@0
   951
    & db.common.attributes
patrick@0
   952
    & db.common.linking.attributes
patrick@0
   953
  db.sidebar.info = db._info
patrick@0
   954
  db.sidebar =
patrick@0
   955
    
patrick@0
   956
    ## A portion of a document that is isolated from the main narrative flow
patrick@0
   957
    element sidebar {
patrick@0
   958
      db.sidebar.attlist, db.sidebar.info, db.all.blocks+
patrick@0
   959
    }
patrick@0
   960
}
patrick@0
   961
div {
patrick@0
   962
  db.abstract.role.attribute = attribute role { text }
patrick@0
   963
  db.abstract.attlist =
patrick@0
   964
    db.abstract.role.attribute?
patrick@0
   965
    & db.common.attributes
patrick@0
   966
    & db.common.linking.attributes
patrick@0
   967
  db.abstract.info = db._info.title.only
patrick@0
   968
  db.abstract =
patrick@0
   969
    
patrick@0
   970
    ## A summary
patrick@0
   971
    element abstract {
patrick@0
   972
      db.abstract.attlist, db.abstract.info, db.para.blocks+
patrick@0
   973
    }
patrick@0
   974
}
patrick@0
   975
div {
patrick@0
   976
  db.personblurb.role.attribute = attribute role { text }
patrick@0
   977
  db.personblurb.attlist =
patrick@0
   978
    db.personblurb.role.attribute?
patrick@0
   979
    & db.common.attributes
patrick@0
   980
    & db.common.linking.attributes
patrick@0
   981
  db.personblurb.info = db._info.title.only
patrick@0
   982
  db.personblurb =
patrick@0
   983
    
patrick@0
   984
    ## A short description or note about a person
patrick@0
   985
    element personblurb {
patrick@0
   986
      db.personblurb.attlist, db.personblurb.info, db.para.blocks+
patrick@0
   987
    }
patrick@0
   988
}
patrick@0
   989
div {
patrick@0
   990
  db.blockquote.role.attribute = attribute role { text }
patrick@0
   991
  db.blockquote.attlist =
patrick@0
   992
    db.blockquote.role.attribute?
patrick@0
   993
    & db.common.attributes
patrick@0
   994
    & db.common.linking.attributes
patrick@0
   995
  db.blockquote.info = db._info.title.only
patrick@0
   996
  db.blockquote =
patrick@0
   997
    
patrick@0
   998
    ## A quotation set off from the main text
patrick@0
   999
    element blockquote {
patrick@0
  1000
      db.blockquote.attlist,
patrick@0
  1001
      db.blockquote.info,
patrick@0
  1002
      db.attribution?,
patrick@0
  1003
      db.all.blocks+
patrick@0
  1004
    }
patrick@0
  1005
}
patrick@0
  1006
div {
patrick@0
  1007
  db.attribution.role.attribute = attribute role { text }
patrick@0
  1008
  db.attribution.attlist =
patrick@0
  1009
    db.attribution.role.attribute?
patrick@0
  1010
    & db.common.attributes
patrick@0
  1011
    & db.common.linking.attributes
patrick@0
  1012
  db.attribution =
patrick@0
  1013
    
patrick@0
  1014
    ## The source of a block quote or epigraph
patrick@0
  1015
    element attribution {
patrick@0
  1016
      db.attribution.attlist,
patrick@0
  1017
      (db._text
patrick@0
  1018
       | db.person
patrick@0
  1019
       | db.personname
patrick@0
  1020
       | db.citetitle
patrick@0
  1021
       | db.citation)*
patrick@0
  1022
    }
patrick@0
  1023
}
patrick@0
  1024
div {
patrick@0
  1025
  db.bridgehead.renderas.enumeration =
patrick@0
  1026
    
patrick@0
  1027
    ## Render as a first-level section
patrick@0
  1028
    "sect1"
patrick@0
  1029
    | 
patrick@0
  1030
      ## Render as a second-level section
patrick@0
  1031
      "sect2"
patrick@0
  1032
    | 
patrick@0
  1033
      ## Render as a third-level section
patrick@0
  1034
      "sect3"
patrick@0
  1035
    | 
patrick@0
  1036
      ## Render as a fourth-level section
patrick@0
  1037
      "sect4"
patrick@0
  1038
    | 
patrick@0
  1039
      ## Render as a fifth-level section
patrick@0
  1040
      "sect5"
patrick@0
  1041
  db.bridgehead.renderas-enum.attribute =
patrick@0
  1042
    
patrick@0
  1043
    ## Indicates how the bridge head should be rendered
patrick@0
  1044
    attribute renderas { db.bridgehead.renderas.enumeration }?
patrick@0
  1045
  db.bridgehead.renderas-other.attribute =
patrick@0
  1046
    
patrick@0
  1047
    ## Identifies the nature of the non-standard rendering
patrick@0
  1048
    attribute otherrenderas { xsd:NMTOKEN }
patrick@0
  1049
  db.bridgehead.renderas-other.attributes =
patrick@0
  1050
    
patrick@0
  1051
    ## Indicates how the bridge head should be rendered
patrick@0
  1052
    attribute renderas {
patrick@0
  1053
      
patrick@0
  1054
      ## Identifies a non-standard rendering
patrick@0
  1055
      "other"
patrick@0
  1056
    }
patrick@0
  1057
    & db.bridgehead.renderas-other.attribute
patrick@0
  1058
  db.bridgehead.renderas.attribute =
patrick@0
  1059
    db.bridgehead.renderas-enum.attribute
patrick@0
  1060
    | db.bridgehead.renderas-other.attributes
patrick@0
  1061
  db.bridgehead.role.attribute = attribute role { text }
patrick@0
  1062
  db.bridgehead.attlist =
patrick@0
  1063
    db.bridgehead.role.attribute?
patrick@0
  1064
    & db.common.attributes
patrick@0
  1065
    & db.common.linking.attributes
patrick@0
  1066
    & db.bridgehead.renderas.attribute?
patrick@0
  1067
  db.bridgehead =
patrick@0
  1068
    
patrick@0
  1069
    ## A free-floating heading
patrick@0
  1070
    element bridgehead { db.bridgehead.attlist, db.all.inlines* }
patrick@0
  1071
}
patrick@0
  1072
div {
patrick@0
  1073
  db.remark.role.attribute = attribute role { text }
patrick@0
  1074
  db.remark.attlist =
patrick@0
  1075
    db.remark.role.attribute?
patrick@0
  1076
    & db.common.attributes
patrick@0
  1077
    & db.common.linking.attributes
patrick@0
  1078
  db.remark =
patrick@0
  1079
    
patrick@0
  1080
    ## A remark (or comment) intended for presentation in a draft manuscript
patrick@0
  1081
    element remark { db.remark.attlist, db.all.inlines* }
patrick@0
  1082
}
patrick@0
  1083
div {
patrick@0
  1084
  db.epigraph.role.attribute = attribute role { text }
patrick@0
  1085
  db.epigraph.attlist =
patrick@0
  1086
    db.epigraph.role.attribute?
patrick@0
  1087
    & db.common.attributes
patrick@0
  1088
    & db.common.linking.attributes
patrick@0
  1089
  db.epigraph.info = db._info.title.forbidden
patrick@0
  1090
  db.epigraph =
patrick@0
  1091
    
patrick@0
  1092
    ## A short inscription at the beginning of a document or component
patrick@0
  1093
    element epigraph {
patrick@0
  1094
      db.epigraph.attlist,
patrick@0
  1095
      db.epigraph.info,
patrick@0
  1096
      db.attribution?,
patrick@0
  1097
      (db.para.blocks | db.literallayout)+
patrick@0
  1098
    }
patrick@0
  1099
}
patrick@0
  1100
div {
patrick@0
  1101
  db.footnote.role.attribute = attribute role { text }
patrick@0
  1102
  db.footnote.label.attribute =
patrick@0
  1103
    
patrick@0
  1104
    ## Identifies the desired footnote mark
patrick@0
  1105
    attribute label { xsd:NMTOKEN }
patrick@0
  1106
  db.footnote.attlist =
patrick@0
  1107
    db.footnote.role.attribute?
patrick@0
  1108
    & db.common.attributes
patrick@0
  1109
    & db.common.linking.attributes
patrick@0
  1110
    & db.footnote.label.attribute?
patrick@0
  1111
  db.footnote =
patrick@0
  1112
    
patrick@0
  1113
    ## A footnote
patrick@0
  1114
    element footnote { db.footnote.attlist, db.all.blocks+ }
patrick@0
  1115
}
patrick@0
  1116
div {
patrick@0
  1117
  db.formalpara.role.attribute = attribute role { text }
patrick@0
  1118
  db.formalpara.attlist =
patrick@0
  1119
    db.formalpara.role.attribute?
patrick@0
  1120
    & db.common.attributes
patrick@0
  1121
    & db.common.linking.attributes
patrick@0
  1122
  db.formalpara.info = db._info.title.onlyreq
patrick@0
  1123
  db.formalpara =
patrick@0
  1124
    
patrick@0
  1125
    ## A paragraph with a title
patrick@0
  1126
    element formalpara {
patrick@0
  1127
      db.formalpara.attlist,
patrick@0
  1128
      db.formalpara.info,
patrick@0
  1129
      db.indexing.inlines*,
patrick@0
  1130
      db.para
patrick@0
  1131
    }
patrick@0
  1132
}
patrick@0
  1133
div {
patrick@0
  1134
  db.para.role.attribute = attribute role { text }
patrick@0
  1135
  db.para.attlist =
patrick@0
  1136
    db.para.role.attribute?
patrick@0
  1137
    & db.common.attributes
patrick@0
  1138
    & db.common.linking.attributes
patrick@0
  1139
  db.para.info = db._info.title.forbidden
patrick@0
  1140
  db.para =
patrick@0
  1141
    
patrick@0
  1142
    ## A paragraph
patrick@0
  1143
    element para {
patrick@0
  1144
      db.para.attlist,
patrick@0
  1145
      db.para.info,
patrick@0
  1146
      (db.all.inlines | db.nopara.blocks)*
patrick@0
  1147
    }
patrick@0
  1148
}
patrick@0
  1149
div {
patrick@0
  1150
  db.simpara.role.attribute = attribute role { text }
patrick@0
  1151
  db.simpara.attlist =
patrick@0
  1152
    db.simpara.role.attribute?
patrick@0
  1153
    & db.common.attributes
patrick@0
  1154
    & db.common.linking.attributes
patrick@0
  1155
  db.simpara.info = db._info.title.forbidden
patrick@0
  1156
  db.simpara =
patrick@0
  1157
    
patrick@0
  1158
    ## A paragraph that contains only text and inline markup, no block elements
patrick@0
  1159
    element simpara {
patrick@0
  1160
      db.simpara.attlist, db.simpara.info, db.all.inlines*
patrick@0
  1161
    }
patrick@0
  1162
}
patrick@0
  1163
div {
patrick@0
  1164
  db.itemizedlist.role.attribute = attribute role { text }
patrick@0
  1165
  db.itemizedlist.mark.attribute =
patrick@0
  1166
    
patrick@0
  1167
    ## Identifies the type of mark to be used on items in this list
patrick@0
  1168
    attribute mark { xsd:NMTOKEN }
patrick@0
  1169
  db.itemizedlist.attlist =
patrick@0
  1170
    db.itemizedlist.role.attribute?
patrick@0
  1171
    & db.common.attributes
patrick@0
  1172
    & db.common.linking.attributes
patrick@0
  1173
    & db.spacing.attribute?
patrick@0
  1174
    & db.itemizedlist.mark.attribute?
patrick@0
  1175
  db.itemizedlist.info = db._info.title.only
patrick@0
  1176
  db.itemizedlist =
patrick@0
  1177
    
patrick@0
  1178
    ## A list in which each entry is marked with a bullet or other dingbat
patrick@0
  1179
    element itemizedlist {
patrick@0
  1180
      db.itemizedlist.attlist,
patrick@0
  1181
      db.itemizedlist.info,
patrick@0
  1182
      db.all.blocks*,
patrick@0
  1183
      db.listitem+
patrick@0
  1184
    }
patrick@0
  1185
}
patrick@0
  1186
div {
patrick@0
  1187
  db.orderedlist.role.attribute = attribute role { text }
patrick@0
  1188
  db.orderedlist.continuation.enumeration =
patrick@0
  1189
    
patrick@0
  1190
    ## Specifies that numbering should begin where the preceding list left off
patrick@0
  1191
    "continues"
patrick@0
  1192
    | 
patrick@0
  1193
      ## Specifies that numbering should begin again at 1
patrick@0
  1194
      "restarts"
patrick@0
  1195
  db.orderedlist.continuation.attribute =
patrick@0
  1196
    
patrick@0
  1197
    ## Indicates how list numbering should begin relative to the immediately preceding list
patrick@0
  1198
    attribute continuation { db.orderedlist.continuation.enumeration }
patrick@0
  1199
  db.orderedlist.startingnumber.attribute =
patrick@0
  1200
    
patrick@0
  1201
    ## Specifies the initial line number.
patrick@0
  1202
    attribute startingnumber { xsd:integer }
patrick@0
  1203
  db.orderedlist.inheritnum.enumeration =
patrick@0
  1204
    
patrick@0
  1205
    ## Specifies that numbering should ignore list nesting
patrick@0
  1206
    "ignore"
patrick@0
  1207
    | 
patrick@0
  1208
      ## Specifies that numbering should inherit from outer-level lists
patrick@0
  1209
      "inherit"
patrick@0
  1210
  db.orderedlist.inheritnum.attribute =
patrick@0
  1211
    
patrick@0
  1212
    ## Indicates whether or not item numbering should be influenced by list nesting
patrick@0
  1213
    attribute inheritnum { db.orderedlist.inheritnum.enumeration }
patrick@0
  1214
  db.orderedlist.numeration.enumeration =
patrick@0
  1215
    
patrick@0
  1216
    ## Specifies Arabic numeration (1, 2, 3, …)
patrick@0
  1217
    "arabic"
patrick@0
  1218
    | 
patrick@0
  1219
      ## Specifies upper-case alphabetic numeration (A, B, C, …)
patrick@0
  1220
      "upperalpha"
patrick@0
  1221
    | 
patrick@0
  1222
      ## Specifies lower-case alphabetic numeration (a, b, c, …)
patrick@0
  1223
      "loweralpha"
patrick@0
  1224
    | 
patrick@0
  1225
      ## Specifies upper-case Roman numeration (I, II, III, …)
patrick@0
  1226
      "upperroman"
patrick@0
  1227
    | 
patrick@0
  1228
      ## Specifies lower-case Roman numeration (i, ii, iii …)
patrick@0
  1229
      "lowerroman"
patrick@0
  1230
  db.orderedlist.numeration.attribute =
patrick@0
  1231
    
patrick@0
  1232
    ## Indicates the desired numeration
patrick@0
  1233
    attribute numeration { db.orderedlist.numeration.enumeration }
patrick@0
  1234
  db.orderedlist.attlist =
patrick@0
  1235
    db.orderedlist.role.attribute?
patrick@0
  1236
    & db.common.attributes
patrick@0
  1237
    & db.common.linking.attributes
patrick@0
  1238
    & db.spacing.attribute?
patrick@0
  1239
    & (db.orderedlist.continuation.attribute
patrick@0
  1240
       | db.orderedlist.startingnumber.attribute)?
patrick@0
  1241
    & db.orderedlist.inheritnum.attribute?
patrick@0
  1242
    & db.orderedlist.numeration.attribute?
patrick@0
  1243
  db.orderedlist.info = db._info.title.only
patrick@0
  1244
  db.orderedlist =
patrick@0
  1245
    
patrick@0
  1246
    ## A list in which each entry is marked with a sequentially incremented label
patrick@0
  1247
    element orderedlist {
patrick@0
  1248
      db.orderedlist.attlist,
patrick@0
  1249
      db.orderedlist.info,
patrick@0
  1250
      db.all.blocks*,
patrick@0
  1251
      db.listitem+
patrick@0
  1252
    }
patrick@0
  1253
}
patrick@0
  1254
div {
patrick@0
  1255
  db.listitem.role.attribute = attribute role { text }
patrick@0
  1256
  db.listitem.override.attribute =
patrick@0
  1257
    
patrick@0
  1258
    ## Specifies the keyword for the type of mark that should be used on this
patrick@0
  1259
    ##  item, instead of the mark that would be used by default
patrick@0
  1260
    attribute override { xsd:NMTOKEN }
patrick@0
  1261
  db.listitem.attlist =
patrick@0
  1262
    db.listitem.role.attribute?
patrick@0
  1263
    & db.common.attributes
patrick@0
  1264
    & db.common.linking.attributes
patrick@0
  1265
    & db.listitem.override.attribute?
patrick@0
  1266
  db.listitem =
patrick@0
  1267
    
patrick@0
  1268
    ## A wrapper for the elements of a list item
patrick@0
  1269
    element listitem { db.listitem.attlist, db.all.blocks+ }
patrick@0
  1270
}
patrick@0
  1271
div {
patrick@0
  1272
  db.segmentedlist.role.attribute = attribute role { text }
patrick@0
  1273
  db.segmentedlist.attlist =
patrick@0
  1274
    db.segmentedlist.role.attribute?
patrick@0
  1275
    & db.common.attributes
patrick@0
  1276
    & db.common.linking.attributes
patrick@0
  1277
  db.segmentedlist.info = db._info.title.only
patrick@0
  1278
  db.segmentedlist =
patrick@0
  1279
    
patrick@0
  1280
    ## A segmented list, a list of sets of elements
patrick@0
  1281
    element segmentedlist {
patrick@0
  1282
      db.segmentedlist.attlist,
patrick@0
  1283
      db.segmentedlist.info,
patrick@0
  1284
      db.segtitle+,
patrick@0
  1285
      db.seglistitem+
patrick@0
  1286
    }
patrick@0
  1287
}
patrick@0
  1288
div {
patrick@0
  1289
  db.segtitle.role.attribute = attribute role { text }
patrick@0
  1290
  db.segtitle.attlist =
patrick@0
  1291
    db.segtitle.role.attribute?
patrick@0
  1292
    & db.common.attributes
patrick@0
  1293
    & db.common.linking.attributes
patrick@0
  1294
  db.segtitle =
patrick@0
  1295
    
patrick@0
  1296
    ## The title of an element of a list item in a segmented list
patrick@0
  1297
    element segtitle { db.segtitle.attlist, db.all.inlines* }
patrick@0
  1298
}
patrick@0
  1299
div {
patrick@0
  1300
  db.seglistitem.role.attribute = attribute role { text }
patrick@0
  1301
  db.seglistitem.attlist =
patrick@0
  1302
    db.seglistitem.role.attribute?
patrick@0
  1303
    & db.common.attributes
patrick@0
  1304
    & db.common.linking.attributes
patrick@0
  1305
  db.seglistitem =
patrick@0
  1306
    
patrick@0
  1307
    ## A list item in a segmented list
patrick@0
  1308
    element seglistitem { db.seglistitem.attlist, db.seg+ }
patrick@0
  1309
}
patrick@0
  1310
div {
patrick@0
  1311
  db.seg.role.attribute = attribute role { text }
patrick@0
  1312
  db.seg.attlist =
patrick@0
  1313
    db.seg.role.attribute?
patrick@0
  1314
    & db.common.attributes
patrick@0
  1315
    & db.common.linking.attributes
patrick@0
  1316
  db.seg =
patrick@0
  1317
    
patrick@0
  1318
    ## An element of a list item in a segmented list
patrick@0
  1319
    element seg { db.seg.attlist, db.all.inlines* }
patrick@0
  1320
}
patrick@0
  1321
div {
patrick@0
  1322
  db.simplelist.role.attribute = attribute role { text }
patrick@0
  1323
  db.simplelist.type.enumeration =
patrick@0
  1324
    
patrick@0
  1325
    ## A tabular presentation in row-major order.
patrick@0
  1326
    "horiz"
patrick@0
  1327
    | 
patrick@0
  1328
      ## A tabular presentation in column-major order.
patrick@0
  1329
      "vert"
patrick@0
  1330
    | 
patrick@0
  1331
      ## An inline presentation, usually a comma-delimited list.
patrick@0
  1332
      "inline"
patrick@0
  1333
  db.simplelist.type.attribute =
patrick@0
  1334
    
patrick@0
  1335
    ## Specifies the type of list presentation.
patrick@0
  1336
    [ a:defaultValue = "vert" ]
patrick@0
  1337
    attribute type { db.simplelist.type.enumeration }
patrick@0
  1338
  db.simplelist.columns.attribute =
patrick@0
  1339
    
patrick@0
  1340
    ## Specifies the number of columns for horizontal or vertical presentation
patrick@0
  1341
    attribute columns { xsd:integer }
patrick@0
  1342
  db.simplelist.attlist =
patrick@0
  1343
    db.simplelist.role.attribute?
patrick@0
  1344
    & db.common.attributes
patrick@0
  1345
    & db.common.linking.attributes
patrick@0
  1346
    & db.simplelist.type.attribute?
patrick@0
  1347
    & db.simplelist.columns.attribute?
patrick@0
  1348
  db.simplelist =
patrick@0
  1349
    
patrick@0
  1350
    ## An undecorated list of single words or short phrases
patrick@0
  1351
    element simplelist { db.simplelist.attlist, db.member+ }
patrick@0
  1352
}
patrick@0
  1353
div {
patrick@0
  1354
  db.member.role.attribute = attribute role { text }
patrick@0
  1355
  db.member.attlist =
patrick@0
  1356
    db.member.role.attribute?
patrick@0
  1357
    & db.common.attributes
patrick@0
  1358
    & db.common.linking.attributes
patrick@0
  1359
  db.member =
patrick@0
  1360
    
patrick@0
  1361
    ## An element of a simple list
patrick@0
  1362
    element member { db.member.attlist, db.all.inlines* }
patrick@0
  1363
}
patrick@0
  1364
div {
patrick@0
  1365
  db.variablelist.role.attribute = attribute role { text }
patrick@0
  1366
  db.variablelist.termlength.attribute =
patrick@0
  1367
    
patrick@0
  1368
    ## Indicates a length beyond which the presentation system may consider a term too long and select an alternate presentation for that term, item, or list
patrick@0
  1369
    attribute termlength { text }
patrick@0
  1370
  db.variablelist.attlist =
patrick@0
  1371
    db.variablelist.role.attribute?
patrick@0
  1372
    & db.common.attributes
patrick@0
  1373
    & db.common.linking.attributes
patrick@0
  1374
    & db.spacing.attribute?
patrick@0
  1375
    & db.variablelist.termlength.attribute?
patrick@0
  1376
  db.variablelist.info = db._info.title.only
patrick@0
  1377
  db.variablelist =
patrick@0
  1378
    
patrick@0
  1379
    ## A list in which each entry is composed of a set of one or more terms and an associated description
patrick@0
  1380
    element variablelist {
patrick@0
  1381
      db.variablelist.attlist,
patrick@0
  1382
      db.variablelist.info,
patrick@0
  1383
      db.all.blocks*,
patrick@0
  1384
      db.varlistentry+
patrick@0
  1385
    }
patrick@0
  1386
}
patrick@0
  1387
div {
patrick@0
  1388
  db.varlistentry.role.attribute = attribute role { text }
patrick@0
  1389
  db.varlistentry.attlist =
patrick@0
  1390
    db.varlistentry.role.attribute?
patrick@0
  1391
    & db.common.attributes
patrick@0
  1392
    & db.common.linking.attributes
patrick@0
  1393
  db.varlistentry =
patrick@0
  1394
    
patrick@0
  1395
    ## A wrapper for a set of terms and the associated description in a variable list
patrick@0
  1396
    element varlistentry {
patrick@0
  1397
      db.varlistentry.attlist, db.term+, db.listitem
patrick@0
  1398
    }
patrick@0
  1399
}
patrick@0
  1400
div {
patrick@0
  1401
  db.term.role.attribute = attribute role { text }
patrick@0
  1402
  db.term.attlist =
patrick@0
  1403
    db.term.role.attribute?
patrick@0
  1404
    & db.common.attributes
patrick@0
  1405
    & db.common.linking.attributes
patrick@0
  1406
  db.term =
patrick@0
  1407
    
patrick@0
  1408
    ## The word or phrase being defined or described in a variable list
patrick@0
  1409
    element term { db.term.attlist, db.all.inlines* }
patrick@0
  1410
}
patrick@0
  1411
div {
patrick@0
  1412
  db.example.role.attribute = attribute role { text }
patrick@0
  1413
  db.example.label.attribute = db.label.attribute
patrick@0
  1414
  db.example.width.attribute = db.width.characters.attribute
patrick@0
  1415
  db.example.pgwide.attribute = db.pgwide.attribute
patrick@0
  1416
  db.example.floatstyle.attribute = db.floatstyle.attribute
patrick@0
  1417
  db.example.attlist =
patrick@0
  1418
    db.example.role.attribute?
patrick@0
  1419
    & db.common.attributes
patrick@0
  1420
    & db.common.linking.attributes
patrick@0
  1421
    & db.example.label.attribute?
patrick@0
  1422
    & db.example.floatstyle.attribute?
patrick@0
  1423
    & (db.example.width.attribute | db.example.pgwide.attribute)?
patrick@0
  1424
  db.example.info = db._info.title.onlyreq
patrick@0
  1425
  db.example =
patrick@0
  1426
    
patrick@0
  1427
    ## A formal example, with a title
patrick@0
  1428
    element example {
patrick@0
  1429
      db.example.attlist, db.example.info, db.all.blocks+, db.caption?
patrick@0
  1430
    }
patrick@0
  1431
}
patrick@0
  1432
div {
patrick@0
  1433
  db.informalexample.role.attribute = attribute role { text }
patrick@0
  1434
  db.informalexample.width.attribute = db.width.characters.attribute
patrick@0
  1435
  db.informalexample.floatstyle.attribute = db.floatstyle.attribute
patrick@0
  1436
  db.informalexample.attlist =
patrick@0
  1437
    db.informalexample.role.attribute?
patrick@0
  1438
    & db.common.attributes
patrick@0
  1439
    & db.common.linking.attributes
patrick@0
  1440
    & db.informalexample.floatstyle.attribute?
patrick@0
  1441
    & db.informalexample.width.attribute?
patrick@0
  1442
  db.informalexample.info = db._info.title.forbidden
patrick@0
  1443
  db.informalexample =
patrick@0
  1444
    
patrick@0
  1445
    ## A displayed example without a title
patrick@0
  1446
    element informalexample {
patrick@0
  1447
      db.informalexample.attlist,
patrick@0
  1448
      db.informalexample.info,
patrick@0
  1449
      db.all.blocks+,
patrick@0
  1450
      db.caption?
patrick@0
  1451
    }
patrick@0
  1452
}
patrick@0
  1453
db.verbatim.inlines = (db.all.inlines | db.lineannotation) | db.co
patrick@0
  1454
db.verbatim.contentmodel =
patrick@0
  1455
  db._info.title.forbidden, (db.textobject | db.verbatim.inlines*)
patrick@0
  1456
div {
patrick@0
  1457
  db.literallayout.role.attribute = attribute role { text }
patrick@0
  1458
  db.literallayout.class.enumeration =
patrick@0
  1459
    
patrick@0
  1460
    ## The literal layout should be formatted with a monospaced font
patrick@0
  1461
    "monospaced"
patrick@0
  1462
    | 
patrick@0
  1463
      ## The literal layout should be formatted with the current font
patrick@0
  1464
      "normal"
patrick@0
  1465
  db.literallayout.class.attribute =
patrick@0
  1466
    
patrick@0
  1467
    ## Specifies the class of literal layout
patrick@0
  1468
    attribute class { db.literallayout.class.enumeration }
patrick@0
  1469
  db.literallayout.attlist =
patrick@0
  1470
    db.literallayout.role.attribute?
patrick@0
  1471
    & db.common.attributes
patrick@0
  1472
    & db.common.linking.attributes
patrick@0
  1473
    & db.verbatim.attributes
patrick@0
  1474
    & db.literallayout.class.attribute?
patrick@0
  1475
  db.literallayout =
patrick@0
  1476
    
patrick@0
  1477
    ## A block of text in which line breaks and white space are to be reproduced faithfully
patrick@0
  1478
    element literallayout {
patrick@0
  1479
      db.literallayout.attlist, db.verbatim.contentmodel
patrick@0
  1480
    }
patrick@0
  1481
}
patrick@0
  1482
div {
patrick@0
  1483
  db.screen.role.attribute = attribute role { text }
patrick@0
  1484
  db.screen.width.attribute = db.width.characters.attribute
patrick@0
  1485
  db.screen.attlist =
patrick@0
  1486
    db.screen.role.attribute?
patrick@0
  1487
    & db.common.attributes
patrick@0
  1488
    & db.common.linking.attributes
patrick@0
  1489
    & db.verbatim.attributes
patrick@0
  1490
    & db.screen.width.attribute?
patrick@0
  1491
  db.screen =
patrick@0
  1492
    
patrick@0
  1493
    ## Text that a user sees or might see on a computer screen
patrick@0
  1494
    element screen { db.screen.attlist, db.verbatim.contentmodel }
patrick@0
  1495
}
patrick@0
  1496
div {
patrick@0
  1497
  db.screenshot.role.attribute = attribute role { text }
patrick@0
  1498
  db.screenshot.attlist =
patrick@0
  1499
    db.screenshot.role.attribute?
patrick@0
  1500
    & db.common.attributes
patrick@0
  1501
    & db.common.linking.attributes
patrick@0
  1502
  db.screenshot.info = db._info
patrick@0
  1503
  db.screenshot =
patrick@0
  1504
    
patrick@0
  1505
    ## A representation of what the user sees or might see on a computer screen
patrick@0
  1506
    element screenshot {
patrick@0
  1507
      db.screenshot.attlist, db.screenshot.info, db.mediaobject
patrick@0
  1508
    }
patrick@0
  1509
}
patrick@0
  1510
div {
patrick@0
  1511
  db.figure.role.attribute = attribute role { text }
patrick@0
  1512
  db.figure.label.attribute = db.label.attribute
patrick@0
  1513
  db.figure.pgwide.attribute = db.pgwide.attribute
patrick@0
  1514
  db.figure.floatstyle.attribute = db.floatstyle.attribute
patrick@0
  1515
  db.figure.attlist =
patrick@0
  1516
    db.figure.role.attribute?
patrick@0
  1517
    & db.common.attributes
patrick@0
  1518
    & db.common.linking.attributes
patrick@0
  1519
    & db.figure.label.attribute?
patrick@0
  1520
    & db.figure.pgwide.attribute?
patrick@0
  1521
    & db.figure.floatstyle.attribute?
patrick@0
  1522
  db.figure.info = db._info.title.onlyreq
patrick@0
  1523
  db.figure =
patrick@0
  1524
    
patrick@0
  1525
    ## A formal figure, generally an illustration, with a title
patrick@0
  1526
    element figure {
patrick@0
  1527
      db.figure.attlist, db.figure.info, db.all.blocks+, db.caption?
patrick@0
  1528
    }
patrick@0
  1529
}
patrick@0
  1530
div {
patrick@0
  1531
  db.informalfigure.role.attribute = attribute role { text }
patrick@0
  1532
  db.informalfigure.label.attribute = db.label.attribute
patrick@0
  1533
  db.informalfigure.pgwide.attribute = db.pgwide.attribute
patrick@0
  1534
  db.informalfigure.floatstyle.attribute = db.floatstyle.attribute
patrick@0
  1535
  db.informalfigure.attlist =
patrick@0
  1536
    db.informalfigure.role.attribute?
patrick@0
  1537
    & db.common.attributes
patrick@0
  1538
    & db.common.linking.attributes
patrick@0
  1539
    & db.informalfigure.label.attribute?
patrick@0
  1540
    & db.informalfigure.pgwide.attribute?
patrick@0
  1541
    & db.informalfigure.floatstyle.attribute?
patrick@0
  1542
  db.informalfigure.info = db._info.title.forbidden
patrick@0
  1543
  db.informalfigure =
patrick@0
  1544
    
patrick@0
  1545
    ## A untitled figure
patrick@0
  1546
    element informalfigure {
patrick@0
  1547
      db.informalfigure.attlist,
patrick@0
  1548
      db.informalfigure.info,
patrick@0
  1549
      db.all.blocks+,
patrick@0
  1550
      db.caption?
patrick@0
  1551
    }
patrick@0
  1552
}
patrick@0
  1553
db.mediaobject.content =
patrick@0
  1554
  (db.videoobject | db.audioobject | db.imageobject | db.textobject)
patrick@0
  1555
  | db.imageobjectco
patrick@0
  1556
div {
patrick@0
  1557
  db.mediaobject.role.attribute = attribute role { text }
patrick@0
  1558
  db.mediaobject.attlist =
patrick@0
  1559
    db.mediaobject.role.attribute?
patrick@0
  1560
    & db.common.attributes
patrick@0
  1561
    & db.common.linking.attributes
patrick@0
  1562
  db.mediaobject.info = db._info.title.forbidden
patrick@0
  1563
  db.mediaobject =
patrick@0
  1564
    
patrick@0
  1565
    ## A displayed media object (video, audio, image, etc.)
patrick@0
  1566
    element mediaobject {
patrick@0
  1567
      db.mediaobject.attlist,
patrick@0
  1568
      db.mediaobject.info,
patrick@0
  1569
      db.alt?,
patrick@0
  1570
      db.mediaobject.content+,
patrick@0
  1571
      db.caption?
patrick@0
  1572
    }
patrick@0
  1573
}
patrick@0
  1574
div {
patrick@0
  1575
  db.inlinemediaobject.role.attribute = attribute role { text }
patrick@0
  1576
  db.inlinemediaobject.attlist =
patrick@0
  1577
    db.inlinemediaobject.role.attribute?
patrick@0
  1578
    & db.common.attributes
patrick@0
  1579
    & db.common.linking.attributes
patrick@0
  1580
  db.inlinemediaobject.info = db._info.title.forbidden
patrick@0
  1581
  db.inlinemediaobject =
patrick@0
  1582
    
patrick@0
  1583
    ## An inline media object (video, audio, image, and so on)
patrick@0
  1584
    element inlinemediaobject {
patrick@0
  1585
      db.inlinemediaobject.attlist,
patrick@0
  1586
      db.inlinemediaobject.info,
patrick@0
  1587
      db.alt?,
patrick@0
  1588
      db.mediaobject.content+
patrick@0
  1589
    }
patrick@0
  1590
}
patrick@0
  1591
div {
patrick@0
  1592
  db.videoobject.role.attribute = attribute role { text }
patrick@0
  1593
  db.videoobject.attlist =
patrick@0
  1594
    db.videoobject.role.attribute?
patrick@0
  1595
    & db.common.attributes
patrick@0
  1596
    & db.common.linking.attributes
patrick@0
  1597
  db.videoobject.info = db._info.title.forbidden
patrick@0
  1598
  db.videoobject =
patrick@0
  1599
    
patrick@0
  1600
    ## A wrapper for video data and its associated meta-information
patrick@0
  1601
    element videoobject {
patrick@0
  1602
      db.videoobject.attlist, db.videoobject.info, db.videodata
patrick@0
  1603
    }
patrick@0
  1604
}
patrick@0
  1605
div {
patrick@0
  1606
  db.audioobject.role.attribute = attribute role { text }
patrick@0
  1607
  db.audioobject.attlist =
patrick@0
  1608
    db.audioobject.role.attribute?
patrick@0
  1609
    & db.common.attributes
patrick@0
  1610
    & db.common.linking.attributes
patrick@0
  1611
  db.audioobject.info = db._info.title.forbidden
patrick@0
  1612
  db.audioobject =
patrick@0
  1613
    
patrick@0
  1614
    ## A wrapper for audio data and its associated meta-information
patrick@0
  1615
    element audioobject {
patrick@0
  1616
      db.audioobject.attlist, db.audioobject.info, db.audiodata
patrick@0
  1617
    }
patrick@0
  1618
}
patrick@0
  1619
db.imageobject.content =
patrick@0
  1620
  db.imagedata | db.imagedata.mathml | db.imagedata.svg
patrick@0
  1621
div {
patrick@0
  1622
  db.imageobject.role.attribute = attribute role { text }
patrick@0
  1623
  db.imageobject.attlist =
patrick@0
  1624
    db.imageobject.role.attribute?
patrick@0
  1625
    & db.common.attributes
patrick@0
  1626
    & db.common.linking.attributes
patrick@0
  1627
  db.imageobject.info = db._info.title.forbidden
patrick@0
  1628
  db.imageobject =
patrick@0
  1629
    
patrick@0
  1630
    ## A wrapper for image data and its associated meta-information
patrick@0
  1631
    element imageobject {
patrick@0
  1632
      db.imageobject.attlist,
patrick@0
  1633
      db.imageobject.info,
patrick@0
  1634
      db.imageobject.content
patrick@0
  1635
    }
patrick@0
  1636
}
patrick@0
  1637
div {
patrick@0
  1638
  db.textobject.role.attribute = attribute role { text }
patrick@0
  1639
  db.textobject.attlist =
patrick@0
  1640
    db.textobject.role.attribute?
patrick@0
  1641
    & db.common.attributes
patrick@0
  1642
    & db.common.linking.attributes
patrick@0
  1643
  db.textobject.info = db._info.title.forbidden
patrick@0
  1644
  db.textobject =
patrick@0
  1645
    
patrick@0
  1646
    ## A wrapper for a text description of an object and its associated meta-information
patrick@0
  1647
    element textobject {
patrick@0
  1648
      db.textobject.attlist,
patrick@0
  1649
      db.textobject.info,
patrick@0
  1650
      (db.phrase | db.textdata | db.all.blocks+)
patrick@0
  1651
    }
patrick@0
  1652
}
patrick@0
  1653
div {
patrick@0
  1654
  db.videodata.role.attribute = attribute role { text }
patrick@0
  1655
  db.videodata.align.enumeration = db.halign.enumeration
patrick@0
  1656
  db.videodata.align.attribute =
patrick@0
  1657
    
patrick@0
  1658
    ## Specifies the (horizontal) alignment of the video data
patrick@0
  1659
    attribute align { db.videodata.align.enumeration }
patrick@0
  1660
  db.videodata.valign.enumeration = db.valign.enumeration
patrick@0
  1661
  db.videodata.valign.attribute =
patrick@0
  1662
    
patrick@0
  1663
    ## Specifies the vertical alignment of the video data
patrick@0
  1664
    attribute valign { db.videodata.valign.enumeration }
patrick@0
  1665
  db.videodata.width.attribute = db.width.attribute
patrick@0
  1666
  db.videodata.depth.attribute = db.depth.attribute
patrick@0
  1667
  db.videodata.contentwidth.attribute = db.contentwidth.attribute
patrick@0
  1668
  db.videodata.contentdepth.attribute = db.contentdepth.attribute
patrick@0
  1669
  db.videodata.scalefit.enumeration = db.scalefit.enumeration
patrick@0
  1670
  db.videodata.scalefit.attribute =
patrick@0
  1671
    
patrick@0
  1672
    ## Determines if anamorphic scaling is forbidden
patrick@0
  1673
    attribute scalefit { db.videodata.scalefit.enumeration }
patrick@0
  1674
  db.videodata.scale.attribute = db.scale.attribute
patrick@0
  1675
  db.videodata.attlist =
patrick@0
  1676
    db.videodata.role.attribute?
patrick@0
  1677
    & db.common.attributes
patrick@0
  1678
    & db.common.data.attributes
patrick@0
  1679
    & db.videodata.align.attribute?
patrick@0
  1680
    & db.videodata.valign.attribute?
patrick@0
  1681
    & db.videodata.width.attribute?
patrick@0
  1682
    & db.videodata.contentwidth.attribute?
patrick@0
  1683
    & db.videodata.scalefit.attribute?
patrick@0
  1684
    & db.videodata.scale.attribute?
patrick@0
  1685
    & db.videodata.depth.attribute?
patrick@0
  1686
    & db.videodata.contentdepth.attribute?
patrick@0
  1687
  db.videodata.info = db._info.title.forbidden
patrick@0
  1688
  db.videodata =
patrick@0
  1689
    
patrick@0
  1690
    ## Pointer to external video data
patrick@0
  1691
    element videodata { db.videodata.attlist, db.videodata.info }
patrick@0
  1692
}
patrick@0
  1693
div {
patrick@0
  1694
  db.audiodata.role.attribute = attribute role { text }
patrick@0
  1695
  db.audiodata.attlist =
patrick@0
  1696
    db.audiodata.role.attribute?
patrick@0
  1697
    & db.common.attributes
patrick@0
  1698
    & db.common.data.attributes
patrick@0
  1699
  db.audiodata.info = db._info.title.forbidden
patrick@0
  1700
  db.audiodata =
patrick@0
  1701
    
patrick@0
  1702
    ## Pointer to external audio data
patrick@0
  1703
    element audiodata { db.audiodata.attlist, db.audiodata.info }
patrick@0
  1704
}
patrick@0
  1705
div {
patrick@0
  1706
  db.imagedata.role.attribute = attribute role { text }
patrick@0
  1707
  db.imagedata.align.enumeration = db.halign.enumeration
patrick@0
  1708
  db.imagedata.align.attribute =
patrick@0
  1709
    
patrick@0
  1710
    ## Specifies the (horizontal) alignment of the image data
patrick@0
  1711
    attribute align { db.imagedata.align.enumeration }
patrick@0
  1712
  db.imagedata.valign.enumeration = db.valign.enumeration
patrick@0
  1713
  db.imagedata.valign.attribute =
patrick@0
  1714
    
patrick@0
  1715
    ## Specifies the vertical alignment of the image data
patrick@0
  1716
    attribute valign { db.imagedata.valign.enumeration }
patrick@0
  1717
  db.imagedata.width.attribute = db.width.attribute
patrick@0
  1718
  db.imagedata.depth.attribute = db.depth.attribute
patrick@0
  1719
  db.imagedata.contentwidth.attribute = db.contentwidth.attribute
patrick@0
  1720
  db.imagedata.contentdepth.attribute = db.contentdepth.attribute
patrick@0
  1721
  db.imagedata.scalefit.enumeration = db.scalefit.enumeration
patrick@0
  1722
  db.imagedata.scalefit.attribute =
patrick@0
  1723
    
patrick@0
  1724
    ## Determines if anamorphic scaling is forbidden
patrick@0
  1725
    attribute scalefit { db.imagedata.scalefit.enumeration }
patrick@0
  1726
  db.imagedata.scale.attribute = db.scale.attribute
patrick@0
  1727
  db.imagedata.attlist =
patrick@0
  1728
    db.imagedata.role.attribute?
patrick@0
  1729
    & db.common.attributes
patrick@0
  1730
    & db.common.data.attributes
patrick@0
  1731
    & db.imagedata.align.attribute?
patrick@0
  1732
    & db.imagedata.valign.attribute?
patrick@0
  1733
    & db.imagedata.width.attribute?
patrick@0
  1734
    & db.imagedata.contentwidth.attribute?
patrick@0
  1735
    & db.imagedata.scalefit.attribute?
patrick@0
  1736
    & db.imagedata.scale.attribute?
patrick@0
  1737
    & db.imagedata.depth.attribute?
patrick@0
  1738
    & db.imagedata.contentdepth.attribute?
patrick@0
  1739
  db.imagedata.info = db._info.title.forbidden
patrick@0
  1740
  db.imagedata =
patrick@0
  1741
    
patrick@0
  1742
    ## Pointer to external image data
patrick@0
  1743
    element imagedata { db.imagedata.attlist, db.imagedata.info }
patrick@0
  1744
}
patrick@0
  1745
div {
patrick@0
  1746
  db.textdata.role.attribute = attribute role { text }
patrick@0
  1747
  db.textdata.encoding.attribute =
patrick@0
  1748
    
patrick@0
  1749
    ## Identifies the encoding of the text in the external file
patrick@0
  1750
    attribute encoding { text }
patrick@0
  1751
  db.textdata.attlist =
patrick@0
  1752
    db.textdata.role.attribute?
patrick@0
  1753
    & db.common.attributes
patrick@0
  1754
    & db.common.data.attributes
patrick@0
  1755
    & db.textdata.encoding.attribute?
patrick@0
  1756
  db.textdata.info = db._info.title.forbidden
patrick@0
  1757
  db.textdata =
patrick@0
  1758
    
patrick@0
  1759
    ## Pointer to external text data
patrick@0
  1760
    element textdata { db.textdata.attlist, db.textdata.info }
patrick@0
  1761
}
patrick@0
  1762
div {
patrick@0
  1763
  db.caption.role.attribute = attribute role { text }
patrick@0
  1764
  db.caption.attlist =
patrick@0
  1765
    db.caption.role.attribute?
patrick@0
  1766
    & db.common.attributes
patrick@0
  1767
    & db.common.linking.attributes
patrick@0
  1768
  db.caption.info = db._info.title.forbidden
patrick@0
  1769
  db.caption =
patrick@0
  1770
    
patrick@0
  1771
    ## A caption
patrick@0
  1772
    element caption {
patrick@0
  1773
      db.caption.attlist, db.caption.info, db.all.blocks+
patrick@0
  1774
    }
patrick@0
  1775
}
patrick@0
  1776
div {
patrick@0
  1777
  db.address.role.attribute = attribute role { text }
patrick@0
  1778
  db.address.attlist =
patrick@0
  1779
    db.address.role.attribute?
patrick@0
  1780
    & db.common.attributes
patrick@0
  1781
    & db.common.linking.attributes
patrick@0
  1782
    & db.verbatim.attributes
patrick@0
  1783
  db.address =
patrick@0
  1784
    
patrick@0
  1785
    ## A real-world address, generally a postal address
patrick@0
  1786
    element address {
patrick@0
  1787
      db.address.attlist,
patrick@0
  1788
      (db._text
patrick@0
  1789
       | db.personname
patrick@0
  1790
       | db.orgname
patrick@0
  1791
       | db.pob
patrick@0
  1792
       | db.street
patrick@0
  1793
       | db.city
patrick@0
  1794
       | db.state
patrick@0
  1795
       | db.postcode
patrick@0
  1796
       | db.country
patrick@0
  1797
       | db.phone
patrick@0
  1798
       | db.fax
patrick@0
  1799
       | db.email
patrick@0
  1800
       | db.uri
patrick@0
  1801
       | db.otheraddr)*
patrick@0
  1802
    }
patrick@0
  1803
}
patrick@0
  1804
div {
patrick@0
  1805
  db.street.role.attribute = attribute role { text }
patrick@0
  1806
  db.street.attlist =
patrick@0
  1807
    db.street.role.attribute?
patrick@0
  1808
    & db.common.attributes
patrick@0
  1809
    & db.common.linking.attributes
patrick@0
  1810
  db.street =
patrick@0
  1811
    
patrick@0
  1812
    ## A street address in an address
patrick@0
  1813
    element street { db.street.attlist, db._text }
patrick@0
  1814
}
patrick@0
  1815
div {
patrick@0
  1816
  db.pob.role.attribute = attribute role { text }
patrick@0
  1817
  db.pob.attlist =
patrick@0
  1818
    db.pob.role.attribute?
patrick@0
  1819
    & db.common.attributes
patrick@0
  1820
    & db.common.linking.attributes
patrick@0
  1821
  db.pob =
patrick@0
  1822
    
patrick@0
  1823
    ## A post office box in an address
patrick@0
  1824
    element pob { db.pob.attlist, db._text }
patrick@0
  1825
}
patrick@0
  1826
div {
patrick@0
  1827
  db.postcode.role.attribute = attribute role { text }
patrick@0
  1828
  db.postcode.attlist =
patrick@0
  1829
    db.postcode.role.attribute?
patrick@0
  1830
    & db.common.attributes
patrick@0
  1831
    & db.common.linking.attributes
patrick@0
  1832
  db.postcode =
patrick@0
  1833
    
patrick@0
  1834
    ## A postal code in an address
patrick@0
  1835
    element postcode { db.postcode.attlist, db._text }
patrick@0
  1836
}
patrick@0
  1837
div {
patrick@0
  1838
  db.city.role.attribute = attribute role { text }
patrick@0
  1839
  db.city.attlist =
patrick@0
  1840
    db.city.role.attribute?
patrick@0
  1841
    & db.common.attributes
patrick@0
  1842
    & db.common.linking.attributes
patrick@0
  1843
  db.city =
patrick@0
  1844
    
patrick@0
  1845
    ## The name of a city in an address
patrick@0
  1846
    element city { db.city.attlist, db._text }
patrick@0
  1847
}
patrick@0
  1848
div {
patrick@0
  1849
  db.state.role.attribute = attribute role { text }
patrick@0
  1850
  db.state.attlist =
patrick@0
  1851
    db.state.role.attribute?
patrick@0
  1852
    & db.common.attributes
patrick@0
  1853
    & db.common.linking.attributes
patrick@0
  1854
  db.state =
patrick@0
  1855
    
patrick@0
  1856
    ## A state or province in an address
patrick@0
  1857
    element state { db.state.attlist, db._text }
patrick@0
  1858
}
patrick@0
  1859
div {
patrick@0
  1860
  db.country.role.attribute = attribute role { text }
patrick@0
  1861
  db.country.attlist =
patrick@0
  1862
    db.country.role.attribute?
patrick@0
  1863
    & db.common.attributes
patrick@0
  1864
    & db.common.linking.attributes
patrick@0
  1865
  db.country =
patrick@0
  1866
    
patrick@0
  1867
    ## The name of a country
patrick@0
  1868
    element country { db.country.attlist, db._text }
patrick@0
  1869
}
patrick@0
  1870
div {
patrick@0
  1871
  db.phone.role.attribute = attribute role { text }
patrick@0
  1872
  db.phone.attlist =
patrick@0
  1873
    db.phone.role.attribute?
patrick@0
  1874
    & db.common.attributes
patrick@0
  1875
    & db.common.linking.attributes
patrick@0
  1876
  db.phone =
patrick@0
  1877
    
patrick@0
  1878
    ## A telephone number
patrick@0
  1879
    element phone { db.phone.attlist, db._text }
patrick@0
  1880
}
patrick@0
  1881
div {
patrick@0
  1882
  db.fax.role.attribute = attribute role { text }
patrick@0
  1883
  db.fax.attlist =
patrick@0
  1884
    db.fax.role.attribute?
patrick@0
  1885
    & db.common.attributes
patrick@0
  1886
    & db.common.linking.attributes
patrick@0
  1887
  db.fax =
patrick@0
  1888
    
patrick@0
  1889
    ## A fax number
patrick@0
  1890
    element fax { db.fax.attlist, db._text }
patrick@0
  1891
}
patrick@0
  1892
div {
patrick@0
  1893
  db.otheraddr.role.attribute = attribute role { text }
patrick@0
  1894
  db.otheraddr.attlist =
patrick@0
  1895
    db.otheraddr.role.attribute?
patrick@0
  1896
    & db.common.attributes
patrick@0
  1897
    & db.common.linking.attributes
patrick@0
  1898
  db.otheraddr =
patrick@0
  1899
    
patrick@0
  1900
    ## Uncategorized information in address
patrick@0
  1901
    element otheraddr { db.otheraddr.attlist, db._text }
patrick@0
  1902
}
patrick@0
  1903
div {
patrick@0
  1904
  db.affiliation.role.attribute = attribute role { text }
patrick@0
  1905
  db.affiliation.attlist =
patrick@0
  1906
    db.affiliation.role.attribute?
patrick@0
  1907
    & db.common.attributes
patrick@0
  1908
    & db.common.linking.attributes
patrick@0
  1909
  db.affiliation =
patrick@0
  1910
    
patrick@0
  1911
    ## The institutional affiliation of an individual
patrick@0
  1912
    element affiliation {
patrick@0
  1913
      db.affiliation.attlist,
patrick@0
  1914
      db.shortaffil?,
patrick@0
  1915
      db.jobtitle*,
patrick@0
  1916
      (db.org? | (db.orgname?, db.orgdiv*, db.address*))
patrick@0
  1917
    }
patrick@0
  1918
}
patrick@0
  1919
div {
patrick@0
  1920
  db.shortaffil.role.attribute = attribute role { text }
patrick@0
  1921
  db.shortaffil.attlist =
patrick@0
  1922
    db.shortaffil.role.attribute?
patrick@0
  1923
    & db.common.attributes
patrick@0
  1924
    & db.common.linking.attributes
patrick@0
  1925
  db.shortaffil =
patrick@0
  1926
    
patrick@0
  1927
    ## A brief description of an affiliation
patrick@0
  1928
    element shortaffil { db.shortaffil.attlist, db._text }
patrick@0
  1929
}
patrick@0
  1930
div {
patrick@0
  1931
  db.jobtitle.role.attribute = attribute role { text }
patrick@0
  1932
  db.jobtitle.attlist =
patrick@0
  1933
    db.jobtitle.role.attribute?
patrick@0
  1934
    & db.common.attributes
patrick@0
  1935
    & db.common.linking.attributes
patrick@0
  1936
  db.jobtitle =
patrick@0
  1937
    
patrick@0
  1938
    ## The title of an individual in an organization
patrick@0
  1939
    element jobtitle { db.jobtitle.attlist, db._text }
patrick@0
  1940
}
patrick@0
  1941
div {
patrick@0
  1942
  db.orgname.class.enumeration =
patrick@0
  1943
    
patrick@0
  1944
    ## A consortium
patrick@0
  1945
    "consortium"
patrick@0
  1946
    | 
patrick@0
  1947
      ## A corporation
patrick@0
  1948
      "corporation"
patrick@0
  1949
    | 
patrick@0
  1950
      ## An informal organization
patrick@0
  1951
      "informal"
patrick@0
  1952
    | 
patrick@0
  1953
      ## A non-profit organization
patrick@0
  1954
      "nonprofit"
patrick@0
  1955
  db.orgname.class-enum.attribute =
patrick@0
  1956
    
patrick@0
  1957
    ## Specifies the nature of the organization
patrick@0
  1958
    attribute class { db.orgname.class.enumeration }
patrick@0
  1959
  db.orgname.class-other.attributes =
patrick@0
  1960
    
patrick@0
  1961
    ## Specifies the nature of the organization
patrick@0
  1962
    attribute class {
patrick@0
  1963
      
patrick@0
  1964
      ## Indicates a non-standard organization class
patrick@0
  1965
      "other"
patrick@0
  1966
    },
patrick@0
  1967
    
patrick@0
  1968
    ## Identifies the non-standard nature of the organization
patrick@0
  1969
    attribute otherclass { text }
patrick@0
  1970
  db.orgname.class.attribute =
patrick@0
  1971
    db.orgname.class-enum.attribute | db.orgname.class-other.attributes
patrick@0
  1972
  db.orgname.role.attribute = attribute role { text }
patrick@0
  1973
  db.orgname.attlist =
patrick@0
  1974
    db.orgname.role.attribute?
patrick@0
  1975
    & db.common.attributes
patrick@0
  1976
    & db.common.linking.attributes
patrick@0
  1977
    & db.orgname.class.attribute?
patrick@0
  1978
  db.orgname =
patrick@0
  1979
    
patrick@0
  1980
    ## The name of an organization
patrick@0
  1981
    element orgname { db.orgname.attlist, db._text }
patrick@0
  1982
}
patrick@0
  1983
div {
patrick@0
  1984
  db.orgdiv.role.attribute = attribute role { text }
patrick@0
  1985
  db.orgdiv.attlist =
patrick@0
  1986
    db.orgdiv.role.attribute?
patrick@0
  1987
    & db.common.attributes
patrick@0
  1988
    & db.common.linking.attributes
patrick@0
  1989
  db.orgdiv =
patrick@0
  1990
    
patrick@0
  1991
    ## A division of an organization
patrick@0
  1992
    element orgdiv { db.orgdiv.attlist, db.all.inlines* }
patrick@0
  1993
}
patrick@0
  1994
div {
patrick@0
  1995
  db.artpagenums.role.attribute = attribute role { text }
patrick@0
  1996
  db.artpagenums.attlist =
patrick@0
  1997
    db.artpagenums.role.attribute?
patrick@0
  1998
    & db.common.attributes
patrick@0
  1999
    & db.common.linking.attributes
patrick@0
  2000
  db.artpagenums =
patrick@0
  2001
    
patrick@0
  2002
    ## The page numbers of an article as published
patrick@0
  2003
    element artpagenums { db.artpagenums.attlist, db._text }
patrick@0
  2004
}
patrick@0
  2005
div {
patrick@0
  2006
  db.personname.role.attribute = attribute role { text }
patrick@0
  2007
  db.personname.attlist =
patrick@0
  2008
    db.personname.role.attribute?
patrick@0
  2009
    & db.common.attributes
patrick@0
  2010
    & db.common.linking.attributes
patrick@0
  2011
  db.personname =
patrick@0
  2012
    
patrick@0
  2013
    ## The personal name of an individual
patrick@0
  2014
    element personname {
patrick@0
  2015
      db.personname.attlist,
patrick@0
  2016
      (db._text
patrick@0
  2017
       | (db.honorific
patrick@0
  2018
          | db.firstname
patrick@0
  2019
          | db.surname
patrick@0
  2020
          | db.lineage
patrick@0
  2021
          | db.othername)+
patrick@0
  2022
       | (db.honorific
patrick@0
  2023
          | db.givenname
patrick@0
  2024
          | db.surname
patrick@0
  2025
          | db.lineage
patrick@0
  2026
          | db.othername)+)
patrick@0
  2027
    }
patrick@0
  2028
}
patrick@0
  2029
db.person.author.contentmodel =
patrick@0
  2030
  db.personname,
patrick@0
  2031
  (db.personblurb
patrick@0
  2032
   | db.affiliation
patrick@0
  2033
   | db.email
patrick@0
  2034
   | db.uri
patrick@0
  2035
   | db.address
patrick@0
  2036
   | db.contrib)*
patrick@0
  2037
db.org.author.contentmodel =
patrick@0
  2038
  db.orgname,
patrick@0
  2039
  (db.orgdiv
patrick@0
  2040
   | db.affiliation
patrick@0
  2041
   | db.email
patrick@0
  2042
   | db.uri
patrick@0
  2043
   | db.address
patrick@0
  2044
   | db.contrib)*
patrick@0
  2045
db.credit.contentmodel =
patrick@0
  2046
  db.person.author.contentmodel | db.org.author.contentmodel
patrick@0
  2047
div {
patrick@0
  2048
  db.author.role.attribute = attribute role { text }
patrick@0
  2049
  db.author.attlist =
patrick@0
  2050
    db.author.role.attribute?
patrick@0
  2051
    & db.common.attributes
patrick@0
  2052
    & db.common.linking.attributes
patrick@0
  2053
  db.author =
patrick@0
  2054
    
patrick@0
  2055
    ## The name of an individual author
patrick@0
  2056
    element author { db.author.attlist, db.credit.contentmodel }
patrick@0
  2057
}
patrick@0
  2058
div {
patrick@0
  2059
  db.authorgroup.role.attribute = attribute role { text }
patrick@0
  2060
  db.authorgroup.attlist =
patrick@0
  2061
    db.authorgroup.role.attribute?
patrick@0
  2062
    & db.common.attributes
patrick@0
  2063
    & db.common.linking.attributes
patrick@0
  2064
  db.authorgroup =
patrick@0
  2065
    
patrick@0
  2066
    ## Wrapper for author information when a document has multiple authors or collaborators
patrick@0
  2067
    element authorgroup {
patrick@0
  2068
      db.authorgroup.attlist, (db.author | db.editor | db.othercredit)+
patrick@0
  2069
    }
patrick@0
  2070
}
patrick@0
  2071
div {
patrick@0
  2072
  db.collab.role.attribute = attribute role { text }
patrick@0
  2073
  db.collab.attlist =
patrick@0
  2074
    db.collab.role.attribute?
patrick@0
  2075
    & db.common.attributes
patrick@0
  2076
    & db.common.linking.attributes
patrick@0
  2077
  db.collab =
patrick@0
  2078
    
patrick@0
  2079
    ## Identifies a collaborator
patrick@0
  2080
    element collab {
patrick@0
  2081
      db.collab.attlist,
patrick@0
  2082
      (db.person | db.personname | db.org | db.orgname)+,
patrick@0
  2083
      db.affiliation*
patrick@0
  2084
    }
patrick@0
  2085
}
patrick@0
  2086
div {
patrick@0
  2087
  db.authorinitials.role.attribute = attribute role { text }
patrick@0
  2088
  db.authorinitials.attlist =
patrick@0
  2089
    db.authorinitials.role.attribute?
patrick@0
  2090
    & db.common.attributes
patrick@0
  2091
    & db.common.linking.attributes
patrick@0
  2092
  db.authorinitials =
patrick@0
  2093
    
patrick@0
  2094
    ## The initials or other short identifier for an author
patrick@0
  2095
    element authorinitials { db.authorinitials.attlist, db._text }
patrick@0
  2096
}
patrick@0
  2097
div {
patrick@0
  2098
  db.person.role.attribute = attribute role { text }
patrick@0
  2099
  db.person.attlist =
patrick@0
  2100
    db.person.role.attribute?
patrick@0
  2101
    & db.common.attributes
patrick@0
  2102
    & db.common.linking.attributes
patrick@0
  2103
  db.person =
patrick@0
  2104
    
patrick@0
  2105
    ## A person and associated metadata
patrick@0
  2106
    element person {
patrick@0
  2107
      db.person.attlist,
patrick@0
  2108
      db.personname,
patrick@0
  2109
      (db.address
patrick@0
  2110
       | db.affiliation
patrick@0
  2111
       | db.email
patrick@0
  2112
       | db.uri
patrick@0
  2113
       | db.personblurb)*
patrick@0
  2114
    }
patrick@0
  2115
}
patrick@0
  2116
div {
patrick@0
  2117
  db.org.role.attribute = attribute role { text }
patrick@0
  2118
  db.org.attlist =
patrick@0
  2119
    db.org.role.attribute?
patrick@0
  2120
    & db.common.attributes
patrick@0
  2121
    & db.common.linking.attributes
patrick@0
  2122
  db.org =
patrick@0
  2123
    
patrick@0
  2124
    ## An organization and associated metadata
patrick@0
  2125
    element org {
patrick@0
  2126
      db.org.attlist,
patrick@0
  2127
      db.orgname,
patrick@0
  2128
      (db.address | db.affiliation | db.email | db.uri | db.orgdiv)*
patrick@0
  2129
    }
patrick@0
  2130
}
patrick@0
  2131
div {
patrick@0
  2132
  db.confgroup.role.attribute = attribute role { text }
patrick@0
  2133
  db.confgroup.attlist =
patrick@0
  2134
    db.confgroup.role.attribute?
patrick@0
  2135
    & db.common.attributes
patrick@0
  2136
    & db.common.linking.attributes
patrick@0
  2137
  db.confgroup =
patrick@0
  2138
    
patrick@0
  2139
    ## A wrapper for document meta-information about a conference
patrick@0
  2140
    element confgroup {
patrick@0
  2141
      db.confgroup.attlist,
patrick@0
  2142
      (db.confdates
patrick@0
  2143
       | db.conftitle
patrick@0
  2144
       | db.confnum
patrick@0
  2145
       | db.confsponsor
patrick@0
  2146
       | db.address)*
patrick@0
  2147
    }
patrick@0
  2148
}
patrick@0
  2149
div {
patrick@0
  2150
  db.confdates.role.attribute = attribute role { text }
patrick@0
  2151
  db.confdates.attlist =
patrick@0
  2152
    db.confdates.role.attribute?
patrick@0
  2153
    & db.common.attributes
patrick@0
  2154
    & db.common.linking.attributes
patrick@0
  2155
  db.confdates =
patrick@0
  2156
    
patrick@0
  2157
    ## The dates of a conference for which a document was written
patrick@0
  2158
    element confdates { db.confdates.attlist, db._text }
patrick@0
  2159
}
patrick@0
  2160
div {
patrick@0
  2161
  db.conftitle.role.attribute = attribute role { text }
patrick@0
  2162
  db.conftitle.attlist =
patrick@0
  2163
    db.conftitle.role.attribute?
patrick@0
  2164
    & db.common.attributes
patrick@0
  2165
    & db.common.linking.attributes
patrick@0
  2166
  db.conftitle =
patrick@0
  2167
    
patrick@0
  2168
    ## The title of a conference for which a document was written
patrick@0
  2169
    element conftitle { db.conftitle.attlist, db._text }
patrick@0
  2170
}
patrick@0
  2171
div {
patrick@0
  2172
  db.confnum.role.attribute = attribute role { text }
patrick@0
  2173
  db.confnum.attlist =
patrick@0
  2174
    db.confnum.role.attribute?
patrick@0
  2175
    & db.common.attributes
patrick@0
  2176
    & db.common.linking.attributes
patrick@0
  2177
  db.confnum =
patrick@0
  2178
    
patrick@0
  2179
    ## An identifier, frequently numerical, associated with a conference for which a document was written
patrick@0
  2180
    element confnum { db.confnum.attlist, db._text }
patrick@0
  2181
}
patrick@0
  2182
div {
patrick@0
  2183
  db.confsponsor.role.attribute = attribute role { text }
patrick@0
  2184
  db.confsponsor.attlist =
patrick@0
  2185
    db.confsponsor.role.attribute?
patrick@0
  2186
    & db.common.attributes
patrick@0
  2187
    & db.common.linking.attributes
patrick@0
  2188
  db.confsponsor =
patrick@0
  2189
    
patrick@0
  2190
    ## The sponsor of a conference for which a document was written
patrick@0
  2191
    element confsponsor { db.confsponsor.attlist, db._text }
patrick@0
  2192
}
patrick@0
  2193
div {
patrick@0
  2194
  db.contractnum.role.attribute = attribute role { text }
patrick@0
  2195
  db.contractnum.attlist =
patrick@0
  2196
    db.contractnum.role.attribute?
patrick@0
  2197
    & db.common.attributes
patrick@0
  2198
    & db.common.linking.attributes
patrick@0
  2199
  db.contractnum =
patrick@0
  2200
    
patrick@0
  2201
    ## The contract number of a document
patrick@0
  2202
    element contractnum { db.contractnum.attlist, db._text }
patrick@0
  2203
}
patrick@0
  2204
div {
patrick@0
  2205
  db.contractsponsor.role.attribute = attribute role { text }
patrick@0
  2206
  db.contractsponsor.attlist =
patrick@0
  2207
    db.contractsponsor.role.attribute?
patrick@0
  2208
    & db.common.attributes
patrick@0
  2209
    & db.common.linking.attributes
patrick@0
  2210
  db.contractsponsor =
patrick@0
  2211
    
patrick@0
  2212
    ## The sponsor of a contract
patrick@0
  2213
    element contractsponsor { db.contractsponsor.attlist, db._text }
patrick@0
  2214
}
patrick@0
  2215
div {
patrick@0
  2216
  db.copyright.role.attribute = attribute role { text }
patrick@0
  2217
  db.copyright.attlist =
patrick@0
  2218
    db.copyright.role.attribute?
patrick@0
  2219
    & db.common.attributes
patrick@0
  2220
    & db.common.linking.attributes
patrick@0
  2221
  db.copyright =
patrick@0
  2222
    
patrick@0
  2223
    ## Copyright information about a document
patrick@0
  2224
    element copyright { db.copyright.attlist, db.year+, db.holder* }
patrick@0
  2225
}
patrick@0
  2226
div {
patrick@0
  2227
  db.year.role.attribute = attribute role { text }
patrick@0
  2228
  db.year.attlist =
patrick@0
  2229
    db.year.role.attribute?
patrick@0
  2230
    & db.common.attributes
patrick@0
  2231
    & db.common.linking.attributes
patrick@0
  2232
  db.year =
patrick@0
  2233
    
patrick@0
  2234
    ## The year of publication of a document
patrick@0
  2235
    element year { db.year.attlist, db._text }
patrick@0
  2236
}
patrick@0
  2237
div {
patrick@0
  2238
  db.holder.role.attribute = attribute role { text }
patrick@0
  2239
  db.holder.attlist =
patrick@0
  2240
    db.holder.role.attribute?
patrick@0
  2241
    & db.common.attributes
patrick@0
  2242
    & db.common.linking.attributes
patrick@0
  2243
  db.holder =
patrick@0
  2244
    
patrick@0
  2245
    ## The name of the individual or organization that holds a copyright
patrick@0
  2246
    element holder { db.holder.attlist, db._text }
patrick@0
  2247
}
patrick@0
  2248
db.cover.contentmodel =
patrick@0
  2249
  (db.para.blocks
patrick@0
  2250
   | db.extension.blocks
patrick@0
  2251
   | db.list.blocks
patrick@0
  2252
   | db.informal.blocks
patrick@0
  2253
   | db.publishing.blocks
patrick@0
  2254
   | db.graphic.blocks
patrick@0
  2255
   | db.technical.blocks
patrick@0
  2256
   | db.verbatim.blocks
patrick@0
  2257
   | db.bridgehead
patrick@0
  2258
   | db.remark
patrick@0
  2259
   | db.revhistory)
patrick@0
  2260
  | db.synopsis.blocks
patrick@0
  2261
div {
patrick@0
  2262
  db.cover.role.attribute = attribute role { text }
patrick@0
  2263
  db.cover.attlist =
patrick@0
  2264
    db.cover.role.attribute?
patrick@0
  2265
    & db.common.attributes
patrick@0
  2266
    & db.common.linking.attributes
patrick@0
  2267
  db.cover =
patrick@0
  2268
    
patrick@0
  2269
    ## Additional content for the cover of a publication
patrick@0
  2270
    element cover { db.cover.attlist, db.cover.contentmodel+ }
patrick@0
  2271
}
patrick@0
  2272
db.date.contentmodel =
patrick@0
  2273
  xsd:date | xsd:dateTime | xsd:gYearMonth | xsd:gYear | text
patrick@0
  2274
div {
patrick@0
  2275
  db.date.role.attribute = attribute role { text }
patrick@0
  2276
  db.date.attlist =
patrick@0
  2277
    db.date.role.attribute?
patrick@0
  2278
    & db.common.attributes
patrick@0
  2279
    & db.common.linking.attributes
patrick@0
  2280
  db.date =
patrick@0
  2281
    
patrick@0
  2282
    ## The date of publication or revision of a document
patrick@0
  2283
    element date { db.date.attlist, db.date.contentmodel }
patrick@0
  2284
}
patrick@0
  2285
div {
patrick@0
  2286
  db.edition.role.attribute = attribute role { text }
patrick@0
  2287
  db.edition.attlist =
patrick@0
  2288
    db.edition.role.attribute?
patrick@0
  2289
    & db.common.attributes
patrick@0
  2290
    & db.common.linking.attributes
patrick@0
  2291
  db.edition =
patrick@0
  2292
    
patrick@0
  2293
    ## The name or number of an edition of a document
patrick@0
  2294
    element edition { db.edition.attlist, db._text }
patrick@0
  2295
}
patrick@0
  2296
div {
patrick@0
  2297
  db.editor.role.attribute = attribute role { text }
patrick@0
  2298
  db.editor.attlist =
patrick@0
  2299
    db.editor.role.attribute?
patrick@0
  2300
    & db.common.attributes
patrick@0
  2301
    & db.common.linking.attributes
patrick@0
  2302
  db.editor =
patrick@0
  2303
    
patrick@0
  2304
    ## The name of the editor of a document
patrick@0
  2305
    element editor { db.editor.attlist, db.credit.contentmodel }
patrick@0
  2306
}
patrick@0
  2307
div {
patrick@0
  2308
  db.biblioid.role.attribute = attribute role { text }
patrick@0
  2309
  db.biblioid.attlist =
patrick@0
  2310
    db.biblioid.role.attribute?
patrick@0
  2311
    & db.common.attributes
patrick@0
  2312
    & db.common.linking.attributes
patrick@0
  2313
    & db.biblio.class.attribute
patrick@0
  2314
  db.biblioid =
patrick@0
  2315
    
patrick@0
  2316
    ## An identifier for a document
patrick@0
  2317
    element biblioid { db.biblioid.attlist, db._text }
patrick@0
  2318
}
patrick@0
  2319
div {
patrick@0
  2320
  db.citebiblioid.role.attribute = attribute role { text }
patrick@0
  2321
  db.citebiblioid.attlist =
patrick@0
  2322
    db.citebiblioid.role.attribute?
patrick@0
  2323
    & db.common.attributes
patrick@0
  2324
    & db.common.linking.attributes
patrick@0
  2325
    & db.biblio.class.attribute
patrick@0
  2326
  db.citebiblioid =
patrick@0
  2327
    
patrick@0
  2328
    ## A citation of a bibliographic identifier
patrick@0
  2329
    element citebiblioid { db.citebiblioid.attlist, db._text }
patrick@0
  2330
}
patrick@0
  2331
div {
patrick@0
  2332
  db.bibliosource.role.attribute = attribute role { text }
patrick@0
  2333
  db.bibliosource.attlist =
patrick@0
  2334
    db.bibliosource.role.attribute?
patrick@0
  2335
    & db.common.attributes
patrick@0
  2336
    & db.common.linking.attributes
patrick@0
  2337
    & db.biblio.class.attribute
patrick@0
  2338
  db.bibliosource =
patrick@0
  2339
    
patrick@0
  2340
    ## The source of a document
patrick@0
  2341
    element bibliosource { db.bibliosource.attlist, db._text }
patrick@0
  2342
}
patrick@0
  2343
div {
patrick@0
  2344
  db.bibliorelation.type.enumeration =
patrick@0
  2345
    
patrick@0
  2346
    ## The described resource pre-existed the referenced resource, which is essentially the same intellectual content presented in another format
patrick@0
  2347
    "hasformat"
patrick@0
  2348
    | 
patrick@0
  2349
      ## The described resource includes the referenced resource either physically or logically
patrick@0
  2350
      "haspart"
patrick@0
  2351
    | 
patrick@0
  2352
      ## The described resource has a version, edition, or adaptation, namely, the referenced resource
patrick@0
  2353
      "hasversion"
patrick@0
  2354
    | 
patrick@0
  2355
      ## The described resource is the same intellectual content of the referenced resource, but presented in another format
patrick@0
  2356
      "isformatof"
patrick@0
  2357
    | 
patrick@0
  2358
      ## The described resource is a physical or logical part of the referenced resource
patrick@0
  2359
      "ispartof"
patrick@0
  2360
    | 
patrick@0
  2361
      ## The described resource is referenced, cited, or otherwise pointed to by the referenced resource
patrick@0
  2362
      "isreferencedby"
patrick@0
  2363
    | 
patrick@0
  2364
      ## The described resource is supplanted, displaced, or superceded by the referenced resource
patrick@0
  2365
      "isreplacedby"
patrick@0
  2366
    | 
patrick@0
  2367
      ## The described resource is required by the referenced resource, either physically or logically
patrick@0
  2368
      "isrequiredby"
patrick@0
  2369
    | 
patrick@0
  2370
      ## The described resource is a version, edition, or adaptation of the referenced resource; changes in version imply substantive changes in content rather than differences in format
patrick@0
  2371
      "isversionof"
patrick@0
  2372
    | 
patrick@0
  2373
      ## The described resource references, cites, or otherwise points to the referenced resource
patrick@0
  2374
      "references"
patrick@0
  2375
    | 
patrick@0
  2376
      ## The described resource supplants, displaces, or supersedes the referenced resource
patrick@0
  2377
      "replaces"
patrick@0
  2378
    | 
patrick@0
  2379
      ## The described resource requires the referenced resource to support its function, delivery, or coherence of content
patrick@0
  2380
      "requires"
patrick@0
  2381
  db.bibliorelation.type-enum.attribute =
patrick@0
  2382
    
patrick@0
  2383
    ## Identifies the type of relationship
patrick@0
  2384
    attribute type { db.bibliorelation.type.enumeration }?
patrick@0
  2385
  db.bibliorelation.type-other.attributes =
patrick@0
  2386
    
patrick@0
  2387
    ## Identifies the type of relationship
patrick@0
  2388
    attribute type {
patrick@0
  2389
      
patrick@0
  2390
      ## The described resource has a non-standard relationship with the referenced resource
patrick@0
  2391
      "othertype"
patrick@0
  2392
    }?,
patrick@0
  2393
    
patrick@0
  2394
    ## A keyword that identififes the type of the non-standard relationship
patrick@0
  2395
    attribute othertype { xsd:NMTOKEN }
patrick@0
  2396
  db.bibliorelation.type.attribute =
patrick@0
  2397
    db.bibliorelation.type-enum.attribute
patrick@0
  2398
    | db.bibliorelation.type-other.attributes
patrick@0
  2399
  db.bibliorelation.role.attribute = attribute role { text }
patrick@0
  2400
  db.bibliorelation.attlist =
patrick@0
  2401
    db.bibliorelation.role.attribute?
patrick@0
  2402
    & db.common.attributes
patrick@0
  2403
    & db.common.linking.attributes
patrick@0
  2404
    & db.biblio.class.attribute
patrick@0
  2405
    & db.bibliorelation.type.attribute
patrick@0
  2406
  db.bibliorelation =
patrick@0
  2407
    
patrick@0
  2408
    ## The relationship of a document to another
patrick@0
  2409
    element bibliorelation { db.bibliorelation.attlist, db._text }
patrick@0
  2410
}
patrick@0
  2411
div {
patrick@0
  2412
  db.bibliocoverage.spacial.enumeration =
patrick@0
  2413
    
patrick@0
  2414
    ## The DCMI Point identifies a point in space using its geographic coordinates
patrick@0
  2415
    "dcmipoint"
patrick@0
  2416
    | 
patrick@0
  2417
      ## ISO 3166 Codes for the representation of names of countries
patrick@0
  2418
      "iso3166"
patrick@0
  2419
    | 
patrick@0
  2420
      ## The DCMI Box identifies a region of space using its geographic limits
patrick@0
  2421
      "dcmibox"
patrick@0
  2422
    | 
patrick@0
  2423
      ## The Getty Thesaurus of Geographic Names
patrick@0
  2424
      "tgn"
patrick@0
  2425
  db.bibliocoverage.spatial-enum.attribute =
patrick@0
  2426
    
patrick@0
  2427
    ## Specifies the type of spatial coverage
patrick@0
  2428
    attribute spatial { db.bibliocoverage.spacial.enumeration }?
patrick@0
  2429
  db.bibliocoverage.spatial-other.attributes =
patrick@0
  2430
    
patrick@0
  2431
    ## Specifies the type of spatial coverage
patrick@0
  2432
    attribute spatial {
patrick@0
  2433
      
patrick@0
  2434
      ## Identifies a non-standard type of coverage
patrick@0
  2435
      "otherspatial"
patrick@0
  2436
    }?,
patrick@0
  2437
    
patrick@0
  2438
    ## A keyword that identifies the type of non-standard coverage
patrick@0
  2439
    attribute otherspatial { xsd:NMTOKEN }
patrick@0
  2440
  db.bibliocoverage.spatial.attribute =
patrick@0
  2441
    db.bibliocoverage.spatial-enum.attribute
patrick@0
  2442
    | db.bibliocoverage.spatial-other.attributes
patrick@0
  2443
  db.bibliocoverage.temporal.enumeration =
patrick@0
  2444
    
patrick@0
  2445
    ## A specification of the limits of a time interval
patrick@0
  2446
    "dcmiperiod"
patrick@0
  2447
    | 
patrick@0
  2448
      ## W3C Encoding rules for dates and times—a profile based on ISO 8601
patrick@0
  2449
      "w3c-dtf"
patrick@0
  2450
  db.bibliocoverage.temporal-enum.attribute =
patrick@0
  2451
    
patrick@0
  2452
    ## Specifies the type of temporal coverage
patrick@0
  2453
    attribute temporal { db.bibliocoverage.temporal.enumeration }?
patrick@0
  2454
  db.bibliocoverage.temporal-other.attributes =
patrick@0
  2455
    
patrick@0
  2456
    ## Specifies the type of temporal coverage
patrick@0
  2457
    attribute temporal {
patrick@0
  2458
      
patrick@0
  2459
      ## Specifies a non-standard type of coverage
patrick@0
  2460
      "othertemporal"
patrick@0
  2461
    }?,
patrick@0
  2462
    
patrick@0
  2463
    ## A keyword that identifies the type of non-standard coverage
patrick@0
  2464
    attribute othertemporal { xsd:NMTOKEN }
patrick@0
  2465
  db.bibliocoverage.temporal.attribute =
patrick@0
  2466
    db.bibliocoverage.temporal-enum.attribute
patrick@0
  2467
    | db.bibliocoverage.temporal-other.attributes
patrick@0
  2468
  db.bibliocoverage.coverage.attrib =
patrick@0
  2469
    db.bibliocoverage.spatial.attribute
patrick@0
  2470
    & db.bibliocoverage.temporal.attribute
patrick@0
  2471
  db.bibliocoverage.role.attribute = attribute role { text }
patrick@0
  2472
  db.bibliocoverage.attlist =
patrick@0
  2473
    db.bibliocoverage.role.attribute?
patrick@0
  2474
    & db.common.attributes
patrick@0
  2475
    & db.common.linking.attributes
patrick@0
  2476
    & db.bibliocoverage.coverage.attrib
patrick@0
  2477
  db.bibliocoverage =
patrick@0
  2478
    
patrick@0
  2479
    ## The spatial or temporal coverage of a document
patrick@0
  2480
    element bibliocoverage { db.bibliocoverage.attlist, db._text }
patrick@0
  2481
}
patrick@0
  2482
div {
patrick@0
  2483
  db.legalnotice.role.attribute = attribute role { text }
patrick@0
  2484
  db.legalnotice.attlist =
patrick@0
  2485
    db.legalnotice.role.attribute?
patrick@0
  2486
    & db.common.attributes
patrick@0
  2487
    & db.common.linking.attributes
patrick@0
  2488
  db.legalnotice.info = db._info.title.only
patrick@0
  2489
  db.legalnotice =
patrick@0
  2490
    
patrick@0
  2491
    ## A statement of legal obligations or requirements
patrick@0
  2492
    element legalnotice {
patrick@0
  2493
      db.legalnotice.attlist, db.legalnotice.info, db.all.blocks+
patrick@0
  2494
    }
patrick@0
  2495
}
patrick@0
  2496
div {
patrick@0
  2497
  db.othercredit.class.enumeration =
patrick@0
  2498
    
patrick@0
  2499
    ## A copy editor
patrick@0
  2500
    "copyeditor"
patrick@0
  2501
    | 
patrick@0
  2502
      ## A graphic designer
patrick@0
  2503
      "graphicdesigner"
patrick@0
  2504
    | 
patrick@0
  2505
      ## Some other contributor
patrick@0
  2506
      "other"
patrick@0
  2507
    | 
patrick@0
  2508
      ## A production editor
patrick@0
  2509
      "productioneditor"
patrick@0
  2510
    | 
patrick@0
  2511
      ## A technical editor
patrick@0
  2512
      "technicaleditor"
patrick@0
  2513
    | 
patrick@0
  2514
      ## A translator
patrick@0
  2515
      "translator"
patrick@0
  2516
    | 
patrick@0
  2517
      ## An indexer
patrick@0
  2518
      "indexer"
patrick@0
  2519
    | 
patrick@0
  2520
      ## A proof-reader
patrick@0
  2521
      "proofreader"
patrick@0
  2522
    | 
patrick@0
  2523
      ## A cover designer
patrick@0
  2524
      "coverdesigner"
patrick@0
  2525
    | 
patrick@0
  2526
      ## An interior designer
patrick@0
  2527
      "interiordesigner"
patrick@0
  2528
    | 
patrick@0
  2529
      ## An illustrator
patrick@0
  2530
      "illustrator"
patrick@0
  2531
    | 
patrick@0
  2532
      ## A reviewer
patrick@0
  2533
      "reviewer"
patrick@0
  2534
    | 
patrick@0
  2535
      ## A typesetter
patrick@0
  2536
      "typesetter"
patrick@0
  2537
    | 
patrick@0
  2538
      ## A converter (a persons responsible for conversion, not an application)
patrick@0
  2539
      "conversion"
patrick@0
  2540
  db.othercredit.class-enum.attribute =
patrick@0
  2541
    
patrick@0
  2542
    ## Identifies the nature of the contributor
patrick@0
  2543
    attribute class { db.othercredit.class.enumeration }?
patrick@0
  2544
  db.othercredit.class-other.attribute =
patrick@0
  2545
    
patrick@0
  2546
    ## Identifies the nature of the non-standard contribution
patrick@0
  2547
    attribute otherclass { xsd:NMTOKEN }
patrick@0
  2548
  db.othercredit.class-other.attributes =
patrick@0
  2549
    
patrick@0
  2550
    ## Identifies the nature of the contributor
patrick@0
  2551
    attribute class {
patrick@0
  2552
      
patrick@0
  2553
      ## Identifies a non-standard contribution
patrick@0
  2554
      "other"
patrick@0
  2555
    }
patrick@0
  2556
    & db.othercredit.class-other.attribute
patrick@0
  2557
  db.othercredit.class.attribute =
patrick@0
  2558
    db.othercredit.class-enum.attribute
patrick@0
  2559
    | db.othercredit.class-other.attributes
patrick@0
  2560
  db.othercredit.role.attribute = attribute role { text }
patrick@0
  2561
  db.othercredit.attlist =
patrick@0
  2562
    db.othercredit.role.attribute?
patrick@0
  2563
    & db.common.attributes
patrick@0
  2564
    & db.common.linking.attributes
patrick@0
  2565
    & db.othercredit.class.attribute
patrick@0
  2566
  db.othercredit =
patrick@0
  2567
    
patrick@0
  2568
    ## A person or entity, other than an author or editor, credited in a document
patrick@0
  2569
    element othercredit {
patrick@0
  2570
      db.othercredit.attlist, db.credit.contentmodel
patrick@0
  2571
    }
patrick@0
  2572
}
patrick@0
  2573
div {
patrick@0
  2574
  db.pagenums.role.attribute = attribute role { text }
patrick@0
  2575
  db.pagenums.attlist =
patrick@0
  2576
    db.pagenums.role.attribute?
patrick@0
  2577
    & db.common.attributes
patrick@0
  2578
    & db.common.linking.attributes
patrick@0
  2579
  db.pagenums =
patrick@0
  2580
    
patrick@0
  2581
    ## The numbers of the pages in a book, for use in a bibliographic entry
patrick@0
  2582
    element pagenums { db.pagenums.attlist, db._text }
patrick@0
  2583
}
patrick@0
  2584
div {
patrick@0
  2585
  db.contrib.role.attribute = attribute role { text }
patrick@0
  2586
  db.contrib.attlist =
patrick@0
  2587
    db.contrib.role.attribute?
patrick@0
  2588
    & db.common.attributes
patrick@0
  2589
    & db.common.linking.attributes
patrick@0
  2590
  db.contrib =
patrick@0
  2591
    
patrick@0
  2592
    ## A summary of the contributions made to a document by a credited source
patrick@0
  2593
    element contrib { db.contrib.attlist, db._text }
patrick@0
  2594
}
patrick@0
  2595
div {
patrick@0
  2596
  db.honorific.role.attribute = attribute role { text }
patrick@0
  2597
  db.honorific.attlist =
patrick@0
  2598
    db.honorific.role.attribute?
patrick@0
  2599
    & db.common.attributes
patrick@0
  2600
    & db.common.linking.attributes
patrick@0
  2601
  db.honorific =
patrick@0
  2602
    
patrick@0
  2603
    ## The title of a person
patrick@0
  2604
    element honorific { db.honorific.attlist, db._text }
patrick@0
  2605
}
patrick@0
  2606
div {
patrick@0
  2607
  db.firstname.role.attribute = attribute role { text }
patrick@0
  2608
  db.firstname.attlist =
patrick@0
  2609
    db.firstname.role.attribute?
patrick@0
  2610
    & db.common.attributes
patrick@0
  2611
    & db.common.linking.attributes
patrick@0
  2612
  db.firstname =
patrick@0
  2613
    
patrick@0
  2614
    ## A given name of a person
patrick@0
  2615
    element firstname { db.firstname.attlist, db._text }
patrick@0
  2616
}
patrick@0
  2617
div {
patrick@0
  2618
  db.givenname.role.attribute = attribute role { text }
patrick@0
  2619
  db.givenname.attlist =
patrick@0
  2620
    db.givenname.role.attribute?
patrick@0
  2621
    & db.common.attributes
patrick@0
  2622
    & db.common.linking.attributes
patrick@0
  2623
  db.givenname =
patrick@0
  2624
    
patrick@0
  2625
    ## The given name of a person
patrick@0
  2626
    element givenname { db.givenname.attlist, db._text }
patrick@0
  2627
}
patrick@0
  2628
div {
patrick@0
  2629
  db.surname.role.attribute = attribute role { text }
patrick@0
  2630
  db.surname.attlist =
patrick@0
  2631
    db.surname.role.attribute?
patrick@0
  2632
    & db.common.attributes
patrick@0
  2633
    & db.common.linking.attributes
patrick@0
  2634
  db.surname =
patrick@0
  2635
    
patrick@0
  2636
    ## An inherited or family name; in western cultures the last name
patrick@0
  2637
    element surname { db.surname.attlist, db._text }
patrick@0
  2638
}
patrick@0
  2639
div {
patrick@0
  2640
  db.lineage.role.attribute = attribute role { text }
patrick@0
  2641
  db.lineage.attlist =
patrick@0
  2642
    db.lineage.role.attribute?
patrick@0
  2643
    & db.common.attributes
patrick@0
  2644
    & db.common.linking.attributes
patrick@0
  2645
  db.lineage =
patrick@0
  2646
    
patrick@0
  2647
    ## The portion of a person's name indicating a relationship to ancestors
patrick@0
  2648
    element lineage { db.lineage.attlist, db._text }
patrick@0
  2649
}
patrick@0
  2650
div {
patrick@0
  2651
  db.othername.role.attribute = attribute role { text }
patrick@0
  2652
  db.othername.attlist =
patrick@0
  2653
    db.othername.role.attribute?
patrick@0
  2654
    & db.common.attributes
patrick@0
  2655
    & db.common.linking.attributes
patrick@0
  2656
  db.othername =
patrick@0
  2657
    
patrick@0
  2658
    ## A component of a person's name that is not a first name, surname, or lineage
patrick@0
  2659
    element othername { db.othername.attlist, db._text }
patrick@0
  2660
}
patrick@0
  2661
div {
patrick@0
  2662
  db.printhistory.role.attribute = attribute role { text }
patrick@0
  2663
  db.printhistory.attlist =
patrick@0
  2664
    db.printhistory.role.attribute?
patrick@0
  2665
    & db.common.attributes
patrick@0
  2666
    & db.common.linking.attributes
patrick@0
  2667
  db.printhistory =
patrick@0
  2668
    
patrick@0
  2669
    ## The printing history of a document
patrick@0
  2670
    element printhistory { db.printhistory.attlist, db.para.blocks+ }
patrick@0
  2671
}
patrick@0
  2672
div {
patrick@0
  2673
  db.pubdate.role.attribute = attribute role { text }
patrick@0
  2674
  db.pubdate.attlist =
patrick@0
  2675
    db.pubdate.role.attribute?
patrick@0
  2676
    & db.common.attributes
patrick@0
  2677
    & db.common.linking.attributes
patrick@0
  2678
  db.pubdate =
patrick@0
  2679
    
patrick@0
  2680
    ## The date of publication of a document
patrick@0
  2681
    element pubdate { db.pubdate.attlist, db.date.contentmodel }
patrick@0
  2682
}
patrick@0
  2683
div {
patrick@0
  2684
  db.publisher.role.attribute = attribute role { text }
patrick@0
  2685
  db.publisher.attlist =
patrick@0
  2686
    db.publisher.role.attribute?
patrick@0
  2687
    & db.common.attributes
patrick@0
  2688
    & db.common.linking.attributes
patrick@0
  2689
  db.publisher =
patrick@0
  2690
    
patrick@0
  2691
    ## The publisher of a document
patrick@0
  2692
    element publisher {
patrick@0
  2693
      db.publisher.attlist, db.publishername, db.address*
patrick@0
  2694
    }
patrick@0
  2695
}
patrick@0
  2696
div {
patrick@0
  2697
  db.publishername.role.attribute = attribute role { text }
patrick@0
  2698
  db.publishername.attlist =
patrick@0
  2699
    db.publishername.role.attribute?
patrick@0
  2700
    & db.common.attributes
patrick@0
  2701
    & db.common.linking.attributes
patrick@0
  2702
  db.publishername =
patrick@0
  2703
    
patrick@0
  2704
    ## The name of the publisher of a document
patrick@0
  2705
    element publishername { db.publishername.attlist, db._text }
patrick@0
  2706
}
patrick@0
  2707
div {
patrick@0
  2708
  db.releaseinfo.role.attribute = attribute role { text }
patrick@0
  2709
  db.releaseinfo.attlist =
patrick@0
  2710
    db.releaseinfo.role.attribute?
patrick@0
  2711
    & db.common.attributes
patrick@0
  2712
    & db.common.linking.attributes
patrick@0
  2713
  db.releaseinfo =
patrick@0
  2714
    
patrick@0
  2715
    ## Information about a particular release of a document
patrick@0
  2716
    element releaseinfo { db.releaseinfo.attlist, db._text }
patrick@0
  2717
}
patrick@0
  2718
div {
patrick@0
  2719
  db.revhistory.role.attribute = attribute role { text }
patrick@0
  2720
  db.revhistory.attlist =
patrick@0
  2721
    db.revhistory.role.attribute?
patrick@0
  2722
    & db.common.attributes
patrick@0
  2723
    & db.common.linking.attributes
patrick@0
  2724
  db.revhistory.info = db._info.title.only
patrick@0
  2725
  db.revhistory =
patrick@0
  2726
    
patrick@0
  2727
    ## A history of the revisions to a document
patrick@0
  2728
    element revhistory {
patrick@0
  2729
      db.revhistory.attlist, db.revhistory.info, db.revision+
patrick@0
  2730
    }
patrick@0
  2731
}
patrick@0
  2732
div {
patrick@0
  2733
  db.revision.role.attribute = attribute role { text }
patrick@0
  2734
  db.revision.attlist =
patrick@0
  2735
    db.revision.role.attribute?
patrick@0
  2736
    & db.common.attributes
patrick@0
  2737
    & db.common.linking.attributes
patrick@0
  2738
  db.revision =
patrick@0
  2739
    
patrick@0
  2740
    ## An entry describing a single revision in the history of the revisions to a document
patrick@0
  2741
    element revision {
patrick@0
  2742
      db.revision.attlist,
patrick@0
  2743
      db.revnumber?,
patrick@0
  2744
      db.date,
patrick@0
  2745
      (db.authorinitials | db.author)*,
patrick@0
  2746
      (db.revremark | db.revdescription)?
patrick@0
  2747
    }
patrick@0
  2748
}
patrick@0
  2749
div {
patrick@0
  2750
  db.revnumber.role.attribute = attribute role { text }
patrick@0
  2751
  db.revnumber.attlist =
patrick@0
  2752
    db.revnumber.role.attribute?
patrick@0
  2753
    & db.common.attributes
patrick@0
  2754
    & db.common.linking.attributes
patrick@0
  2755
  db.revnumber =
patrick@0
  2756
    
patrick@0
  2757
    ## A document revision number
patrick@0
  2758
    element revnumber { db.revnumber.attlist, db._text }
patrick@0
  2759
}
patrick@0
  2760
div {
patrick@0
  2761
  db.revremark.role.attribute = attribute role { text }
patrick@0
  2762
  db.revremark.attlist =
patrick@0
  2763
    db.revremark.role.attribute?
patrick@0
  2764
    & db.common.attributes
patrick@0
  2765
    & db.common.linking.attributes
patrick@0
  2766
  db.revremark =
patrick@0
  2767
    
patrick@0
  2768
    ## A description of a revision to a document
patrick@0
  2769
    element revremark { db.revremark.attlist, db._text }
patrick@0
  2770
}
patrick@0
  2771
div {
patrick@0
  2772
  db.revdescription.role.attribute = attribute role { text }
patrick@0
  2773
  db.revdescription.attlist =
patrick@0
  2774
    db.revdescription.role.attribute?
patrick@0
  2775
    & db.common.attributes
patrick@0
  2776
    & db.common.linking.attributes
patrick@0
  2777
  db.revdescription =
patrick@0
  2778
    
patrick@0
  2779
    ## A extended description of a revision to a document
patrick@0
  2780
    element revdescription { db.revdescription.attlist, db.all.blocks* }
patrick@0
  2781
}
patrick@0
  2782
div {
patrick@0
  2783
  db.seriesvolnums.role.attribute = attribute role { text }
patrick@0
  2784
  db.seriesvolnums.attlist =
patrick@0
  2785
    db.seriesvolnums.role.attribute?
patrick@0
  2786
    & db.common.attributes
patrick@0
  2787
    & db.common.linking.attributes
patrick@0
  2788
  db.seriesvolnums =
patrick@0
  2789
    
patrick@0
  2790
    ## Numbers of the volumes in a series of books
patrick@0
  2791
    element seriesvolnums { db.seriesvolnums.attlist, db._text }
patrick@0
  2792
}
patrick@0
  2793
div {
patrick@0
  2794
  db.volumenum.role.attribute = attribute role { text }
patrick@0
  2795
  db.volumenum.attlist =
patrick@0
  2796
    db.volumenum.role.attribute?
patrick@0
  2797
    & db.common.attributes
patrick@0
  2798
    & db.common.linking.attributes
patrick@0
  2799
  db.volumenum =
patrick@0
  2800
    
patrick@0
  2801
    ## The volume number of a document in a set (as of books in a set or articles in a journal)
patrick@0
  2802
    element volumenum { db.volumenum.attlist, db._text }
patrick@0
  2803
}
patrick@0
  2804
div {
patrick@0
  2805
  db.issuenum.role.attribute = attribute role { text }
patrick@0
  2806
  db.issuenum.attlist =
patrick@0
  2807
    db.issuenum.role.attribute?
patrick@0
  2808
    & db.common.attributes
patrick@0
  2809
    & db.common.linking.attributes
patrick@0
  2810
  db.issuenum =
patrick@0
  2811
    
patrick@0
  2812
    ## The number of an issue of a journal
patrick@0
  2813
    element issuenum { db.issuenum.attlist, db._text }
patrick@0
  2814
}
patrick@0
  2815
div {
patrick@0
  2816
  db.package.role.attribute = attribute role { text }
patrick@0
  2817
  db.package.attlist =
patrick@0
  2818
    db.package.role.attribute?
patrick@0
  2819
    & db.common.attributes
patrick@0
  2820
    & db.common.linking.attributes
patrick@0
  2821
  db.package =
patrick@0
  2822
    
patrick@0
  2823
    ## A software or application package
patrick@0
  2824
    element package { db.package.attlist, db._text }
patrick@0
  2825
}
patrick@0
  2826
div {
patrick@0
  2827
  db.email.role.attribute = attribute role { text }
patrick@0
  2828
  db.email.attlist =
patrick@0
  2829
    db.email.role.attribute?
patrick@0
  2830
    & db.common.attributes
patrick@0
  2831
    & db.common.linking.attributes
patrick@0
  2832
  db.email =
patrick@0
  2833
    
patrick@0
  2834
    ## An email address
patrick@0
  2835
    element email { db.email.attlist, db._text }
patrick@0
  2836
}
patrick@0
  2837
div {
patrick@0
  2838
  db.lineannotation.role.attribute = attribute role { text }
patrick@0
  2839
  db.lineannotation.attlist =
patrick@0
  2840
    db.lineannotation.role.attribute?
patrick@0
  2841
    & db.common.attributes
patrick@0
  2842
    & db.common.linking.attributes
patrick@0
  2843
  db.lineannotation =
patrick@0
  2844
    
patrick@0
  2845
    ## A comment on a line in a verbatim listing
patrick@0
  2846
    element lineannotation { db.lineannotation.attlist, db._text }
patrick@0
  2847
}
patrick@0
  2848
div {
patrick@0
  2849
  db.parameter.class.enumeration =
patrick@0
  2850
    
patrick@0
  2851
    ## A command
patrick@0
  2852
    "command"
patrick@0
  2853
    | 
patrick@0
  2854
      ## A function
patrick@0
  2855
      "function"
patrick@0
  2856
    | 
patrick@0
  2857
      ## An option
patrick@0
  2858
      "option"
patrick@0
  2859
  db.parameter.class.attribute =
patrick@0
  2860
    
patrick@0
  2861
    ## Identifies the class of parameter
patrick@0
  2862
    attribute class { db.parameter.class.enumeration }
patrick@0
  2863
  db.parameter.role.attribute = attribute role { text }
patrick@0
  2864
  db.parameter.attlist =
patrick@0
  2865
    db.parameter.role.attribute?
patrick@0
  2866
    & db.common.attributes
patrick@0
  2867
    & db.common.linking.attributes
patrick@0
  2868
    & db.parameter.class.attribute?
patrick@0
  2869
  db.parameter =
patrick@0
  2870
    
patrick@0
  2871
    ## A value or a symbolic reference to a value
patrick@0
  2872
    element parameter { db.parameter.attlist, db._text }
patrick@0
  2873
}
patrick@0
  2874
db.replaceable.inlines = db._text | db.co
patrick@0
  2875
div {
patrick@0
  2876
  db.replaceable.class.enumeration =
patrick@0
  2877
    
patrick@0
  2878
    ## A command
patrick@0
  2879
    "command"
patrick@0
  2880
    | 
patrick@0
  2881
      ## A function
patrick@0
  2882
      "function"
patrick@0
  2883
    | 
patrick@0
  2884
      ## An option
patrick@0
  2885
      "option"
patrick@0
  2886
    | 
patrick@0
  2887
      ## A parameter
patrick@0
  2888
      "parameter"
patrick@0
  2889
  db.replaceable.class.attribute =
patrick@0
  2890
    
patrick@0
  2891
    ## Identifies the nature of the replaceable text
patrick@0
  2892
    attribute class { db.replaceable.class.enumeration }
patrick@0
  2893
  db.replaceable.role.attribute = attribute role { text }
patrick@0
  2894
  db.replaceable.attlist =
patrick@0
  2895
    db.replaceable.role.attribute?
patrick@0
  2896
    & db.common.attributes
patrick@0
  2897
    & db.common.linking.attributes
patrick@0
  2898
    & db.replaceable.class.attribute?
patrick@0
  2899
  db.replaceable =
patrick@0
  2900
    
patrick@0
  2901
    ## Content that may or must be replaced by the user
patrick@0
  2902
    element replaceable {
patrick@0
  2903
      db.replaceable.attlist, db.replaceable.inlines*
patrick@0
  2904
    }
patrick@0
  2905
}
patrick@0
  2906
div {
patrick@0
  2907
  db.uri.type.attribute =
patrick@0
  2908
    
patrick@0
  2909
    ## Identifies the type of URI specified
patrick@0
  2910
    attribute type { text }?
patrick@0
  2911
  db.uri.role.attribute = attribute role { text }
patrick@0
  2912
  db.uri.attlist =
patrick@0
  2913
    db.uri.role.attribute?
patrick@0
  2914
    & db.common.attributes
patrick@0
  2915
    & db.common.linking.attributes
patrick@0
  2916
    & db.uri.type.attribute
patrick@0
  2917
  db.uri =
patrick@0
  2918
    
patrick@0
  2919
    ## A Uniform Resource Identifier
patrick@0
  2920
    element uri { db.uri.attlist, db._text }
patrick@0
  2921
}
patrick@0
  2922
div {
patrick@0
  2923
  db.abbrev.role.attribute = attribute role { text }
patrick@0
  2924
  db.abbrev.attlist =
patrick@0
  2925
    db.abbrev.role.attribute?
patrick@0
  2926
    & db.common.attributes
patrick@0
  2927
    & db.common.linking.attributes
patrick@0
  2928
  db.abbrev =
patrick@0
  2929
    
patrick@0
  2930
    ## An abbreviation, especially one followed by a period
patrick@0
  2931
    element abbrev {
patrick@0
  2932
      db.abbrev.attlist,
patrick@0
  2933
      (db._text | db.superscript | db.subscript | db.trademark)*
patrick@0
  2934
    }
patrick@0
  2935
}
patrick@0
  2936
div {
patrick@0
  2937
  db.acronym.role.attribute = attribute role { text }
patrick@0
  2938
  db.acronym.attlist =
patrick@0
  2939
    db.acronym.role.attribute?
patrick@0
  2940
    & db.common.attributes
patrick@0
  2941
    & db.common.linking.attributes
patrick@0
  2942
  db.acronym =
patrick@0
  2943
    
patrick@0
  2944
    ## An often pronounceable word made from the initial (or selected) letters of a name or phrase
patrick@0
  2945
    element acronym {
patrick@0
  2946
      db.acronym.attlist,
patrick@0
  2947
      (db._text | db.superscript | db.subscript | db.trademark)*
patrick@0
  2948
    }
patrick@0
  2949
}
patrick@0
  2950
div {
patrick@0
  2951
  db.citation.role.attribute = attribute role { text }
patrick@0
  2952
  db.citation.attlist =
patrick@0
  2953
    db.citation.role.attribute?
patrick@0
  2954
    & db.common.attributes
patrick@0
  2955
    & db.common.linking.attributes
patrick@0
  2956
  db.citation =
patrick@0
  2957
    
patrick@0
  2958
    ## An inline bibliographic reference to another published work
patrick@0
  2959
    element citation { db.citation.attlist, db.all.inlines* }
patrick@0
  2960
}
patrick@0
  2961
div {
patrick@0
  2962
  db.citerefentry.role.attribute = attribute role { text }
patrick@0
  2963
  db.citerefentry.attlist =
patrick@0
  2964
    db.citerefentry.role.attribute?
patrick@0
  2965
    & db.common.attributes
patrick@0
  2966
    & db.common.linking.attributes
patrick@0
  2967
  db.citerefentry =
patrick@0
  2968
    
patrick@0
  2969
    ## A citation to a reference page
patrick@0
  2970
    element citerefentry {
patrick@0
  2971
      db.citerefentry.attlist, db.refentrytitle, db.manvolnum?
patrick@0
  2972
    }
patrick@0
  2973
}
patrick@0
  2974
div {
patrick@0
  2975
  db.refentrytitle.role.attribute = attribute role { text }
patrick@0
  2976
  db.refentrytitle.attlist =
patrick@0
  2977
    db.refentrytitle.role.attribute?
patrick@0
  2978
    & db.common.attributes
patrick@0
  2979
    & db.common.linking.attributes
patrick@0
  2980
  db.refentrytitle =
patrick@0
  2981
    
patrick@0
  2982
    ## The title of a reference page
patrick@0
  2983
    element refentrytitle { db.refentrytitle.attlist, db.all.inlines* }
patrick@0
  2984
}
patrick@0
  2985
div {
patrick@0
  2986
  db.manvolnum.role.attribute = attribute role { text }
patrick@0
  2987
  db.manvolnum.attlist =
patrick@0
  2988
    db.manvolnum.role.attribute?
patrick@0
  2989
    & db.common.attributes
patrick@0
  2990
    & db.common.linking.attributes
patrick@0
  2991
  db.manvolnum =
patrick@0
  2992
    
patrick@0
  2993
    ## A reference volume number
patrick@0
  2994
    element manvolnum { db.manvolnum.attlist, db._text }
patrick@0
  2995
}
patrick@0
  2996
div {
patrick@0
  2997
  db.citetitle.pubwork.enumeration =
patrick@0
  2998
    
patrick@0
  2999
    ## An article
patrick@0
  3000
    "article"
patrick@0
  3001
    | 
patrick@0
  3002
      ## A bulletin board system
patrick@0
  3003
      "bbs"
patrick@0
  3004
    | 
patrick@0
  3005
      ## A book
patrick@0
  3006
      "book"
patrick@0
  3007
    | 
patrick@0
  3008
      ## A CD-ROM
patrick@0
  3009
      "cdrom"
patrick@0
  3010
    | 
patrick@0
  3011
      ## A chapter (as of a book)
patrick@0
  3012
      "chapter"
patrick@0
  3013
    | 
patrick@0
  3014
      ## A DVD
patrick@0
  3015
      "dvd"
patrick@0
  3016
    | 
patrick@0
  3017
      ## An email message
patrick@0
  3018
      "emailmessage"
patrick@0
  3019
    | 
patrick@0
  3020
      ## A gopher page
patrick@0
  3021
      "gopher"
patrick@0
  3022
    | 
patrick@0
  3023
      ## A journal
patrick@0
  3024
      "journal"
patrick@0
  3025
    | 
patrick@0
  3026
      ## A manuscript
patrick@0
  3027
      "manuscript"
patrick@0
  3028
    | 
patrick@0
  3029
      ## A posting to a newsgroup
patrick@0
  3030
      "newsposting"
patrick@0
  3031
    | 
patrick@0
  3032
      ## A part (as of a book)
patrick@0
  3033
      "part"
patrick@0
  3034
    | 
patrick@0
  3035
      ## A reference entry
patrick@0
  3036
      "refentry"
patrick@0
  3037
    | 
patrick@0
  3038
      ## A section (as of a book or article)
patrick@0
  3039
      "section"
patrick@0
  3040
    | 
patrick@0
  3041
      ## A series
patrick@0
  3042
      "series"
patrick@0
  3043
    | 
patrick@0
  3044
      ## A set (as of books)
patrick@0
  3045
      "set"
patrick@0
  3046
    | 
patrick@0
  3047
      ## A web page
patrick@0
  3048
      "webpage"
patrick@0
  3049
    | 
patrick@0
  3050
      ## A wiki page
patrick@0
  3051
      "wiki"
patrick@0
  3052
  db.citetitle.pubwork.attribute =
patrick@0
  3053
    
patrick@0
  3054
    ## Identifies the nature of the publication being cited
patrick@0
  3055
    attribute pubwork { db.citetitle.pubwork.enumeration }
patrick@0
  3056
  db.citetitle.role.attribute = attribute role { text }
patrick@0
  3057
  db.citetitle.attlist =
patrick@0
  3058
    db.citetitle.role.attribute?
patrick@0
  3059
    & db.common.attributes
patrick@0
  3060
    & db.common.linking.attributes
patrick@0
  3061
    & db.citetitle.pubwork.attribute?
patrick@0
  3062
  db.citetitle =
patrick@0
  3063
    
patrick@0
  3064
    ## The title of a cited work
patrick@0
  3065
    element citetitle { db.citetitle.attlist, db.all.inlines* }
patrick@0
  3066
}
patrick@0
  3067
div {
patrick@0
  3068
  db.emphasis.role.attribute = attribute role { text }
patrick@0
  3069
  db.emphasis.attlist =
patrick@0
  3070
    db.emphasis.role.attribute?
patrick@0
  3071
    & db.common.attributes
patrick@0
  3072
    & db.common.linking.attributes
patrick@0
  3073
  db.emphasis =
patrick@0
  3074
    
patrick@0
  3075
    ## Emphasized text
patrick@0
  3076
    element emphasis { db.emphasis.attlist, db.all.inlines* }
patrick@0
  3077
}
patrick@0
  3078
div {
patrick@0
  3079
  db._emphasis =
patrick@0
  3080
    
patrick@0
  3081
    ## A limited span of emphasized text
patrick@0
  3082
    element emphasis { db.emphasis.attlist, db._text }
patrick@0
  3083
}
patrick@0
  3084
div {
patrick@0
  3085
  db.foreignphrase.role.attribute = attribute role { text }
patrick@0
  3086
  db.foreignphrase.attlist =
patrick@0
  3087
    db.foreignphrase.role.attribute?
patrick@0
  3088
    & db.common.attributes
patrick@0
  3089
    & db.common.linking.attributes
patrick@0
  3090
  db.foreignphrase =
patrick@0
  3091
    
patrick@0
  3092
    ## A word or phrase in a language other than the primary language of the document
patrick@0
  3093
    element foreignphrase {
patrick@0
  3094
      db.foreignphrase.attlist, (text | db.general.inlines)*
patrick@0
  3095
    }
patrick@0
  3096
}
patrick@0
  3097
div {
patrick@0
  3098
  db._foreignphrase.role.attribute = attribute role { text }
patrick@0
  3099
  db._foreignphrase.attlist =
patrick@0
  3100
    db._foreignphrase.role.attribute?
patrick@0
  3101
    & db.common.attributes
patrick@0
  3102
    & db.common.linking.attributes
patrick@0
  3103
  db._foreignphrase =
patrick@0
  3104
    
patrick@0
  3105
    ## A limited word or phrase in a language other than the primary language of the document
patrick@0
  3106
    element foreignphrase { db._foreignphrase.attlist, db._text }
patrick@0
  3107
}
patrick@0
  3108
div {
patrick@0
  3109
  db.phrase.role.attribute = attribute role { text }
patrick@0
  3110
  db.phrase.attlist =
patrick@0
  3111
    db.phrase.role.attribute?
patrick@0
  3112
    & db.common.attributes
patrick@0
  3113
    & db.common.linking.attributes
patrick@0
  3114
  db.phrase =
patrick@0
  3115
    
patrick@0
  3116
    ## A span of text
patrick@0
  3117
    element phrase { db.phrase.attlist, db.all.inlines* }
patrick@0
  3118
}
patrick@0
  3119
div {
patrick@0
  3120
  db._phrase =
patrick@0
  3121
    
patrick@0
  3122
    ## A limited span of text
patrick@0
  3123
    element phrase { db.phrase.attlist, db._text }
patrick@0
  3124
}
patrick@0
  3125
div {
patrick@0
  3126
  db.quote.role.attribute = attribute role { text }
patrick@0
  3127
  db.quote.attlist =
patrick@0
  3128
    db.quote.role.attribute?
patrick@0
  3129
    & db.common.attributes
patrick@0
  3130
    & db.common.linking.attributes
patrick@0
  3131
  db.quote =
patrick@0
  3132
    
patrick@0
  3133
    ## An inline quotation
patrick@0
  3134
    element quote { db.quote.attlist, db.all.inlines* }
patrick@0
  3135
}
patrick@0
  3136
div {
patrick@0
  3137
  db._quote.role.attribute = attribute role { text }
patrick@0
  3138
  db._quote.attlist =
patrick@0
  3139
    db._quote.role.attribute?
patrick@0
  3140
    & db.common.attributes
patrick@0
  3141
    & db.common.linking.attributes
patrick@0
  3142
  db._quote =
patrick@0
  3143
    
patrick@0
  3144
    ## A limited inline quotation
patrick@0
  3145
    element quote { db._quote.attlist, db._text }
patrick@0
  3146
}
patrick@0
  3147
div {
patrick@0
  3148
  db.subscript.role.attribute = attribute role { text }
patrick@0
  3149
  db.subscript.attlist =
patrick@0
  3150
    db.subscript.role.attribute?
patrick@0
  3151
    & db.common.attributes
patrick@0
  3152
    & db.common.linking.attributes
patrick@0
  3153
  db.subscript =
patrick@0
  3154
    
patrick@0
  3155
    ## A subscript (as in H2
patrick@0
  3156
    ## O, the molecular formula for water)
patrick@0
  3157
    element subscript { db.subscript.attlist, db._text }
patrick@0
  3158
}
patrick@0
  3159
div {
patrick@0
  3160
  db.superscript.role.attribute = attribute role { text }
patrick@0
  3161
  db.superscript.attlist =
patrick@0
  3162
    db.superscript.role.attribute?
patrick@0
  3163
    & db.common.attributes
patrick@0
  3164
    & db.common.linking.attributes
patrick@0
  3165
  db.superscript =
patrick@0
  3166
    
patrick@0
  3167
    ## A superscript (as in x2
patrick@0
  3168
    ## , the mathematical notation for x multiplied by itself)
patrick@0
  3169
    element superscript { db.superscript.attlist, db._text }
patrick@0
  3170
}
patrick@0
  3171
div {
patrick@0
  3172
  db.trademark.class.enumeration =
patrick@0
  3173
    
patrick@0
  3174
    ## A copyright
patrick@0
  3175
    "copyright"
patrick@0
  3176
    | 
patrick@0
  3177
      ## A registered copyright
patrick@0
  3178
      "registered"
patrick@0
  3179
    | 
patrick@0
  3180
      ## A service
patrick@0
  3181
      "service"
patrick@0
  3182
    | 
patrick@0
  3183
      ## A trademark
patrick@0
  3184
      "trade"
patrick@0
  3185
  db.trademark.class.attribute =
patrick@0
  3186
    
patrick@0
  3187
    ## Identifies the class of trade mark
patrick@0
  3188
    attribute class { db.trademark.class.enumeration }
patrick@0
  3189
  db.trademark.role.attribute = attribute role { text }
patrick@0
  3190
  db.trademark.attlist =
patrick@0
  3191
    db.trademark.role.attribute?
patrick@0
  3192
    & db.common.attributes
patrick@0
  3193
    & db.common.linking.attributes
patrick@0
  3194
    & db.trademark.class.attribute?
patrick@0
  3195
  db.trademark =
patrick@0
  3196
    
patrick@0
  3197
    ## A trademark
patrick@0
  3198
    element trademark { db.trademark.attlist, db._text }
patrick@0
  3199
}
patrick@0
  3200
div {
patrick@0
  3201
  db.wordasword.role.attribute = attribute role { text }
patrick@0
  3202
  db.wordasword.attlist =
patrick@0
  3203
    db.wordasword.role.attribute?
patrick@0
  3204
    & db.common.attributes
patrick@0
  3205
    & db.common.linking.attributes
patrick@0
  3206
  db.wordasword =
patrick@0
  3207
    
patrick@0
  3208
    ## A word meant specifically as a word and not representing anything else
patrick@0
  3209
    element wordasword { db.wordasword.attlist, db._text }
patrick@0
  3210
}
patrick@0
  3211
div {
patrick@0
  3212
  db.footnoteref.role.attribute = attribute role { text }
patrick@0
  3213
  db.footnoteref.label.attribute = db.label.attribute
patrick@0
  3214
  db.footnoteref.attlist =
patrick@0
  3215
    db.footnoteref.role.attribute?
patrick@0
  3216
    & db.common.attributes
patrick@0
  3217
    & db.linkend.attribute
patrick@0
  3218
    & db.footnoteref.label.attribute?
patrick@0
  3219
  db.footnoteref =
patrick@0
  3220
    
patrick@0
  3221
    ## A cross reference to a footnote (a footnote mark)
patrick@0
  3222
    element footnoteref { db.footnoteref.attlist, empty }
patrick@0
  3223
}
patrick@0
  3224
div {
patrick@0
  3225
  db.xref.role.attribute = attribute role { text }
patrick@0
  3226
  db.xref.xrefstyle.attribute = db.xrefstyle.attribute
patrick@0
  3227
  db.xref.endterm.attribute = db.endterm.attribute
patrick@0
  3228
  db.xref.attlist =
patrick@0
  3229
    db.xref.role.attribute?
patrick@0
  3230
    & db.common.attributes
patrick@0
  3231
    & db.common.req.linking.attributes
patrick@0
  3232
    & db.xref.xrefstyle.attribute?
patrick@0
  3233
    & db.xref.endterm.attribute?
patrick@0
  3234
  db.xref =
patrick@0
  3235
    
patrick@0
  3236
    ## A cross reference to another part of the document
patrick@0
  3237
    element xref { db.xref.attlist, empty }
patrick@0
  3238
}
patrick@0
  3239
div {
patrick@0
  3240
  db.link.role.attribute = attribute role { text }
patrick@0
  3241
  db.link.xrefstyle.attribute = db.xrefstyle.attribute
patrick@0
  3242
  db.link.endterm.attribute = db.endterm.attribute
patrick@0
  3243
  db.link.attlist =
patrick@0
  3244
    db.link.role.attribute?
patrick@0
  3245
    & db.common.attributes
patrick@0
  3246
    & db.common.req.linking.attributes
patrick@0
  3247
    & db.link.xrefstyle.attribute?
patrick@0
  3248
    & db.link.endterm.attribute?
patrick@0
  3249
  db.link =
patrick@0
  3250
    
patrick@0
  3251
    ## A hypertext link
patrick@0
  3252
    element link { db.link.attlist, db.all.inlines* }
patrick@0
  3253
}
patrick@0
  3254
div {
patrick@0
  3255
  db.olink.role.attribute = attribute role { text }
patrick@0
  3256
  db.olink.xrefstyle.attribute = db.xrefstyle.attribute
patrick@0
  3257
  db.olink.localinfo.attribute =
patrick@0
  3258
    
patrick@0
  3259
    ## Holds additional information that may be used by the application when resolving the link
patrick@0
  3260
    attribute localinfo { text }
patrick@0
  3261
  db.olink.targetdoc.attribute =
patrick@0
  3262
    
patrick@0
  3263
    ## Specifies the URI of the document in which the link target appears
patrick@0
  3264
    attribute targetdoc { xsd:anyURI }
patrick@0
  3265
  db.olink.targetptr.attribute =
patrick@0
  3266
    
patrick@0
  3267
    ## Specifies the location of the link target in the document
patrick@0
  3268
    attribute targetptr { text }
patrick@0
  3269
  db.olink.type.attribute =
patrick@0
  3270
    
patrick@0
  3271
    ## Identifies application-specific customization of the link behavior
patrick@0
  3272
    attribute type { text }
patrick@0
  3273
  db.olink.attlist =
patrick@0
  3274
    db.common.attributes
patrick@0
  3275
    & db.olink.targetdoc.attribute?
patrick@0
  3276
    & db.olink.role.attribute?
patrick@0
  3277
    & db.olink.xrefstyle.attribute?
patrick@0
  3278
    & db.olink.localinfo.attribute?
patrick@0
  3279
    & db.olink.targetptr.attribute?
patrick@0
  3280
    & db.olink.type.attribute?
patrick@0
  3281
  db.olink =
patrick@0
  3282
    
patrick@0
  3283
    ## A link that addresses its target indirectly
patrick@0
  3284
    element olink { db.olink.attlist, db.all.inlines* }
patrick@0
  3285
}
patrick@0
  3286
div {
patrick@0
  3287
  db.anchor.role.attribute = attribute role { text }
patrick@0
  3288
  db.anchor.attlist =
patrick@0
  3289
    db.anchor.role.attribute? & db.common.idreq.attributes
patrick@0
  3290
  db.anchor =
patrick@0
  3291
    
patrick@0
  3292
    ## A spot in the document
patrick@0
  3293
    element anchor { db.anchor.attlist, empty }
patrick@0
  3294
}
patrick@0
  3295
div {
patrick@0
  3296
  db.alt.role.attribute = attribute role { text }
patrick@0
  3297
  db.alt.attlist = db.alt.role.attribute? & db.common.attributes
patrick@0
  3298
  db.alt =
patrick@0
  3299
    
patrick@0
  3300
    ## A text-only annotation, often used for accessibility
patrick@0
  3301
    element alt { db.alt.attlist, (text | db.inlinemediaobject)* }
patrick@0
  3302
}
patrick@0
  3303
db.status.attribute =
patrick@0
  3304
  
patrick@0
  3305
  ## Identifies the editorial or publication status of the element on which it occurs
patrick@0
  3306
  attribute status { text }
patrick@0
  3307
db.toplevel.sections =
patrick@0
  3308
  ((db.section+, db.simplesect*) | db.simplesect+)
patrick@0
  3309
  | (db.sect1+, db.simplesect*)
patrick@0
  3310
  | db.refentry+
patrick@0
  3311
db.toplevel.blocks.or.sections =
patrick@0
  3312
  (db.all.blocks+, db.toplevel.sections?) | db.toplevel.sections
patrick@0
  3313
db.recursive.sections =
patrick@0
  3314
  ((db.section+, db.simplesect*) | db.simplesect+)
patrick@0
  3315
  | db.refentry+
patrick@0
  3316
db.recursive.blocks.or.sections =
patrick@0
  3317
  (db.all.blocks+, db.recursive.sections?) | db.recursive.sections
patrick@0
  3318
db.divisions = db.part | db.reference
patrick@0
  3319
db.components =
patrick@0
  3320
  db.dedication
patrick@0
  3321
  | db.acknowledgements
patrick@0
  3322
  | db.preface
patrick@0
  3323
  | db.chapter
patrick@0
  3324
  | db.appendix
patrick@0
  3325
  | db.article
patrick@0
  3326
  | db.colophon
patrick@0
  3327
db.navigation.components =
patrick@0
  3328
  notAllowed | db.glossary | db.bibliography | db.index | db.toc
patrick@0
  3329
db.component.contentmodel =
patrick@0
  3330
  db.navigation.components*,
patrick@0
  3331
  db.toplevel.blocks.or.sections,
patrick@0
  3332
  db.navigation.components*
patrick@0
  3333
db.setindex.components = notAllowed | db.setindex
patrick@0
  3334
db.toc.components = notAllowed | db.toc
patrick@0
  3335
db.set.components = db.set | db.book
patrick@0
  3336
div {
patrick@0
  3337
  db.set.status.attribute = db.status.attribute
patrick@0
  3338
  db.set.role.attribute = attribute role { text }
patrick@0
  3339
  db.set.attlist =
patrick@0
  3340
    db.set.role.attribute?
patrick@0
  3341
    & db.common.attributes
patrick@0
  3342
    & db.common.linking.attributes
patrick@0
  3343
    & db.label.attribute?
patrick@0
  3344
    & db.set.status.attribute?
patrick@0
  3345
  db.set.info = db._info.title.req
patrick@0
  3346
  db.set =
patrick@0
  3347
    
patrick@0
  3348
    ## A collection of books
patrick@0
  3349
    element set {
patrick@0
  3350
      db.set.attlist,
patrick@0
  3351
      db.set.info,
patrick@0
  3352
      db.toc.components?,
patrick@0
  3353
      db.set.components+,
patrick@0
  3354
      db.setindex.components?
patrick@0
  3355
    }
patrick@0
  3356
}
patrick@0
  3357
db.book.components =
patrick@0
  3358
  (db.navigation.components | db.components | db.divisions)* | db.topic*
patrick@0
  3359
div {
patrick@0
  3360
  db.book.status.attribute = db.status.attribute
patrick@0
  3361
  db.book.role.attribute = attribute role { text }
patrick@0
  3362
  db.book.attlist =
patrick@0
  3363
    db.book.role.attribute?
patrick@0
  3364
    & db.common.attributes
patrick@0
  3365
    & db.common.linking.attributes
patrick@0
  3366
    & db.label.attribute?
patrick@0
  3367
    & db.book.status.attribute?
patrick@0
  3368
  db.book.info = db._info
patrick@0
  3369
  db.book =
patrick@0
  3370
    
patrick@0
  3371
    ## A book
patrick@0
  3372
    element book { db.book.attlist, db.book.info, db.book.components }
patrick@0
  3373
}
patrick@0
  3374
div {
patrick@0
  3375
  db.dedication.status.attribute = db.status.attribute
patrick@0
  3376
  db.dedication.role.attribute = attribute role { text }
patrick@0
  3377
  db.dedication.attlist =
patrick@0
  3378
    db.dedication.role.attribute?
patrick@0
  3379
    & db.common.attributes
patrick@0
  3380
    & db.common.linking.attributes
patrick@0
  3381
    & db.label.attribute?
patrick@0
  3382
    & db.dedication.status.attribute?
patrick@0
  3383
  db.dedication.info = db._info
patrick@0
  3384
  db.dedication =
patrick@0
  3385
    
patrick@0
  3386
    ## The dedication of a book or other component
patrick@0
  3387
    element dedication {
patrick@0
  3388
      db.dedication.attlist, db.dedication.info, db.all.blocks+
patrick@0
  3389
    }
patrick@0
  3390
}
patrick@0
  3391
div {
patrick@0
  3392
  db.acknowledgements.status.attribute = db.status.attribute
patrick@0
  3393
  db.acknowledgements.role.attribute = attribute role { text }
patrick@0
  3394
  db.acknowledgements.attlist =
patrick@0
  3395
    db.acknowledgements.role.attribute?
patrick@0
  3396
    & db.common.attributes
patrick@0
  3397
    & db.common.linking.attributes
patrick@0
  3398
    & db.label.attribute?
patrick@0
  3399
    & db.acknowledgements.status.attribute?
patrick@0
  3400
  db.acknowledgements.info = db._info
patrick@0
  3401
  db.acknowledgements =
patrick@0
  3402
    
patrick@0
  3403
    ## Acknowledgements of a book or other component
patrick@0
  3404
    element acknowledgements {
patrick@0
  3405
      db.acknowledgements.attlist,
patrick@0
  3406
      db.acknowledgements.info,
patrick@0
  3407
      db.all.blocks+
patrick@0
  3408
    }
patrick@0
  3409
}
patrick@0
  3410
div {
patrick@0
  3411
  db.colophon.status.attribute = db.status.attribute
patrick@0
  3412
  db.colophon.role.attribute = attribute role { text }
patrick@0
  3413
  db.colophon.attlist =
patrick@0
  3414
    db.colophon.role.attribute?
patrick@0
  3415
    & db.common.attributes
patrick@0
  3416
    & db.common.linking.attributes
patrick@0
  3417
    & db.label.attribute?
patrick@0
  3418
    & db.colophon.status.attribute?
patrick@0
  3419
  db.colophon.info = db._info
patrick@0
  3420
  db.colophon =
patrick@0
  3421
    
patrick@0
  3422
    ## Text at the back of a book describing facts about its production
patrick@0
  3423
    element colophon {
patrick@0
  3424
      db.colophon.attlist,
patrick@0
  3425
      db.colophon.info,
patrick@0
  3426
      ((db.all.blocks+, db.simplesect*)
patrick@0
  3427
       | (db.all.blocks*, db.simplesect+))
patrick@0
  3428
    }
patrick@0
  3429
}
patrick@0
  3430
div {
patrick@0
  3431
  db.appendix.status.attribute = db.status.attribute
patrick@0
  3432
  db.appendix.role.attribute = attribute role { text }
patrick@0
  3433
  db.appendix.attlist =
patrick@0
  3434
    db.appendix.role.attribute?
patrick@0
  3435
    & db.common.attributes
patrick@0
  3436
    & db.common.linking.attributes
patrick@0
  3437
    & db.label.attribute?
patrick@0
  3438
    & db.appendix.status.attribute?
patrick@0
  3439
  db.appendix.info = db._info.title.req
patrick@0
  3440
  db.appendix =
patrick@0
  3441
    
patrick@0
  3442
    ## An appendix in a book or article
patrick@0
  3443
    element appendix {
patrick@0
  3444
      db.appendix.attlist, db.appendix.info, db.component.contentmodel
patrick@0
  3445
    }
patrick@0
  3446
}
patrick@0
  3447
div {
patrick@0
  3448
  db.chapter.status.attribute = db.status.attribute
patrick@0
  3449
  db.chapter.role.attribute = attribute role { text }
patrick@0
  3450
  db.chapter.attlist =
patrick@0
  3451
    db.chapter.role.attribute?
patrick@0
  3452
    & db.common.attributes
patrick@0
  3453
    & db.common.linking.attributes
patrick@0
  3454
    & db.label.attribute?
patrick@0
  3455
    & db.chapter.status.attribute?
patrick@0
  3456
  db.chapter.info = db._info.title.req
patrick@0
  3457
  db.chapter =
patrick@0
  3458
    
patrick@0
  3459
    ## A chapter, as of a book
patrick@0
  3460
    element chapter {
patrick@0
  3461
      db.chapter.attlist, db.chapter.info, db.component.contentmodel
patrick@0
  3462
    }
patrick@0
  3463
}
patrick@0
  3464
db.part.components =
patrick@0
  3465
  (db.navigation.components | db.components)
patrick@0
  3466
  | (db.refentry | db.reference)
patrick@0
  3467
db.part.contentmodel = db.part.components+ | db.topic+
patrick@0
  3468
div {
patrick@0
  3469
  db.part.status.attribute = db.status.attribute
patrick@0
  3470
  db.part.role.attribute = attribute role { text }
patrick@0
  3471
  db.part.attlist =
patrick@0
  3472
    db.part.role.attribute?
patrick@0
  3473
    & db.common.attributes
patrick@0
  3474
    & db.common.linking.attributes
patrick@0
  3475
    & db.label.attribute?
patrick@0
  3476
    & db.part.status.attribute?
patrick@0
  3477
  db.part.info = db._info.title.req
patrick@0
  3478
  db.part =
patrick@0
  3479
    
patrick@0
  3480
    ## A division in a book
patrick@0
  3481
    element part {
patrick@0
  3482
      db.part.attlist, db.part.info, db.partintro?, db.part.contentmodel
patrick@0
  3483
    }
patrick@0
  3484
}
patrick@0
  3485
div {
patrick@0
  3486
  db.preface.status.attribute = db.status.attribute
patrick@0
  3487
  db.preface.role.attribute = attribute role { text }
patrick@0
  3488
  db.preface.attlist =
patrick@0
  3489
    db.preface.role.attribute?
patrick@0
  3490
    & db.common.attributes
patrick@0
  3491
    & db.common.linking.attributes
patrick@0
  3492
    & db.label.attribute?
patrick@0
  3493
    & db.preface.status.attribute?
patrick@0
  3494
  db.preface.info = db._info.title.req
patrick@0
  3495
  db.preface =
patrick@0
  3496
    
patrick@0
  3497
    ## Introductory matter preceding the first chapter of a book
patrick@0
  3498
    element preface {
patrick@0
  3499
      db.preface.attlist, db.preface.info, db.component.contentmodel
patrick@0
  3500
    }
patrick@0
  3501
}
patrick@0
  3502
div {
patrick@0
  3503
  db.partintro.status.attribute = db.status.attribute
patrick@0
  3504
  db.partintro.role.attribute = attribute role { text }
patrick@0
  3505
  db.partintro.attlist =
patrick@0
  3506
    db.partintro.role.attribute?
patrick@0
  3507
    & db.common.attributes
patrick@0
  3508
    & db.common.linking.attributes
patrick@0
  3509
    & db.label.attribute?
patrick@0
  3510
    & db.partintro.status.attribute?
patrick@0
  3511
  db.partintro.info = db._info
patrick@0
  3512
  db.partintro =
patrick@0
  3513
    
patrick@0
  3514
    ## An introduction to the contents of a part
patrick@0
  3515
    element partintro {
patrick@0
  3516
      db.partintro.attlist,
patrick@0
  3517
      db.partintro.info,
patrick@0
  3518
      db.toplevel.blocks.or.sections
patrick@0
  3519
    }
patrick@0
  3520
}
patrick@0
  3521
div {
patrick@0
  3522
  db.section.status.attribute = db.status.attribute
patrick@0
  3523
  db.section.role.attribute = attribute role { text }
patrick@0
  3524
  db.section.attlist =
patrick@0
  3525
    db.section.role.attribute?
patrick@0
  3526
    & db.common.attributes
patrick@0
  3527
    & db.common.linking.attributes
patrick@0
  3528
    & db.label.attribute?
patrick@0
  3529
    & db.section.status.attribute?
patrick@0
  3530
  db.section.info = db._info.title.req
patrick@0
  3531
  db.section =
patrick@0
  3532
    
patrick@0
  3533
    ## A recursive section
patrick@0
  3534
    element section {
patrick@0
  3535
      db.section.attlist,
patrick@0
  3536
      db.section.info,
patrick@0
  3537
      db.recursive.blocks.or.sections,
patrick@0
  3538
      db.navigation.components*
patrick@0
  3539
    }
patrick@0
  3540
}
patrick@0
  3541
div {
patrick@0
  3542
  db.simplesect.status.attribute = db.status.attribute
patrick@0
  3543
  db.simplesect.role.attribute = attribute role { text }
patrick@0
  3544
  db.simplesect.attlist =
patrick@0
  3545
    db.simplesect.role.attribute?
patrick@0
  3546
    & db.common.attributes
patrick@0
  3547
    & db.common.linking.attributes
patrick@0
  3548
    & db.label.attribute?
patrick@0
  3549
    & db.simplesect.status.attribute?
patrick@0
  3550
  db.simplesect.info = db._info.title.req
patrick@0
  3551
  db.simplesect =
patrick@0
  3552
    
patrick@0
  3553
    ## A section of a document with no subdivisions
patrick@0
  3554
    element simplesect {
patrick@0
  3555
      db.simplesect.attlist, db.simplesect.info, db.all.blocks+
patrick@0
  3556
    }
patrick@0
  3557
}
patrick@0
  3558
db.article.components = db.toplevel.sections
patrick@0
  3559
div {
patrick@0
  3560
  db.article.status.attribute = db.status.attribute
patrick@0
  3561
  db.article.class.enumeration =
patrick@0
  3562
    
patrick@0
  3563
    ## A collection of frequently asked questions.
patrick@0
  3564
    "faq"
patrick@0
  3565
    | 
patrick@0
  3566
      ## An article in a journal or other periodical.
patrick@0
  3567
      "journalarticle"
patrick@0
  3568
    | 
patrick@0
  3569
      ## A description of a product.
patrick@0
  3570
      "productsheet"
patrick@0
  3571
    | 
patrick@0
  3572
      ## A specification.
patrick@0
  3573
      "specification"
patrick@0
  3574
    | 
patrick@0
  3575
      ## A technical report.
patrick@0
  3576
      "techreport"
patrick@0
  3577
    | 
patrick@0
  3578
      ## A white paper.
patrick@0
  3579
      "whitepaper"
patrick@0
  3580
  db.article.class.attribute =
patrick@0
  3581
    
patrick@0
  3582
    ## Identifies the nature of the article
patrick@0
  3583
    attribute class { db.article.class.enumeration }
patrick@0
  3584
  db.article.role.attribute = attribute role { text }
patrick@0
  3585
  db.article.attlist =
patrick@0
  3586
    db.article.role.attribute?
patrick@0
  3587
    & db.common.attributes
patrick@0
  3588
    & db.common.linking.attributes
patrick@0
  3589
    & db.label.attribute?
patrick@0
  3590
    & db.article.status.attribute?
patrick@0
  3591
    & db.article.class.attribute?
patrick@0
  3592
  db.article.info = db._info.title.req
patrick@0
  3593
  db.article =
patrick@0
  3594
    
patrick@0
  3595
    ## An article
patrick@0
  3596
    element article {
patrick@0
  3597
      db.article.attlist,
patrick@0
  3598
      db.article.info,
patrick@0
  3599
      (db.navigation.components
patrick@0
  3600
       | db.appendix
patrick@0
  3601
       | db.acknowledgements
patrick@0
  3602
       | db.colophon)*,
patrick@0
  3603
      ((db.all.blocks+, db.article.components?)
patrick@0
  3604
       | db.article.components),
patrick@0
  3605
      (db.navigation.components
patrick@0
  3606
       | db.appendix
patrick@0
  3607
       | db.acknowledgements
patrick@0
  3608
       | db.colophon)*
patrick@0
  3609
    }
patrick@0
  3610
}
patrick@0
  3611
db.annotations.attribute =
patrick@0
  3612
  
patrick@0
  3613
  ## Identifies one or more annotations that apply to this element
patrick@0
  3614
  attribute annotations { text }
patrick@0
  3615
div {
patrick@0
  3616
  db.annotation.role.attribute = attribute role { text }
patrick@0
  3617
  db.annotation.annotates.attribute =
patrick@0
  3618
    
patrick@0
  3619
    ## Identifies one ore more elements to which this annotation applies
patrick@0
  3620
    attribute annotates { text }
patrick@0
  3621
  db.annotation.attlist =
patrick@0
  3622
    db.annotation.role.attribute?
patrick@0
  3623
    & db.annotation.annotates.attribute?
patrick@0
  3624
    & db.common.attributes
patrick@0
  3625
  db.annotation.info = db._info.title.only
patrick@0
  3626
  db.annotation =
patrick@0
  3627
    
patrick@0
  3628
    ## An annotation
patrick@0
  3629
    element annotation {
patrick@0
  3630
      db.annotation.attlist, db.annotation.info, db.all.blocks+
patrick@0
  3631
    }
patrick@0
  3632
}
patrick@0
  3633
db.xlink.from.attribute =
patrick@0
  3634
  
patrick@0
  3635
  ## Specifies the XLink traversal-from
patrick@0
  3636
  attribute xlink:from { xsd:NMTOKEN }
patrick@0
  3637
db.xlink.label.attribute =
patrick@0
  3638
  
patrick@0
  3639
  ## Specifies the XLink label
patrick@0
  3640
  attribute xlink:label { xsd:NMTOKEN }
patrick@0
  3641
db.xlink.to.attribute =
patrick@0
  3642
  
patrick@0
  3643
  ## Specifies the XLink traversal-to
patrick@0
  3644
  attribute xlink:to { xsd:NMTOKEN }
patrick@0
  3645
div {
patrick@0
  3646
  db.extendedlink.role.attribute = attribute role { text }
patrick@0
  3647
  db.extendedlink.attlist =
patrick@0
  3648
    db.extendedlink.role.attribute?
patrick@0
  3649
    & db.common.attributes
patrick@0
  3650
    & 
patrick@0
  3651
      ## Identifies the XLink link type 
patrick@0
  3652
      [ a:defaultValue = "extended" ]
patrick@0
  3653
      attribute xlink:type {
patrick@0
  3654
        
patrick@0
  3655
        ## An XLink extended link
patrick@0
  3656
        "extended"
patrick@0
  3657
      }?
patrick@0
  3658
    & db.xlink.role.attribute?
patrick@0
  3659
    & db.xlink.title.attribute?
patrick@0
  3660
  db.extendedlink =
patrick@0
  3661
    
patrick@0
  3662
    ## An XLink extended link
patrick@0
  3663
    element extendedlink {
patrick@0
  3664
      db.extendedlink.attlist, (db.locator | db.arc)+
patrick@0
  3665
    }
patrick@0
  3666
}
patrick@0
  3667
div {
patrick@0
  3668
  db.locator.role.attribute = attribute role { text }
patrick@0
  3669
  db.locator.attlist =
patrick@0
  3670
    db.locator.role.attribute?
patrick@0
  3671
    & db.common.attributes
patrick@0
  3672
    & 
patrick@0
  3673
      ## Identifies the XLink link type 
patrick@0
  3674
      [ a:defaultValue = "locator" ]
patrick@0
  3675
      attribute xlink:type {
patrick@0
  3676
        
patrick@0
  3677
        ## An XLink locator link
patrick@0
  3678
        "locator"
patrick@0
  3679
      }?
patrick@0
  3680
    & db.xlink.href.attribute
patrick@0
  3681
    & db.xlink.role.attribute?
patrick@0
  3682
    & db.xlink.title.attribute?
patrick@0
  3683
    & db.xlink.label.attribute?
patrick@0
  3684
  db.locator =
patrick@0
  3685
    
patrick@0
  3686
    ## An XLink locator in an extendedlink
patrick@0
  3687
    element locator { db.locator.attlist, empty }
patrick@0
  3688
}
patrick@0
  3689
div {
patrick@0
  3690
  db.arc.role.attribute = attribute role { text }
patrick@0
  3691
  db.arc.attlist =
patrick@0
  3692
    db.arc.role.attribute?
patrick@0
  3693
    & db.common.attributes
patrick@0
  3694
    & 
patrick@0
  3695
      ## Identifies the XLink link type 
patrick@0
  3696
      [ a:defaultValue = "arc" ]
patrick@0
  3697
      attribute xlink:type {
patrick@0
  3698
        
patrick@0
  3699
        ## An XLink arc link
patrick@0
  3700
        "arc"
patrick@0
  3701
      }?
patrick@0
  3702
    & db.xlink.arcrole.attribute?
patrick@0
  3703
    & db.xlink.title.attribute?
patrick@0
  3704
    & db.xlink.show.attribute?
patrick@0
  3705
    & db.xlink.actuate.attribute?
patrick@0
  3706
    & db.xlink.from.attribute?
patrick@0
  3707
    & db.xlink.to.attribute?
patrick@0
  3708
  db.arc =
patrick@0
  3709
    
patrick@0
  3710
    ## An XLink arc in an extendedlink
patrick@0
  3711
    element arc { db.arc.attlist, empty }
patrick@0
  3712
}
patrick@0
  3713
db.sect1.sections = (db.sect2+, db.simplesect*) | db.simplesect+
patrick@0
  3714
div {
patrick@0
  3715
  db.sect1.status.attribute = db.status.attribute
patrick@0
  3716
  db.sect1.role.attribute = attribute role { text }
patrick@0
  3717
  db.sect1.attlist =
patrick@0
  3718
    db.sect1.role.attribute?
patrick@0
  3719
    & db.common.attributes
patrick@0
  3720
    & db.common.linking.attributes
patrick@0
  3721
    & db.label.attribute?
patrick@0
  3722
    & db.sect1.status.attribute?
patrick@0
  3723
  db.sect1.info = db._info.title.req
patrick@0
  3724
  db.sect1 =
patrick@0
  3725
    
patrick@0
  3726
    ## A top-level section of document
patrick@0
  3727
    element sect1 {
patrick@0
  3728
      db.sect1.attlist,
patrick@0
  3729
      db.sect1.info,
patrick@0
  3730
      ((db.all.blocks+, db.sect1.sections?) | db.sect1.sections),
patrick@0
  3731
      db.navigation.components*
patrick@0
  3732
    }
patrick@0
  3733
}
patrick@0
  3734
db.sect2.sections = (db.sect3+, db.simplesect*) | db.simplesect+
patrick@0
  3735
div {
patrick@0
  3736
  db.sect2.status.attribute = db.status.attribute
patrick@0
  3737
  db.sect2.role.attribute = attribute role { text }
patrick@0
  3738
  db.sect2.attlist =
patrick@0
  3739
    db.sect2.role.attribute?
patrick@0
  3740
    & db.common.attributes
patrick@0
  3741
    & db.common.linking.attributes
patrick@0
  3742
    & db.label.attribute?
patrick@0
  3743
    & db.sect2.status.attribute?
patrick@0
  3744
  db.sect2.info = db._info.title.req
patrick@0
  3745
  db.sect2 =
patrick@0
  3746
    
patrick@0
  3747
    ## A subsection within a sect1
patrick@0
  3748
    element sect2 {
patrick@0
  3749
      db.sect2.attlist,
patrick@0
  3750
      db.sect2.info,
patrick@0
  3751
      ((db.all.blocks+, db.sect2.sections?) | db.sect2.sections),
patrick@0
  3752
      db.navigation.components*
patrick@0
  3753
    }
patrick@0
  3754
}
patrick@0
  3755
db.sect3.sections = (db.sect4+, db.simplesect*) | db.simplesect+
patrick@0
  3756
div {
patrick@0
  3757
  db.sect3.status.attribute = db.status.attribute
patrick@0
  3758
  db.sect3.role.attribute = attribute role { text }
patrick@0
  3759
  db.sect3.attlist =
patrick@0
  3760
    db.sect3.role.attribute?
patrick@0
  3761
    & db.common.attributes
patrick@0
  3762
    & db.common.linking.attributes
patrick@0
  3763
    & db.label.attribute?
patrick@0
  3764
    & db.sect3.status.attribute?
patrick@0
  3765
  db.sect3.info = db._info.title.req
patrick@0
  3766
  db.sect3 =
patrick@0
  3767
    
patrick@0
  3768
    ## A subsection within a sect2
patrick@0
  3769
    element sect3 {
patrick@0
  3770
      db.sect3.attlist,
patrick@0
  3771
      db.sect3.info,
patrick@0
  3772
      ((db.all.blocks+, db.sect3.sections?) | db.sect3.sections),
patrick@0
  3773
      db.navigation.components*
patrick@0
  3774
    }
patrick@0
  3775
}
patrick@0
  3776
db.sect4.sections = (db.sect5+, db.simplesect*) | db.simplesect+
patrick@0
  3777
div {
patrick@0
  3778
  db.sect4.status.attribute = db.status.attribute
patrick@0
  3779
  db.sect4.role.attribute = attribute role { text }
patrick@0
  3780
  db.sect4.attlist =
patrick@0
  3781
    db.sect4.role.attribute?
patrick@0
  3782
    & db.common.attributes
patrick@0
  3783
    & db.common.linking.attributes
patrick@0
  3784
    & db.label.attribute?
patrick@0
  3785
    & db.sect4.status.attribute?
patrick@0
  3786
  db.sect4.info = db._info.title.req
patrick@0
  3787
  db.sect4 =
patrick@0
  3788
    
patrick@0
  3789
    ## A subsection within a sect3
patrick@0
  3790
    element sect4 {
patrick@0
  3791
      db.sect4.attlist,
patrick@0
  3792
      db.sect4.info,
patrick@0
  3793
      ((db.all.blocks+, db.sect4.sections?) | db.sect4.sections),
patrick@0
  3794
      db.navigation.components*
patrick@0
  3795
    }
patrick@0
  3796
}
patrick@0
  3797
db.sect5.sections = db.simplesect+
patrick@0
  3798
div {
patrick@0
  3799
  db.sect5.status.attribute = db.status.attribute
patrick@0
  3800
  db.sect5.role.attribute = attribute role { text }
patrick@0
  3801
  db.sect5.attlist =
patrick@0
  3802
    db.sect5.role.attribute?
patrick@0
  3803
    & db.common.attributes
patrick@0
  3804
    & db.common.linking.attributes
patrick@0
  3805
    & db.label.attribute?
patrick@0
  3806
    & db.sect5.status.attribute?
patrick@0
  3807
  db.sect5.info = db._info.title.req
patrick@0
  3808
  db.sect5 =
patrick@0
  3809
    
patrick@0
  3810
    ## A subsection within a sect4
patrick@0
  3811
    element sect5 {
patrick@0
  3812
      db.sect5.attlist,
patrick@0
  3813
      db.sect5.info,
patrick@0
  3814
      ((db.all.blocks+, db.sect5.sections?) | db.sect5.sections),
patrick@0
  3815
      db.navigation.components*
patrick@0
  3816
    }
patrick@0
  3817
}
patrick@0
  3818
db.toplevel.refsection = db.refsection+ | db.refsect1+
patrick@0
  3819
db.secondlevel.refsection = db.refsection+ | db.refsect2+
patrick@0
  3820
db.reference.components = db.refentry
patrick@0
  3821
div {
patrick@0
  3822
  db.reference.status.attribute = db.status.attribute
patrick@0
  3823
  db.reference.role.attribute = attribute role { text }
patrick@0
  3824
  db.reference.attlist =
patrick@0
  3825
    db.reference.role.attribute?
patrick@0
  3826
    & db.common.attributes
patrick@0
  3827
    & db.common.linking.attributes
patrick@0
  3828
    & db.reference.status.attribute?
patrick@0
  3829
    & db.label.attribute?
patrick@0
  3830
  db.reference.info = db._info.title.req
patrick@0
  3831
  db.reference =
patrick@0
  3832
    
patrick@0
  3833
    ## A collection of reference entries
patrick@0
  3834
    element reference {
patrick@0
  3835
      db.reference.attlist,
patrick@0
  3836
      db.reference.info,
patrick@0
  3837
      db.partintro?,
patrick@0
  3838
      db.reference.components+
patrick@0
  3839
    }
patrick@0
  3840
}
patrick@0
  3841
div {
patrick@0
  3842
  db.refentry.status.attribute = db.status.attribute
patrick@0
  3843
  db.refentry.role.attribute = attribute role { text }
patrick@0
  3844
  db.refentry.attlist =
patrick@0
  3845
    db.refentry.role.attribute?
patrick@0
  3846
    & db.common.attributes
patrick@0
  3847
    & db.common.linking.attributes
patrick@0
  3848
    & db.refentry.status.attribute?
patrick@0
  3849
    & db.label.attribute?
patrick@0
  3850
  db.refentry.info = db._info.title.forbidden
patrick@0
  3851
  db.refentry =
patrick@0
  3852
    
patrick@0
  3853
    ## A reference page (originally a UNIX man-style reference page)
patrick@0
  3854
    element refentry {
patrick@0
  3855
      db.refentry.attlist,
patrick@0
  3856
      db.indexterm*,
patrick@0
  3857
      db.refentry.info,
patrick@0
  3858
      db.refmeta?,
patrick@0
  3859
      db.refnamediv+,
patrick@0
  3860
      db.refsynopsisdiv?,
patrick@0
  3861
      db.toplevel.refsection
patrick@0
  3862
    }
patrick@0
  3863
}
patrick@0
  3864
div {
patrick@0
  3865
  db.refmeta.role.attribute = attribute role { text }
patrick@0
  3866
  db.refmeta.attlist =
patrick@0
  3867
    db.refmeta.role.attribute?
patrick@0
  3868
    & db.common.attributes
patrick@0
  3869
    & db.common.linking.attributes
patrick@0
  3870
  db.refmeta =
patrick@0
  3871
    
patrick@0
  3872
    ## Meta-information for a reference entry
patrick@0
  3873
    element refmeta {
patrick@0
  3874
      db.refmeta.attlist,
patrick@0
  3875
      db.indexterm*,
patrick@0
  3876
      db.refentrytitle,
patrick@0
  3877
      db.manvolnum?,
patrick@0
  3878
      db.refmiscinfo*,
patrick@0
  3879
      db.indexterm*
patrick@0
  3880
    }
patrick@0
  3881
}
patrick@0
  3882
db.refmiscinfo.class.enumeration =
patrick@0
  3883
  
patrick@0
  3884
  ## The name of the software product or component to which this topic applies
patrick@0
  3885
  "source"
patrick@0
  3886
  | 
patrick@0
  3887
    ## The version of the software product or component to which this topic applies
patrick@0
  3888
    "version"
patrick@0
  3889
  | 
patrick@0
  3890
    ## The section title of the reference page (e.g., User Commands)
patrick@0
  3891
    "manual"
patrick@0
  3892
  | 
patrick@0
  3893
    ## The section title of the reference page (believed synonymous with "manual" but in wide use)
patrick@0
  3894
    "sectdesc"
patrick@0
  3895
  | 
patrick@0
  3896
    ## The name of the software product or component to which this topic applies (e.g., SunOS x.y; believed synonymous with "source" but in wide use)
patrick@0
  3897
    "software"
patrick@0
  3898
db.refmiscinfo.class-enum.attribute =
patrick@0
  3899
  
patrick@0
  3900
  ## Identifies the kind of miscellaneous information
patrick@0
  3901
  attribute class { db.refmiscinfo.class.enumeration }?
patrick@0
  3902
db.refmiscinfo.class-other.attribute =
patrick@0
  3903
  
patrick@0
  3904
  ## Identifies the nature of non-standard miscellaneous information
patrick@0
  3905
  attribute otherclass { text }
patrick@0
  3906
db.refmiscinfo.class-other.attributes =
patrick@0
  3907
  
patrick@0
  3908
  ## Identifies the kind of miscellaneious information
patrick@0
  3909
  attribute class {
patrick@0
  3910
    
patrick@0
  3911
    ## Indicates that the information is some 'other' kind.
patrick@0
  3912
    "other"
patrick@0
  3913
  }
patrick@0
  3914
  & db.refmiscinfo.class-other.attribute
patrick@0
  3915
db.refmiscinfo.class.attribute =
patrick@0
  3916
  db.refmiscinfo.class-enum.attribute
patrick@0
  3917
  | db.refmiscinfo.class-other.attributes
patrick@0
  3918
div {
patrick@0
  3919
  db.refmiscinfo.role.attribute = attribute role { text }
patrick@0
  3920
  db.refmiscinfo.attlist =
patrick@0
  3921
    db.refmiscinfo.role.attribute?
patrick@0
  3922
    & db.common.attributes
patrick@0
  3923
    & db.common.linking.attributes
patrick@0
  3924
    & db.refmiscinfo.class.attribute?
patrick@0
  3925
  db.refmiscinfo =
patrick@0
  3926
    
patrick@0
  3927
    ## Meta-information for a reference entry other than the title and volume number
patrick@0
  3928
    element refmiscinfo { db.refmiscinfo.attlist, db._text }
patrick@0
  3929
}
patrick@0
  3930
div {
patrick@0
  3931
  db.refnamediv.role.attribute = attribute role { text }
patrick@0
  3932
  db.refnamediv.attlist =
patrick@0
  3933
    db.refnamediv.role.attribute?
patrick@0
  3934
    & db.common.attributes
patrick@0
  3935
    & db.common.linking.attributes
patrick@0
  3936
  db.refnamediv =
patrick@0
  3937
    
patrick@0
  3938
    ## The name, purpose, and classification of a reference page
patrick@0
  3939
    element refnamediv {
patrick@0
  3940
      db.refnamediv.attlist,
patrick@0
  3941
      db.refdescriptor?,
patrick@0
  3942
      db.refname+,
patrick@0
  3943
      db.refpurpose,
patrick@0
  3944
      db.refclass*
patrick@0
  3945
    }
patrick@0
  3946
}
patrick@0
  3947
div {
patrick@0
  3948
  db.refdescriptor.role.attribute = attribute role { text }
patrick@0
  3949
  db.refdescriptor.attlist =
patrick@0
  3950
    db.refdescriptor.role.attribute?
patrick@0
  3951
    & db.common.attributes
patrick@0
  3952
    & db.common.linking.attributes
patrick@0
  3953
  db.refdescriptor =
patrick@0
  3954
    
patrick@0
  3955
    ## A description of the topic of a reference page
patrick@0
  3956
    element refdescriptor { db.refdescriptor.attlist, db.all.inlines* }
patrick@0
  3957
}
patrick@0
  3958
div {
patrick@0
  3959
  db.refname.role.attribute = attribute role { text }
patrick@0
  3960
  db.refname.attlist =
patrick@0
  3961
    db.refname.role.attribute?
patrick@0
  3962
    & db.common.attributes
patrick@0
  3963
    & db.common.linking.attributes
patrick@0
  3964
  db.refname =
patrick@0
  3965
    
patrick@0
  3966
    ## The name of (one of) the subject(s) of a reference page
patrick@0
  3967
    element refname { db.refname.attlist, db.all.inlines* }
patrick@0
  3968
}
patrick@0
  3969
div {
patrick@0
  3970
  db.refpurpose.role.attribute = attribute role { text }
patrick@0
  3971
  db.refpurpose.attlist =
patrick@0
  3972
    db.refpurpose.role.attribute?
patrick@0
  3973
    & db.common.attributes
patrick@0
  3974
    & db.common.linking.attributes
patrick@0
  3975
  db.refpurpose =
patrick@0
  3976
    
patrick@0
  3977
    ## A short (one sentence) synopsis of the topic of a reference page
patrick@0
  3978
    element refpurpose { db.refpurpose.attlist, db.all.inlines* }
patrick@0
  3979
}
patrick@0
  3980
div {
patrick@0
  3981
  db.refclass.role.attribute = attribute role { text }
patrick@0
  3982
  db.refclass.attlist =
patrick@0
  3983
    db.refclass.role.attribute?
patrick@0
  3984
    & db.common.attributes
patrick@0
  3985
    & db.common.linking.attributes
patrick@0
  3986
  db.refclass =
patrick@0
  3987
    
patrick@0
  3988
    ## The scope or other indication of applicability of a reference entry
patrick@0
  3989
    element refclass { db.refclass.attlist, (text | db.application)* }
patrick@0
  3990
}
patrick@0
  3991
div {
patrick@0
  3992
  db.refsynopsisdiv.role.attribute = attribute role { text }
patrick@0
  3993
  db.refsynopsisdiv.attlist =
patrick@0
  3994
    db.refsynopsisdiv.role.attribute?
patrick@0
  3995
    & db.common.attributes
patrick@0
  3996
    & db.common.linking.attributes
patrick@0
  3997
  db.refsynopsisdiv.info = db._info
patrick@0
  3998
  db.refsynopsisdiv =
patrick@0
  3999
    
patrick@0
  4000
    ## A syntactic synopsis of the subject of the reference page
patrick@0
  4001
    element refsynopsisdiv {
patrick@0
  4002
      db.refsynopsisdiv.attlist,
patrick@0
  4003
      db.refsynopsisdiv.info,
patrick@0
  4004
      ((db.all.blocks+, db.secondlevel.refsection?)
patrick@0
  4005
       | db.secondlevel.refsection)
patrick@0
  4006
    }
patrick@0
  4007
}
patrick@0
  4008
div {
patrick@0
  4009
  db.refsection.status.attribute = db.status.attribute
patrick@0
  4010
  db.refsection.role.attribute = attribute role { text }
patrick@0
  4011
  db.refsection.attlist =
patrick@0
  4012
    db.refsection.role.attribute?
patrick@0
  4013
    & db.common.attributes
patrick@0
  4014
    & db.common.linking.attributes
patrick@0
  4015
    & db.refsection.status.attribute?
patrick@0
  4016
    & db.label.attribute?
patrick@0
  4017
  db.refsection.info = db._info.title.req
patrick@0
  4018
  db.refsection =
patrick@0
  4019
    
patrick@0
  4020
    ## A recursive section in a refentry
patrick@0
  4021
    element refsection {
patrick@0
  4022
      db.refsection.attlist,
patrick@0
  4023
      db.refsection.info,
patrick@0
  4024
      ((db.all.blocks+, db.refsection*) | db.refsection+)
patrick@0
  4025
    }
patrick@0
  4026
}
patrick@0
  4027
db.refsect1.sections = db.refsect2+
patrick@0
  4028
div {
patrick@0
  4029
  db.refsect1.status.attribute = db.status.attribute
patrick@0
  4030
  db.refsect1.role.attribute = attribute role { text }
patrick@0
  4031
  db.refsect1.attlist =
patrick@0
  4032
    db.refsect1.role.attribute?
patrick@0
  4033
    & db.common.attributes
patrick@0
  4034
    & db.common.linking.attributes
patrick@0
  4035
    & db.label.attribute?
patrick@0
  4036
    & db.refsect1.status.attribute?
patrick@0
  4037
  db.refsect1.info = db._info.title.req
patrick@0
  4038
  db.refsect1 =
patrick@0
  4039
    
patrick@0
  4040
    ## A major subsection of a reference entry
patrick@0
  4041
    element refsect1 {
patrick@0
  4042
      db.refsect1.attlist,
patrick@0
  4043
      db.refsect1.info,
patrick@0
  4044
      ((db.all.blocks+, db.refsect1.sections?) | db.refsect1.sections)
patrick@0
  4045
    }
patrick@0
  4046
}
patrick@0
  4047
db.refsect2.sections = db.refsect3+
patrick@0
  4048
div {
patrick@0
  4049
  db.refsect2.status.attribute = db.status.attribute
patrick@0
  4050
  db.refsect2.role.attribute = attribute role { text }
patrick@0
  4051
  db.refsect2.attlist =
patrick@0
  4052
    db.refsect2.role.attribute?
patrick@0
  4053
    & db.common.attributes
patrick@0
  4054
    & db.common.linking.attributes
patrick@0
  4055
    & db.label.attribute?
patrick@0
  4056
    & db.refsect2.status.attribute?
patrick@0
  4057
  db.refsect2.info = db._info.title.req
patrick@0
  4058
  db.refsect2 =
patrick@0
  4059
    
patrick@0
  4060
    ## A subsection of a refsect1
patrick@0
  4061
    element refsect2 {
patrick@0
  4062
      db.refsect2.attlist,
patrick@0
  4063
      db.refsect2.info,
patrick@0
  4064
      ((db.all.blocks+, db.refsect2.sections?) | db.refsect2.sections)
patrick@0
  4065
    }
patrick@0
  4066
}
patrick@0
  4067
div {
patrick@0
  4068
  db.refsect3.status.attribute = db.status.attribute
patrick@0
  4069
  db.refsect3.role.attribute = attribute role { text }
patrick@0
  4070
  db.refsect3.attlist =
patrick@0
  4071
    db.refsect3.role.attribute?
patrick@0
  4072
    & db.common.attributes
patrick@0
  4073
    & db.common.linking.attributes
patrick@0
  4074
    & db.label.attribute?
patrick@0
  4075
    & db.refsect3.status.attribute?
patrick@0
  4076
  db.refsect3.info = db._info.title.req
patrick@0
  4077
  db.refsect3 =
patrick@0
  4078
    
patrick@0
  4079
    ## A subsection of a refsect2
patrick@0
  4080
    element refsect3 {
patrick@0
  4081
      db.refsect3.attlist, db.refsect3.info, db.all.blocks+
patrick@0
  4082
    }
patrick@0
  4083
}
patrick@0
  4084
db.glossary.inlines =
patrick@0
  4085
  db.firstterm | db.glossterm | db._firstterm | db._glossterm
patrick@0
  4086
db.baseform.attribute =
patrick@0
  4087
  
patrick@0
  4088
  ## Specifies the base form of the term, the one that appears in the glossary. This allows adjectival, plural, and other variations of the term to appear in the element. The element content is the default base form.
patrick@0
  4089
  attribute baseform { text }?
patrick@0
  4090
div {
patrick@0
  4091
  db.glosslist.role.attribute = attribute role { text }
patrick@0
  4092
  db.glosslist.attlist =
patrick@0
  4093
    db.glosslist.role.attribute?
patrick@0
  4094
    & db.common.attributes
patrick@0
  4095
    & db.common.linking.attributes
patrick@0
  4096
  db.glosslist.info = db._info.title.only
patrick@0
  4097
  db.glosslist =
patrick@0
  4098
    
patrick@0
  4099
    ## A wrapper for a list of glossary entries
patrick@0
  4100
    element glosslist {
patrick@0
  4101
      db.glosslist.attlist,
patrick@0
  4102
      db.glosslist.info?,
patrick@0
  4103
      db.all.blocks*,
patrick@0
  4104
      db.glossentry+
patrick@0
  4105
    }
patrick@0
  4106
}
patrick@0
  4107
div {
patrick@0
  4108
  db.glossentry.role.attribute = attribute role { text }
patrick@0
  4109
  db.glossentry.sortas.attribute =
patrick@0
  4110
    
patrick@0
  4111
    ## Specifies the string by which the element's content is to be sorted; if unspecified, the content is used
patrick@0
  4112
    attribute sortas { text }
patrick@0
  4113
  db.glossentry.attlist =
patrick@0
  4114
    db.glossentry.role.attribute?
patrick@0
  4115
    & db.common.attributes
patrick@0
  4116
    & db.common.linking.attributes
patrick@0
  4117
    & db.glossentry.sortas.attribute?
patrick@0
  4118
  db.glossentry =
patrick@0
  4119
    
patrick@0
  4120
    ## An entry in a glossary or glosslist
patrick@0
  4121
    element glossentry {
patrick@0
  4122
      db.glossentry.attlist,
patrick@0
  4123
      db.glossterm,
patrick@0
  4124
      db.acronym?,
patrick@0
  4125
      db.abbrev?,
patrick@0
  4126
      db.indexterm*,
patrick@0
  4127
      (db.glosssee | db.glossdef+)
patrick@0
  4128
    }
patrick@0
  4129
}
patrick@0
  4130
div {
patrick@0
  4131
  db.glossdef.role.attribute = attribute role { text }
patrick@0
  4132
  db.glossdef.subject.attribute =
patrick@0
  4133
    
patrick@0
  4134
    ## Specifies a list of keywords for the definition
patrick@0
  4135
    attribute subject { text }
patrick@0
  4136
  db.glossdef.attlist =
patrick@0
  4137
    db.glossdef.role.attribute?
patrick@0
  4138
    & db.common.attributes
patrick@0
  4139
    & db.common.linking.attributes
patrick@0
  4140
    & db.glossdef.subject.attribute?
patrick@0
  4141
  db.glossdef =
patrick@0
  4142
    
patrick@0
  4143
    ## A definition in a glossentry
patrick@0
  4144
    element glossdef {
patrick@0
  4145
      db.glossdef.attlist, db.all.blocks+, db.glossseealso*
patrick@0
  4146
    }
patrick@0
  4147
}
patrick@0
  4148
div {
patrick@0
  4149
  db.glosssee.role.attribute = attribute role { text }
patrick@0
  4150
  db.glosssee.otherterm.attribute =
patrick@0
  4151
    
patrick@0
  4152
    ## Identifies the other term
patrick@0
  4153
    attribute otherterm { xsd:IDREF }
patrick@0
  4154
  db.glosssee.attlist =
patrick@0
  4155
    db.glosssee.role.attribute?
patrick@0
  4156
    & db.common.attributes
patrick@0
  4157
    & db.common.linking.attributes
patrick@0
  4158
    & db.glosssee.otherterm.attribute?
patrick@0
  4159
  db.glosssee =
patrick@0
  4160
    
patrick@0
  4161
    ## A cross-reference from one glossentry
patrick@0
  4162
    ##  to another
patrick@0
  4163
    element glosssee { db.glosssee.attlist, db.all.inlines* }
patrick@0
  4164
}
patrick@0
  4165
div {
patrick@0
  4166
  db.glossseealso.role.attribute = attribute role { text }
patrick@0
  4167
  db.glossseealso.otherterm.attribute =
patrick@0
  4168
    
patrick@0
  4169
    ## Identifies the other term
patrick@0
  4170
    attribute otherterm { xsd:IDREF }
patrick@0
  4171
  db.glossseealso.attlist =
patrick@0
  4172
    db.glossseealso.role.attribute?
patrick@0
  4173
    & db.common.attributes
patrick@0
  4174
    & db.common.linking.attributes
patrick@0
  4175
    & db.glossseealso.otherterm.attribute?
patrick@0
  4176
  db.glossseealso =
patrick@0
  4177
    
patrick@0
  4178
    ## A cross-reference from one glossentry to another
patrick@0
  4179
    element glossseealso { db.glossseealso.attlist, db.all.inlines* }
patrick@0
  4180
}
patrick@0
  4181
div {
patrick@0
  4182
  db.firstterm.role.attribute = attribute role { text }
patrick@0
  4183
  db.firstterm.attlist =
patrick@0
  4184
    db.firstterm.role.attribute?
patrick@0
  4185
    & db.common.attributes
patrick@0
  4186
    & db.common.linking.attributes
patrick@0
  4187
    & db.baseform.attribute
patrick@0
  4188
  db.firstterm =
patrick@0
  4189
    
patrick@0
  4190
    ## The first occurrence of a term
patrick@0
  4191
    element firstterm { db.firstterm.attlist, db.all.inlines* }
patrick@0
  4192
}
patrick@0
  4193
div {
patrick@0
  4194
  db._firstterm.role.attribute = attribute role { text }
patrick@0
  4195
  db._firstterm.attlist =
patrick@0
  4196
    db._firstterm.role.attribute?
patrick@0
  4197
    & db.common.attributes
patrick@0
  4198
    & db.common.linking.attributes
patrick@0
  4199
    & db.baseform.attribute
patrick@0
  4200
  db._firstterm =
patrick@0
  4201
    
patrick@0
  4202
    ## The first occurrence of a term, with limited content
patrick@0
  4203
    element firstterm { db._firstterm.attlist, db._text }
patrick@0
  4204
}
patrick@0
  4205
div {
patrick@0
  4206
  db.glossterm.role.attribute = attribute role { text }
patrick@0
  4207
  db.glossterm.attlist =
patrick@0
  4208
    db.glossterm.role.attribute?
patrick@0
  4209
    & db.common.attributes
patrick@0
  4210
    & db.common.linking.attributes
patrick@0
  4211
    & db.baseform.attribute
patrick@0
  4212
  db.glossterm =
patrick@0
  4213
    
patrick@0
  4214
    ## A glossary term
patrick@0
  4215
    element glossterm { db.glossterm.attlist, db.all.inlines* }
patrick@0
  4216
}
patrick@0
  4217
div {
patrick@0
  4218
  db._glossterm.role.attribute = attribute role { text }
patrick@0
  4219
  db._glossterm.attlist =
patrick@0
  4220
    db._glossterm.role.attribute?
patrick@0
  4221
    & db.common.attributes
patrick@0
  4222
    & db.common.linking.attributes
patrick@0
  4223
    & db.baseform.attribute
patrick@0
  4224
  db._glossterm =
patrick@0
  4225
    
patrick@0
  4226
    ## A glossary term
patrick@0
  4227
    element glossterm { db._glossterm.attlist, db._text }
patrick@0
  4228
}
patrick@0
  4229
div {
patrick@0
  4230
  db.glossary.status.attribute = db.status.attribute
patrick@0
  4231
  db.glossary.role.attribute = attribute role { text }
patrick@0
  4232
  db.glossary.attlist =
patrick@0
  4233
    db.glossary.role.attribute?
patrick@0
  4234
    & db.common.attributes
patrick@0
  4235
    & db.common.linking.attributes
patrick@0
  4236
    & db.label.attribute?
patrick@0
  4237
    & db.glossary.status.attribute?
patrick@0
  4238
  db.glossary.info = db._info
patrick@0
  4239
  db.glossary =
patrick@0
  4240
    
patrick@0
  4241
    ## A glossary
patrick@0
  4242
    element glossary {
patrick@0
  4243
      db.glossary.attlist,
patrick@0
  4244
      db.glossary.info,
patrick@0
  4245
      db.all.blocks*,
patrick@0
  4246
      (db.glossdiv* | db.glossentry*),
patrick@0
  4247
      db.bibliography?
patrick@0
  4248
    }
patrick@0
  4249
}
patrick@0
  4250
div {
patrick@0
  4251
  db.glossdiv.status.attribute = db.status.attribute
patrick@0
  4252
  db.glossdiv.role.attribute = attribute role { text }
patrick@0
  4253
  db.glossdiv.attlist =
patrick@0
  4254
    db.glossdiv.role.attribute?
patrick@0
  4255
    & db.common.attributes
patrick@0
  4256
    & db.common.linking.attributes
patrick@0
  4257
    & db.label.attribute?
patrick@0
  4258
    & db.glossdiv.status.attribute?
patrick@0
  4259
  db.glossdiv.info = db._info.title.req
patrick@0
  4260
  db.glossdiv =
patrick@0
  4261
    
patrick@0
  4262
    ## A division in a glossary
patrick@0
  4263
    element glossdiv {
patrick@0
  4264
      db.glossdiv.attlist,
patrick@0
  4265
      db.glossdiv.info,
patrick@0
  4266
      db.all.blocks*,
patrick@0
  4267
      db.glossentry+
patrick@0
  4268
    }
patrick@0
  4269
}
patrick@0
  4270
div {
patrick@0
  4271
  db.termdef.role.attribute = attribute role { text }
patrick@0
  4272
  db.termdef.attlist =
patrick@0
  4273
    db.termdef.role.attribute?
patrick@0
  4274
    & db.glossentry.sortas.attribute?
patrick@0
  4275
    & db.common.attributes
patrick@0
  4276
    & db.common.linking.attributes
patrick@0
  4277
    & db.baseform.attribute
patrick@0
  4278
  db.termdef =
patrick@0
  4279
    
patrick@0
  4280
    ## An inline definition of a term
patrick@0
  4281
    element termdef { db.termdef.attlist, db.all.inlines* }
patrick@0
  4282
}
patrick@0
  4283
db.relation.attribute =
patrick@0
  4284
  
patrick@0
  4285
  ## Identifies the relationship between the bibliographic elemnts
patrick@0
  4286
  attribute relation { text }
patrick@0
  4287
div {
patrick@0
  4288
  db.biblioentry.role.attribute = attribute role { text }
patrick@0
  4289
  db.biblioentry.attlist =
patrick@0
  4290
    db.biblioentry.role.attribute?
patrick@0
  4291
    & db.common.attributes
patrick@0
  4292
    & db.common.linking.attributes
patrick@0
  4293
  db.biblioentry =
patrick@0
  4294
    
patrick@0
  4295
    ## A raw entry in a bibliography
patrick@0
  4296
    element biblioentry {
patrick@0
  4297
      db.biblioentry.attlist, db.bibliographic.elements+
patrick@0
  4298
    }
patrick@0
  4299
}
patrick@0
  4300
div {
patrick@0
  4301
  db.bibliomixed.role.attribute = attribute role { text }
patrick@0
  4302
  db.bibliomixed.attlist =
patrick@0
  4303
    db.bibliomixed.role.attribute?
patrick@0
  4304
    & db.common.attributes
patrick@0
  4305
    & db.common.linking.attributes
patrick@0
  4306
  db.bibliomixed =
patrick@0
  4307
    
patrick@0
  4308
    ## A cooked entry in a bibliography
patrick@0
  4309
    element bibliomixed {
patrick@0
  4310
      db.bibliomixed.attlist,
patrick@0
  4311
      ((db._text
patrick@0
  4312
        | db.honorific
patrick@0
  4313
        | db.firstname
patrick@0
  4314
        | db.surname
patrick@0
  4315
        | db.lineage
patrick@0
  4316
        | db.othername
patrick@0
  4317
        | db.bibliographic.elements)*
patrick@0
  4318
       | (db._text
patrick@0
  4319
          | db.honorific
patrick@0
  4320
          | db.givenname
patrick@0
  4321
          | db.surname
patrick@0
  4322
          | db.lineage
patrick@0
  4323
          | db.othername
patrick@0
  4324
          | db.bibliographic.elements)*)
patrick@0
  4325
    }
patrick@0
  4326
}
patrick@0
  4327
div {
patrick@0
  4328
  db.biblioset.relation.attribute = db.relation.attribute
patrick@0
  4329
  db.biblioset.role.attribute = attribute role { text }
patrick@0
  4330
  db.biblioset.attlist =
patrick@0
  4331
    db.biblioset.role.attribute?
patrick@0
  4332
    & db.common.attributes
patrick@0
  4333
    & db.common.linking.attributes
patrick@0
  4334
    & db.biblioset.relation.attribute?
patrick@0
  4335
  db.biblioset =
patrick@0
  4336
    
patrick@0
  4337
    ## A raw container for related bibliographic information
patrick@0
  4338
    element biblioset {
patrick@0
  4339
      db.biblioset.attlist, db.bibliographic.elements+
patrick@0
  4340
    }
patrick@0
  4341
}
patrick@0
  4342
div {
patrick@0
  4343
  db.bibliomset.relation.attribute = db.relation.attribute
patrick@0
  4344
  db.bibliomset.role.attribute = attribute role { text }
patrick@0
  4345
  db.bibliomset.attlist =
patrick@0
  4346
    db.bibliomset.role.attribute?
patrick@0
  4347
    & db.common.attributes
patrick@0
  4348
    & db.common.linking.attributes
patrick@0
  4349
    & db.bibliomset.relation.attribute?
patrick@0
  4350
  db.bibliomset =
patrick@0
  4351
    
patrick@0
  4352
    ## A cooked container for related bibliographic information
patrick@0
  4353
    element bibliomset {
patrick@0
  4354
      db.bibliomset.attlist,
patrick@0
  4355
      ((db._text
patrick@0
  4356
        | db.honorific
patrick@0
  4357
        | db.firstname
patrick@0
  4358
        | db.surname
patrick@0
  4359
        | db.lineage
patrick@0
  4360
        | db.othername
patrick@0
  4361
        | db.bibliographic.elements)*
patrick@0
  4362
       | (db._text
patrick@0
  4363
          | db.honorific
patrick@0
  4364
          | db.givenname
patrick@0
  4365
          | db.surname
patrick@0
  4366
          | db.lineage
patrick@0
  4367
          | db.othername
patrick@0
  4368
          | db.bibliographic.elements)*)
patrick@0
  4369
    }
patrick@0
  4370
}
patrick@0
  4371
div {
patrick@0
  4372
  db.bibliomisc.role.attribute = attribute role { text }
patrick@0
  4373
  db.bibliomisc.attlist =
patrick@0
  4374
    db.bibliomisc.role.attribute?
patrick@0
  4375
    & db.common.attributes
patrick@0
  4376
    & db.common.linking.attributes
patrick@0
  4377
  db.bibliomisc =
patrick@0
  4378
    
patrick@0
  4379
    ## Untyped bibliographic information
patrick@0
  4380
    element bibliomisc { db.bibliomisc.attlist, db._text }
patrick@0
  4381
}
patrick@0
  4382
div {
patrick@0
  4383
  db.bibliography.status.attrib = db.status.attribute
patrick@0
  4384
  db.bibliography.role.attribute = attribute role { text }
patrick@0
  4385
  db.bibliography.attlist =
patrick@0
  4386
    db.bibliography.role.attribute?
patrick@0
  4387
    & db.common.attributes
patrick@0
  4388
    & db.common.linking.attributes
patrick@0
  4389
    & db.label.attribute?
patrick@0
  4390
    & db.bibliography.status.attrib?
patrick@0
  4391
  db.bibliography.info = db._info
patrick@0
  4392
  db.bibliography =
patrick@0
  4393
    
patrick@0
  4394
    ## A bibliography
patrick@0
  4395
    element bibliography {
patrick@0
  4396
      db.bibliography.attlist,
patrick@0
  4397
      db.bibliography.info,
patrick@0
  4398
      db.all.blocks*,
patrick@0
  4399
      (db.bibliodiv+ | (db.biblioentry | db.bibliomixed)+)
patrick@0
  4400
    }
patrick@0
  4401
}
patrick@0
  4402
div {
patrick@0
  4403
  db.bibliodiv.status.attrib = db.status.attribute
patrick@0
  4404
  db.bibliodiv.role.attribute = attribute role { text }
patrick@0
  4405
  db.bibliodiv.attlist =
patrick@0
  4406
    db.bibliodiv.role.attribute?
patrick@0
  4407
    & db.common.attributes
patrick@0
  4408
    & db.common.linking.attributes
patrick@0
  4409
    & db.label.attribute?
patrick@0
  4410
    & db.bibliodiv.status.attrib?
patrick@0
  4411
  db.bibliodiv.info = db._info.title.req
patrick@0
  4412
  db.bibliodiv =
patrick@0
  4413
    
patrick@0
  4414
    ## A section of a bibliography
patrick@0
  4415
    element bibliodiv {
patrick@0
  4416
      db.bibliodiv.attlist,
patrick@0
  4417
      db.bibliodiv.info,
patrick@0
  4418
      db.all.blocks*,
patrick@0
  4419
      (db.biblioentry | db.bibliomixed)+
patrick@0
  4420
    }
patrick@0
  4421
}
patrick@0
  4422
div {
patrick@0
  4423
  db.bibliolist.role.attribute = attribute role { text }
patrick@0
  4424
  db.bibliolist.attlist =
patrick@0
  4425
    db.bibliolist.role.attribute?
patrick@0
  4426
    & db.common.attributes
patrick@0
  4427
    & db.common.linking.attributes
patrick@0
  4428
  db.bibliolist.info = db._info.title.only
patrick@0
  4429
  db.bibliolist =
patrick@0
  4430
    
patrick@0
  4431
    ## A wrapper for a list of bibliography entries
patrick@0
  4432
    element bibliolist {
patrick@0
  4433
      db.bibliolist.attlist,
patrick@0
  4434
      db.bibliolist.info?,
patrick@0
  4435
      db.all.blocks*,
patrick@0
  4436
      (db.biblioentry | db.bibliomixed)+
patrick@0
  4437
    }
patrick@0
  4438
}
patrick@0
  4439
div {
patrick@0
  4440
  db.biblioref.role.attribute = attribute role { text }
patrick@0
  4441
  db.biblioref.xrefstyle.attribute = db.xrefstyle.attribute
patrick@0
  4442
  db.biblioref.endterm.attribute = db.endterm.attribute
patrick@0
  4443
  db.biblioref.units.attribute =
patrick@0
  4444
    
patrick@0
  4445
    ## The units (for example, pages) used to identify the beginning and ending of a reference.
patrick@0
  4446
    attribute units { xsd:token }
patrick@0
  4447
  db.biblioref.begin.attribute =
patrick@0
  4448
    
patrick@0
  4449
    ## Identifies the beginning of a reference; the location within the work that is being referenced.
patrick@0
  4450
    attribute begin { xsd:token }
patrick@0
  4451
  db.biblioref.end.attribute =
patrick@0
  4452
    
patrick@0
  4453
    ## Identifies the end of a reference.
patrick@0
  4454
    attribute end { xsd:token }
patrick@0
  4455
  db.biblioref.attlist =
patrick@0
  4456
    db.biblioref.role.attribute?
patrick@0
  4457
    & db.common.attributes
patrick@0
  4458
    & db.common.req.linking.attributes
patrick@0
  4459
    & db.biblioref.xrefstyle.attribute?
patrick@0
  4460
    & db.biblioref.endterm.attribute?
patrick@0
  4461
    & db.biblioref.units.attribute?
patrick@0
  4462
    & db.biblioref.begin.attribute?
patrick@0
  4463
    & db.biblioref.end.attribute?
patrick@0
  4464
  db.biblioref =
patrick@0
  4465
    
patrick@0
  4466
    ## A cross-reference to a bibliographic entry
patrick@0
  4467
    element biblioref { db.biblioref.attlist, empty }
patrick@0
  4468
}
patrick@0
  4469
db.significance.enumeration =
patrick@0
  4470
  
patrick@0
  4471
  ## Normal
patrick@0
  4472
  "normal"
patrick@0
  4473
  | 
patrick@0
  4474
    ## Preferred
patrick@0
  4475
    "preferred"
patrick@0
  4476
db.significance.attribute =
patrick@0
  4477
  
patrick@0
  4478
  ## Specifies the significance of the term
patrick@0
  4479
  attribute significance { db.significance.enumeration }
patrick@0
  4480
db.zone.attribute =
patrick@0
  4481
  
patrick@0
  4482
  ## Specifies the IDs of the elements to which this term applies
patrick@0
  4483
  attribute zone { xsd:IDREFS }
patrick@0
  4484
db.indexterm.pagenum.attribute =
patrick@0
  4485
  
patrick@0
  4486
  ## Indicates the page on which this index term occurs in some version of the printed document
patrick@0
  4487
  attribute pagenum { text }
patrick@0
  4488
db.scope.enumeration =
patrick@0
  4489
  
patrick@0
  4490
  ## All indexes
patrick@0
  4491
  "all"
patrick@0
  4492
  | 
patrick@0
  4493
    ## The global index (as for a combined index of a set of books)
patrick@0
  4494
    "global"
patrick@0
  4495
  | 
patrick@0
  4496
    ## The local index (the index for this document only)
patrick@0
  4497
    "local"
patrick@0
  4498
db.scope.attribute =
patrick@0
  4499
  
patrick@0
  4500
  ## Specifies the scope of the index term
patrick@0
  4501
  attribute scope { db.scope.enumeration }
patrick@0
  4502
db.sortas.attribute =
patrick@0
  4503
  
patrick@0
  4504
  ## Specifies the string by which the term is to be sorted; if unspecified, the term content is used
patrick@0
  4505
  attribute sortas { text }
patrick@0
  4506
db.index.type.attribute =
patrick@0
  4507
  
patrick@0
  4508
  ## Specifies the target index for this term
patrick@0
  4509
  attribute type { text }
patrick@0
  4510
div {
patrick@0
  4511
  db.itermset.role.attribute = attribute role { text }
patrick@0
  4512
  db.itermset.attlist =
patrick@0
  4513
    db.itermset.role.attribute?
patrick@0
  4514
    & db.common.attributes
patrick@0
  4515
    & db.common.linking.attributes
patrick@0
  4516
  db.itermset =
patrick@0
  4517
    
patrick@0
  4518
    ## A set of index terms in the meta-information of a document
patrick@0
  4519
    element itermset { db.itermset.attlist, db.indexterm.singular+ }
patrick@0
  4520
}
patrick@0
  4521
db.indexterm.contentmodel =
patrick@0
  4522
  db.primary?,
patrick@0
  4523
  ((db.secondary,
patrick@0
  4524
    ((db.tertiary, (db.see | db.seealso+)?)
patrick@0
  4525
     | db.see
patrick@0
  4526
     | db.seealso+)?)
patrick@0
  4527
   | db.see
patrick@0
  4528
   | db.seealso+)?
patrick@0
  4529
div {
patrick@0
  4530
  db.indexterm.singular.role.attribute = attribute role { text }
patrick@0
  4531
  db.indexterm.singular.class.attribute =
patrick@0
  4532
    
patrick@0
  4533
    ## Identifies the class of index term
patrick@0
  4534
    attribute class {
patrick@0
  4535
      
patrick@0
  4536
      ## A singular index term
patrick@0
  4537
      "singular"
patrick@0
  4538
    }
patrick@0
  4539
  db.indexterm.singular.attlist =
patrick@0
  4540
    db.indexterm.singular.role.attribute?
patrick@0
  4541
    & db.common.attributes
patrick@0
  4542
    & db.common.linking.attributes
patrick@0
  4543
    & db.significance.attribute?
patrick@0
  4544
    & db.zone.attribute?
patrick@0
  4545
    & db.indexterm.pagenum.attribute?
patrick@0
  4546
    & db.scope.attribute?
patrick@0
  4547
    & db.index.type.attribute?
patrick@0
  4548
    & db.indexterm.singular.class.attribute?
patrick@0
  4549
  db.indexterm.singular =
patrick@0
  4550
    
patrick@0
  4551
    ## A wrapper for an indexed term
patrick@0
  4552
    element indexterm {
patrick@0
  4553
      db.indexterm.singular.attlist, db.indexterm.contentmodel
patrick@0
  4554
    }
patrick@0
  4555
}
patrick@0
  4556
div {
patrick@0
  4557
  db.indexterm.startofrange.role.attribute = attribute role { text }
patrick@0
  4558
  db.indexterm.startofrange.class.attribute =
patrick@0
  4559
    
patrick@0
  4560
    ## Identifies the class of index term
patrick@0
  4561
    attribute class {
patrick@0
  4562
      
patrick@0
  4563
      ## The start of a range
patrick@0
  4564
      "startofrange"
patrick@0
  4565
    }
patrick@0
  4566
  db.indexterm.startofrange.attlist =
patrick@0
  4567
    db.indexterm.startofrange.role.attribute?
patrick@0
  4568
    & db.common.attributes
patrick@0
  4569
    & db.common.linking.attributes
patrick@0
  4570
    & db.significance.attribute?
patrick@0
  4571
    & db.zone.attribute?
patrick@0
  4572
    & db.indexterm.pagenum.attribute?
patrick@0
  4573
    & db.scope.attribute?
patrick@0
  4574
    & db.index.type.attribute?
patrick@0
  4575
    & db.indexterm.startofrange.class.attribute
patrick@0
  4576
  db.indexterm.startofrange =
patrick@0
  4577
    
patrick@0
  4578
    ## A wrapper for an indexed term that covers a range
patrick@0
  4579
    element indexterm {
patrick@0
  4580
      db.indexterm.startofrange.attlist, db.indexterm.contentmodel
patrick@0
  4581
    }
patrick@0
  4582
}
patrick@0
  4583
div {
patrick@0
  4584
  db.indexterm.endofrange.role.attribute = attribute role { text }
patrick@0
  4585
  db.indexterm.endofrange.class.attribute =
patrick@0
  4586
    
patrick@0
  4587
    ## Identifies the class of index term
patrick@0
  4588
    attribute class {
patrick@0
  4589
      
patrick@0
  4590
      ## The end of a range
patrick@0
  4591
      "endofrange"
patrick@0
  4592
    }
patrick@0
  4593
  db.indexterm.endofrange.startref.attribute =
patrick@0
  4594
    
patrick@0
  4595
    ## Points to the start of the range
patrick@0
  4596
    attribute startref { xsd:IDREF }
patrick@0
  4597
  db.indexterm.endofrange.attlist =
patrick@0
  4598
    db.indexterm.endofrange.role.attribute?
patrick@0
  4599
    & db.common.attributes
patrick@0
  4600
    & db.common.linking.attributes
patrick@0
  4601
    & db.indexterm.endofrange.class.attribute
patrick@0
  4602
    & db.indexterm.endofrange.startref.attribute
patrick@0
  4603
  db.indexterm.endofrange =
patrick@0
  4604
    
patrick@0
  4605
    ## Identifies the end of a range associated with an indexed term
patrick@0
  4606
    element indexterm { db.indexterm.endofrange.attlist, empty }
patrick@0
  4607
}
patrick@0
  4608
div {
patrick@0
  4609
  db.indexterm =
patrick@0
  4610
    db.indexterm.singular
patrick@0
  4611
    | db.indexterm.startofrange
patrick@0
  4612
    | db.indexterm.endofrange
patrick@0
  4613
}
patrick@0
  4614
div {
patrick@0
  4615
  db.primary.role.attribute = attribute role { text }
patrick@0
  4616
  db.primary.attlist =
patrick@0
  4617
    db.primary.role.attribute?
patrick@0
  4618
    & db.common.attributes
patrick@0
  4619
    & db.common.linking.attributes
patrick@0
  4620
    & db.sortas.attribute?
patrick@0
  4621
  db.primary =
patrick@0
  4622
    
patrick@0
  4623
    ## The primary word or phrase under which an index term should be sorted
patrick@0
  4624
    element primary { db.primary.attlist, db.all.inlines* }
patrick@0
  4625
}
patrick@0
  4626
div {
patrick@0
  4627
  db.secondary.role.attribute = attribute role { text }
patrick@0
  4628
  db.secondary.attlist =
patrick@0
  4629
    db.secondary.role.attribute?
patrick@0
  4630
    & db.common.attributes
patrick@0
  4631
    & db.common.linking.attributes
patrick@0
  4632
    & db.sortas.attribute?
patrick@0
  4633
  db.secondary =
patrick@0
  4634
    
patrick@0
  4635
    ## A secondary word or phrase in an index term
patrick@0
  4636
    element secondary { db.secondary.attlist, db.all.inlines* }
patrick@0
  4637
}
patrick@0
  4638
div {
patrick@0
  4639
  db.tertiary.role.attribute = attribute role { text }
patrick@0
  4640
  db.tertiary.attlist =
patrick@0
  4641
    db.tertiary.role.attribute?
patrick@0
  4642
    & db.common.attributes
patrick@0
  4643
    & db.common.linking.attributes
patrick@0
  4644
    & db.sortas.attribute?
patrick@0
  4645
  db.tertiary =
patrick@0
  4646
    
patrick@0
  4647
    ## A tertiary word or phrase in an index term
patrick@0
  4648
    element tertiary { db.tertiary.attlist, db.all.inlines* }
patrick@0
  4649
}
patrick@0
  4650
div {
patrick@0
  4651
  db.see.role.attribute = attribute role { text }
patrick@0
  4652
  db.see.attlist =
patrick@0
  4653
    db.see.role.attribute?
patrick@0
  4654
    & db.common.attributes
patrick@0
  4655
    & db.common.linking.attributes
patrick@0
  4656
  db.see =
patrick@0
  4657
    
patrick@0
  4658
    ## Part of an index term directing the reader instead to another entry in the index
patrick@0
  4659
    element see { db.see.attlist, db.all.inlines* }
patrick@0
  4660
}
patrick@0
  4661
div {
patrick@0
  4662
  db.seealso.role.attribute = attribute role { text }
patrick@0
  4663
  db.seealso.attlist =
patrick@0
  4664
    db.seealso.role.attribute?
patrick@0
  4665
    & db.common.attributes
patrick@0
  4666
    & db.common.linking.attributes
patrick@0
  4667
  db.seealso =
patrick@0
  4668
    
patrick@0
  4669
    ## Part of an index term directing the reader also to another entry in the index
patrick@0
  4670
    element seealso { db.seealso.attlist, db.all.inlines* }
patrick@0
  4671
}
patrick@0
  4672
div {
patrick@0
  4673
  db.index.status.attribute = db.status.attribute
patrick@0
  4674
  db.index.role.attribute = attribute role { text }
patrick@0
  4675
  db.index.attlist =
patrick@0
  4676
    db.index.role.attribute?
patrick@0
  4677
    & db.common.attributes
patrick@0
  4678
    & db.common.linking.attributes
patrick@0
  4679
    & db.label.attribute?
patrick@0
  4680
    & db.index.status.attribute?
patrick@0
  4681
    & db.index.type.attribute?
patrick@0
  4682
  db.index.info = db._info
patrick@0
  4683
  # 
patrick@0
  4684
  # Yes, db.indexdiv* and db.indexentry*; that way an <index/> is valid.
patrick@0
  4685
  # Authors can use an empty index to indicate where a generated index should
patrick@0
  4686
  # appear.
patrick@0
  4687
  db.index =
patrick@0
  4688
    
patrick@0
  4689
    ## An index to a book or part of a book
patrick@0
  4690
    element index {
patrick@0
  4691
      db.index.attlist,
patrick@0
  4692
      db.index.info,
patrick@0
  4693
      db.all.blocks*,
patrick@0
  4694
      (db.indexdiv* | db.indexentry* | db.segmentedlist)
patrick@0
  4695
    }
patrick@0
  4696
}
patrick@0
  4697
div {
patrick@0
  4698
  db.setindex.status.attribute = db.status.attribute
patrick@0
  4699
  db.setindex.role.attribute = attribute role { text }
patrick@0
  4700
  db.setindex.attlist =
patrick@0
  4701
    db.setindex.role.attribute?
patrick@0
  4702
    & db.common.attributes
patrick@0
  4703
    & db.common.linking.attributes
patrick@0
  4704
    & db.label.attribute?
patrick@0
  4705
    & db.setindex.status.attribute?
patrick@0
  4706
    & db.index.type.attribute?
patrick@0
  4707
  db.setindex.info = db._info
patrick@0
  4708
  db.setindex =
patrick@0
  4709
    
patrick@0
  4710
    ## An index to a set of books
patrick@0
  4711
    element setindex {
patrick@0
  4712
      db.setindex.attlist,
patrick@0
  4713
      db.setindex.info,
patrick@0
  4714
      db.all.blocks*,
patrick@0
  4715
      (db.indexdiv* | db.indexentry*)
patrick@0
  4716
    }
patrick@0
  4717
}
patrick@0
  4718
div {
patrick@0
  4719
  db.indexdiv.status.attribute = db.status.attribute
patrick@0
  4720
  db.indexdiv.role.attribute = attribute role { text }
patrick@0
  4721
  db.indexdiv.attlist =
patrick@0
  4722
    db.indexdiv.role.attribute?
patrick@0
  4723
    & db.common.attributes
patrick@0
  4724
    & db.common.linking.attributes
patrick@0
  4725
    & db.label.attribute?
patrick@0
  4726
    & db.indexdiv.status.attribute?
patrick@0
  4727
  db.indexdiv.info = db._info.title.req
patrick@0
  4728
  db.indexdiv =
patrick@0
  4729
    
patrick@0
  4730
    ## A division in an index
patrick@0
  4731
    element indexdiv {
patrick@0
  4732
      db.indexdiv.attlist,
patrick@0
  4733
      db.indexdiv.info,
patrick@0
  4734
      db.all.blocks*,
patrick@0
  4735
      (db.indexentry+ | db.segmentedlist)
patrick@0
  4736
    }
patrick@0
  4737
}
patrick@0
  4738
div {
patrick@0
  4739
  db.indexentry.role.attribute = attribute role { text }
patrick@0
  4740
  db.indexentry.attlist =
patrick@0
  4741
    db.indexentry.role.attribute?
patrick@0
  4742
    & db.common.attributes
patrick@0
  4743
    & db.common.linking.attributes
patrick@0
  4744
  db.indexentry =
patrick@0
  4745
    
patrick@0
  4746
    ## An entry in an index
patrick@0
  4747
    element indexentry {
patrick@0
  4748
      db.indexentry.attlist,
patrick@0
  4749
      db.primaryie,
patrick@0
  4750
      (db.seeie | db.seealsoie)*,
patrick@0
  4751
      (db.secondaryie, (db.seeie | db.seealsoie | db.tertiaryie)*)*
patrick@0
  4752
    }
patrick@0
  4753
}
patrick@0
  4754
div {
patrick@0
  4755
  db.primaryie.role.attribute = attribute role { text }
patrick@0
  4756
  db.primaryie.attlist =
patrick@0
  4757
    db.primaryie.role.attribute?
patrick@0
  4758
    & db.common.attributes
patrick@0
  4759
    & db.linkends.attribute?
patrick@0
  4760
  db.primaryie =
patrick@0
  4761
    
patrick@0
  4762
    ## A primary term in an index entry, not in the text
patrick@0
  4763
    element primaryie { db.primaryie.attlist, db.all.inlines* }
patrick@0
  4764
}
patrick@0
  4765
div {
patrick@0
  4766
  db.secondaryie.role.attribute = attribute role { text }
patrick@0
  4767
  db.secondaryie.attlist =
patrick@0
  4768
    db.secondaryie.role.attribute?
patrick@0
  4769
    & db.common.attributes
patrick@0
  4770
    & db.linkends.attribute?
patrick@0
  4771
  db.secondaryie =
patrick@0
  4772
    
patrick@0
  4773
    ## A secondary term in an index entry, rather than in the text
patrick@0
  4774
    element secondaryie { db.secondaryie.attlist, db.all.inlines* }
patrick@0
  4775
}
patrick@0
  4776
div {
patrick@0
  4777
  db.tertiaryie.role.attribute = attribute role { text }
patrick@0
  4778
  db.tertiaryie.attlist =
patrick@0
  4779
    db.tertiaryie.role.attribute?
patrick@0
  4780
    & db.common.attributes
patrick@0
  4781
    & db.linkends.attribute?
patrick@0
  4782
  db.tertiaryie =
patrick@0
  4783
    
patrick@0
  4784
    ## A tertiary term in an index entry, rather than in the text
patrick@0
  4785
    element tertiaryie { db.tertiaryie.attlist, db.all.inlines* }
patrick@0
  4786
}
patrick@0
  4787
div {
patrick@0
  4788
  db.seeie.role.attribute = attribute role { text }
patrick@0
  4789
  db.seeie.attlist =
patrick@0
  4790
    db.seeie.role.attribute?
patrick@0
  4791
    & db.common.attributes
patrick@0
  4792
    & db.linkend.attribute?
patrick@0
  4793
  db.seeie =
patrick@0
  4794
    
patrick@0
  4795
    ## A See
patrick@0
  4796
    ## entry in an index, rather than in the text
patrick@0
  4797
    element seeie { db.seeie.attlist, db.all.inlines* }
patrick@0
  4798
}
patrick@0
  4799
div {
patrick@0
  4800
  db.seealsoie.role.attribute = attribute role { text }
patrick@0
  4801
  db.seealsoie.attlist =
patrick@0
  4802
    db.seealsoie.role.attribute?
patrick@0
  4803
    & db.common.attributes
patrick@0
  4804
    & db.linkends.attribute?
patrick@0
  4805
  db.seealsoie =
patrick@0
  4806
    
patrick@0
  4807
    ## A See also
patrick@0
  4808
    ##  entry in an index, rather than in the text
patrick@0
  4809
    element seealsoie { db.seealsoie.attlist, db.all.inlines* }
patrick@0
  4810
}
patrick@0
  4811
db.toc.pagenum.attribute =
patrick@0
  4812
  
patrick@0
  4813
  ## Indicates the page on which this element occurs in some version of the printed document
patrick@0
  4814
  attribute pagenum { text }
patrick@0
  4815
div {
patrick@0
  4816
  db.toc.role.attribute = attribute role { text }
patrick@0
  4817
  db.toc.attlist =
patrick@0
  4818
    db.toc.role.attribute?
patrick@0
  4819
    & db.common.attributes
patrick@0
  4820
    & db.common.linking.attributes
patrick@0
  4821
  db.toc.info = db._info.title.only
patrick@0
  4822
  db.toc =
patrick@0
  4823
    
patrick@0
  4824
    ## A table of contents
patrick@0
  4825
    element toc {
patrick@0
  4826
      db.toc.attlist,
patrick@0
  4827
      db.toc.info,
patrick@0
  4828
      db.all.blocks*,
patrick@0
  4829
      (db.tocdiv | db.tocentry)*
patrick@0
  4830
    }
patrick@0
  4831
}
patrick@0
  4832
div {
patrick@0
  4833
  db.tocdiv.role.attribute = attribute role { text }
patrick@0
  4834
  db.tocdiv.pagenum.attribute = db.toc.pagenum.attribute
patrick@0
  4835
  db.tocdiv.attlist =
patrick@0
  4836
    db.tocdiv.role.attribute?
patrick@0
  4837
    & db.common.attributes
patrick@0
  4838
    & db.tocdiv.pagenum.attribute?
patrick@0
  4839
    & db.linkend.attribute?
patrick@0
  4840
  db.tocdiv.info = db._info
patrick@0
  4841
  db.tocdiv =
patrick@0
  4842
    
patrick@0
  4843
    ## A division in a table of contents
patrick@0
  4844
    element tocdiv {
patrick@0
  4845
      db.tocdiv.attlist,
patrick@0
  4846
      db.tocdiv.info,
patrick@0
  4847
      db.all.blocks*,
patrick@0
  4848
      (db.tocdiv | db.tocentry)+
patrick@0
  4849
    }
patrick@0
  4850
}
patrick@0
  4851
div {
patrick@0
  4852
  db.tocentry.role.attribute = attribute role { text }
patrick@0
  4853
  db.tocentry.pagenum.attribute = db.toc.pagenum.attribute
patrick@0
  4854
  db.tocentry.attlist =
patrick@0
  4855
    db.tocentry.role.attribute?
patrick@0
  4856
    & db.common.attributes
patrick@0
  4857
    & db.tocentry.pagenum.attribute?
patrick@0
  4858
    & db.linkend.attribute?
patrick@0
  4859
  db.tocentry =
patrick@0
  4860
    
patrick@0
  4861
    ## A component title in a table of contents
patrick@0
  4862
    element tocentry { db.tocentry.attlist, db.all.inlines* }
patrick@0
  4863
}
patrick@0
  4864
db.task.info = db._info.title.req
patrick@0
  4865
div {
patrick@0
  4866
  db.task.role.attribute = attribute role { text }
patrick@0
  4867
  db.task.attlist =
patrick@0
  4868
    db.task.role.attribute?
patrick@0
  4869
    & db.common.attributes
patrick@0
  4870
    & db.common.linking.attributes
patrick@0
  4871
  db.task =
patrick@0
  4872
    
patrick@0
  4873
    ## A task to be completed
patrick@0
  4874
    element task {
patrick@0
  4875
      db.task.attlist,
patrick@0
  4876
      db.task.info,
patrick@0
  4877
      db.tasksummary?,
patrick@0
  4878
      db.taskprerequisites?,
patrick@0
  4879
      db.procedure,
patrick@0
  4880
      db.example*,
patrick@0
  4881
      db.taskrelated?
patrick@0
  4882
    }
patrick@0
  4883
}
patrick@0
  4884
div {
patrick@0
  4885
  db.tasksummary.role.attribute = attribute role { text }
patrick@0
  4886
  db.tasksummary.attlist =
patrick@0
  4887
    db.tasksummary.role.attribute?
patrick@0
  4888
    & db.common.attributes
patrick@0
  4889
    & db.common.linking.attributes
patrick@0
  4890
  db.tasksummary.info = db._info.title.only
patrick@0
  4891
  db.tasksummary =
patrick@0
  4892
    
patrick@0
  4893
    ## A summary of a task
patrick@0
  4894
    element tasksummary {
patrick@0
  4895
      db.tasksummary.attlist, db.tasksummary.info, db.all.blocks+
patrick@0
  4896
    }
patrick@0
  4897
}
patrick@0
  4898
div {
patrick@0
  4899
  db.taskprerequisites.role.attribute = attribute role { text }
patrick@0
  4900
  db.taskprerequisites.attlist =
patrick@0
  4901
    db.taskprerequisites.role.attribute?
patrick@0
  4902
    & db.common.attributes
patrick@0
  4903
    & db.common.linking.attributes
patrick@0
  4904
  db.taskprerequisites.info = db._info.title.only
patrick@0
  4905
  db.taskprerequisites =
patrick@0
  4906
    
patrick@0
  4907
    ## The prerequisites for a task
patrick@0
  4908
    element taskprerequisites {
patrick@0
  4909
      db.taskprerequisites.attlist,
patrick@0
  4910
      db.taskprerequisites.info,
patrick@0
  4911
      db.all.blocks+
patrick@0
  4912
    }
patrick@0
  4913
}
patrick@0
  4914
div {
patrick@0
  4915
  db.taskrelated.role.attribute = attribute role { text }
patrick@0
  4916
  db.taskrelated.attlist =
patrick@0
  4917
    db.taskrelated.role.attribute?
patrick@0
  4918
    & db.common.attributes
patrick@0
  4919
    & db.common.linking.attributes
patrick@0
  4920
  db.taskrelated.info = db._info.title.only
patrick@0
  4921
  db.taskrelated =
patrick@0
  4922
    
patrick@0
  4923
    ## Information related to a task
patrick@0
  4924
    element taskrelated {
patrick@0
  4925
      db.taskrelated.attlist, db.taskrelated.info, db.all.blocks+
patrick@0
  4926
    }
patrick@0
  4927
}
patrick@0
  4928
db.area.units.enumeration =
patrick@0
  4929
  
patrick@0
  4930
  ## Coordinates expressed as a pair of CALS graphic coordinates.
patrick@0
  4931
  "calspair"
patrick@0
  4932
  | 
patrick@0
  4933
    ## Coordinates expressed as a line and column.
patrick@0
  4934
    "linecolumn"
patrick@0
  4935
  | 
patrick@0
  4936
    ## Coordinates expressed as a pair of lines and columns.
patrick@0
  4937
    "linecolumnpair"
patrick@0
  4938
  | 
patrick@0
  4939
    ## Coordinates expressed as a line range.
patrick@0
  4940
    "linerange"
patrick@0
  4941
db.area.units-enum.attribute =
patrick@0
  4942
  
patrick@0
  4943
  ## Identifies the units used in the coords attribute. The default units vary according to the type of callout specified: calspair
patrick@0
  4944
  ##  for graphics and linecolumn
patrick@0
  4945
  ##  for line-oriented elements.
patrick@0
  4946
  attribute units { db.area.units.enumeration }?
patrick@0
  4947
db.area.units-other.attributes =
patrick@0
  4948
  
patrick@0
  4949
  ## Indicates that non-standard units are used for this area
patrick@0
  4950
  ## . In this case otherunits
patrick@0
  4951
  ##  must be specified.
patrick@0
  4952
  attribute units {
patrick@0
  4953
    
patrick@0
  4954
    ## Coordinates expressed in some non-standard units.
patrick@0
  4955
    "other"
patrick@0
  4956
  }?,
patrick@0
  4957
  
patrick@0
  4958
  ## Identifies the units used in the coords
patrick@0
  4959
  ##  attribute when the units
patrick@0
  4960
  ##  attribute is other
patrick@0
  4961
  ## . This attribute is forbidden otherwise.
patrick@0
  4962
  attribute otherunits { xsd:NMTOKEN }
patrick@0
  4963
db.area.units.attribute =
patrick@0
  4964
  db.area.units-enum.attribute | db.area.units-other.attributes
patrick@0
  4965
div {
patrick@0
  4966
  db.calloutlist.role.attribute = attribute role { text }
patrick@0
  4967
  db.calloutlist.attlist =
patrick@0
  4968
    db.calloutlist.role.attribute?
patrick@0
  4969
    & db.common.attributes
patrick@0
  4970
    & db.common.linking.attributes
patrick@0
  4971
  db.calloutlist.info = db._info.title.only
patrick@0
  4972
  db.calloutlist =
patrick@0
  4973
    
patrick@0
  4974
    ## A list of callout
patrick@0
  4975
    ## s
patrick@0
  4976
    element calloutlist {
patrick@0
  4977
      db.calloutlist.attlist,
patrick@0
  4978
      db.calloutlist.info,
patrick@0
  4979
      db.all.blocks*,
patrick@0
  4980
      db.callout+
patrick@0
  4981
    }
patrick@0
  4982
}
patrick@0
  4983
div {
patrick@0
  4984
  db.callout.role.attribute = attribute role { text }
patrick@0
  4985
  db.callout.arearefs.attribute =
patrick@0
  4986
    
patrick@0
  4987
    ## Identifies the areas described by this callout.
patrick@0
  4988
    attribute arearefs { xsd:IDREFS }
patrick@0
  4989
  db.callout.attlist =
patrick@0
  4990
    db.callout.role.attribute?
patrick@0
  4991
    & db.common.attributes
patrick@0
  4992
    & db.callout.arearefs.attribute
patrick@0
  4993
  db.callout =
patrick@0
  4994
    
patrick@0
  4995
    ## A called out
patrick@0
  4996
    ##  description of a marked area
patrick@0
  4997
    element callout { db.callout.attlist, db.all.blocks+ }
patrick@0
  4998
}
patrick@0
  4999
div {
patrick@0
  5000
  db.programlistingco.role.attribute = attribute role { text }
patrick@0
  5001
  db.programlistingco.attlist =
patrick@0
  5002
    db.programlistingco.role.attribute?
patrick@0
  5003
    & db.common.attributes
patrick@0
  5004
    & db.common.linking.attributes
patrick@0
  5005
  db.programlistingco.info = db._info.title.forbidden
patrick@0
  5006
  db.programlistingco =
patrick@0
  5007
    
patrick@0
  5008
    ## A program listing with associated areas used in callouts
patrick@0
  5009
    element programlistingco {
patrick@0
  5010
      db.programlistingco.attlist,
patrick@0
  5011
      db.programlistingco.info,
patrick@0
  5012
      db.areaspec,
patrick@0
  5013
      db.programlisting,
patrick@0
  5014
      db.calloutlist*
patrick@0
  5015
    }
patrick@0
  5016
}
patrick@0
  5017
div {
patrick@0
  5018
  db.areaspec.role.attribute = attribute role { text }
patrick@0
  5019
  db.areaspec.attlist =
patrick@0
  5020
    db.areaspec.role.attribute?
patrick@0
  5021
    & db.common.attributes
patrick@0
  5022
    & db.common.linking.attributes
patrick@0
  5023
    & db.area.units.attribute
patrick@0
  5024
  db.areaspec =
patrick@0
  5025
    
patrick@0
  5026
    ## A collection of regions in a graphic or code example
patrick@0
  5027
    element areaspec { db.areaspec.attlist, (db.area | db.areaset)+ }
patrick@0
  5028
}
patrick@0
  5029
div {
patrick@0
  5030
  db.area.role.attribute = attribute role { text }
patrick@0
  5031
  db.area.linkends.attribute =
patrick@0
  5032
    
patrick@0
  5033
    ## Point to the callout
patrick@0
  5034
    ## s which refer to this area. (This provides bidirectional linking which may be useful in online presentation.)
patrick@0
  5035
    attribute linkends { xsd:IDREFS }
patrick@0
  5036
  db.area.label.attribute =
patrick@0
  5037
    
patrick@0
  5038
    ## Specifies an identifying number or string that may be used in presentation. The area label might be drawn on top of the figure, for example, at the position indicated by the coords attribute.
patrick@0
  5039
    attribute label { text }
patrick@0
  5040
  db.area.coords.attribute =
patrick@0
  5041
    
patrick@0
  5042
    ## Provides the coordinates of the area. The coordinates must be interpreted using the units
patrick@0
  5043
    ##  specified.
patrick@0
  5044
    attribute coords { text }
patrick@0
  5045
  db.area.attlist =
patrick@0
  5046
    db.area.role.attribute?
patrick@0
  5047
    & db.common.idreq.attributes
patrick@0
  5048
    & db.area.units.attribute
patrick@0
  5049
    & (db.area.linkends.attribute | db.href.attributes)?
patrick@0
  5050
    & db.area.label.attribute?
patrick@0
  5051
    & db.area.coords.attribute
patrick@0
  5052
  db.area =
patrick@0
  5053
    
patrick@0
  5054
    ## A region defined for a callout in a graphic or code example
patrick@0
  5055
    element area { db.area.attlist, db.alt? }
patrick@0
  5056
}
patrick@0
  5057
div {
patrick@0
  5058
  # The only difference is that xml:id is optional
patrick@0
  5059
  db.area.inareaset.attlist =
patrick@0
  5060
    db.area.role.attribute?
patrick@0
  5061
    & db.common.attributes
patrick@0
  5062
    & db.area.units.attribute
patrick@0
  5063
    & (db.area.linkends.attribute | db.href.attributes)?
patrick@0
  5064
    & db.area.label.attribute?
patrick@0
  5065
    & db.area.coords.attribute
patrick@0
  5066
  db.area.inareaset =
patrick@0
  5067
    
patrick@0
  5068
    ## A region defined for a callout in a graphic or code example
patrick@0
  5069
    element area { db.area.inareaset.attlist, db.alt? }
patrick@0
  5070
}
patrick@0
  5071
div {
patrick@0
  5072
  db.areaset.role.attribute = attribute role { text }
patrick@0
  5073
  db.areaset.linkends.attribute = db.linkends.attribute
patrick@0
  5074
  db.areaset.label.attribute = db.label.attribute
patrick@0
  5075
  db.areaset.attlist =
patrick@0
  5076
    db.areaset.role.attribute?
patrick@0
  5077
    & db.common.idreq.attributes
patrick@0
  5078
    & db.area.units.attribute
patrick@0
  5079
    & (db.areaset.linkends.attribute | db.href.attributes)?
patrick@0
  5080
    & db.areaset.label.attribute?
patrick@0
  5081
  db.areaset =
patrick@0
  5082
    
patrick@0
  5083
    ## A set of related areas in a graphic or code example
patrick@0
  5084
    element areaset { db.areaset.attlist, db.area.inareaset+ }
patrick@0
  5085
}
patrick@0
  5086
div {
patrick@0
  5087
  db.screenco.role.attribute = attribute role { text }
patrick@0
  5088
  db.screenco.attlist =
patrick@0
  5089
    db.screenco.role.attribute?
patrick@0
  5090
    & db.common.attributes
patrick@0
  5091
    & db.common.linking.attributes
patrick@0
  5092
  db.screenco.info = db._info.title.forbidden
patrick@0
  5093
  db.screenco =
patrick@0
  5094
    
patrick@0
  5095
    ## A screen with associated areas used in callouts
patrick@0
  5096
    element screenco {
patrick@0
  5097
      db.screenco.attlist,
patrick@0
  5098
      db.screenco.info,
patrick@0
  5099
      db.areaspec,
patrick@0
  5100
      db.screen,
patrick@0
  5101
      db.calloutlist*
patrick@0
  5102
    }
patrick@0
  5103
}
patrick@0
  5104
div {
patrick@0
  5105
  db.imageobjectco.role.attribute = attribute role { text }
patrick@0
  5106
  db.imageobjectco.attlist =
patrick@0
  5107
    db.imageobjectco.role.attribute?
patrick@0
  5108
    & db.common.attributes
patrick@0
  5109
    & db.common.linking.attributes
patrick@0
  5110
  db.imageobjectco.info = db._info.title.forbidden
patrick@0
  5111
  db.imageobjectco =
patrick@0
  5112
    
patrick@0
  5113
    ## A wrapper for an image object with callouts
patrick@0
  5114
    element imageobjectco {
patrick@0
  5115
      db.imageobjectco.attlist,
patrick@0
  5116
      db.imageobjectco.info,
patrick@0
  5117
      db.areaspec,
patrick@0
  5118
      db.imageobject+,
patrick@0
  5119
      db.calloutlist*
patrick@0
  5120
    }
patrick@0
  5121
}
patrick@0
  5122
div {
patrick@0
  5123
  db.co.role.attribute = attribute role { text }
patrick@0
  5124
  db.co.linkends.attribute = db.linkends.attribute
patrick@0
  5125
  db.co.label.attribute = db.label.attribute
patrick@0
  5126
  db.co.attlist =
patrick@0
  5127
    db.co.role.attribute?
patrick@0
  5128
    & db.common.idreq.attributes
patrick@0
  5129
    & db.co.linkends.attribute?
patrick@0
  5130
    & db.co.label.attribute?
patrick@0
  5131
  db.co =
patrick@0
  5132
    
patrick@0
  5133
    ## The location of a callout embedded in text
patrick@0
  5134
    element co { db.co.attlist, empty }
patrick@0
  5135
}
patrick@0
  5136
div {
patrick@0
  5137
  db.coref.role.attribute = attribute role { text }
patrick@0
  5138
  db.coref.label.attribute = db.label.attribute
patrick@0
  5139
  db.coref.attlist =
patrick@0
  5140
    db.coref.role.attribute?
patrick@0
  5141
    & db.common.attributes
patrick@0
  5142
    & db.linkend.attribute
patrick@0
  5143
    & db.coref.label.attribute?
patrick@0
  5144
  db.coref =
patrick@0
  5145
    
patrick@0
  5146
    ## A cross reference to a co
patrick@0
  5147
    element coref { db.coref.attlist, empty }
patrick@0
  5148
}
patrick@0
  5149
div {
patrick@0
  5150
  db.productionset.role.attribute = attribute role { text }
patrick@0
  5151
  db.productionset.attlist =
patrick@0
  5152
    db.productionset.role.attribute?
patrick@0
  5153
    & db.common.attributes
patrick@0
  5154
    & db.common.linking.attributes
patrick@0
  5155
  db.productionset.info = db._info.title.only
patrick@0
  5156
  db.productionset =
patrick@0
  5157
    
patrick@0
  5158
    ## A set of EBNF productions
patrick@0
  5159
    element productionset {
patrick@0
  5160
      db.productionset.attlist,
patrick@0
  5161
      db.productionset.info,
patrick@0
  5162
      (db.production | db.productionrecap)+
patrick@0
  5163
    }
patrick@0
  5164
}
patrick@0
  5165
div {
patrick@0
  5166
  db.production.role.attribute = attribute role { text }
patrick@0
  5167
  db.production.attlist =
patrick@0
  5168
    db.production.role.attribute?
patrick@0
  5169
    & db.common.idreq.attributes
patrick@0
  5170
    & db.common.linking.attributes
patrick@0
  5171
  db.production =
patrick@0
  5172
    
patrick@0
  5173
    ## A production in a set of EBNF productions
patrick@0
  5174
    element production {
patrick@0
  5175
      db.production.attlist, db.lhs, db.rhs, db.constraint*
patrick@0
  5176
    }
patrick@0
  5177
}
patrick@0
  5178
div {
patrick@0
  5179
  db.lhs.role.attribute = attribute role { text }
patrick@0
  5180
  db.lhs.attlist =
patrick@0
  5181
    db.lhs.role.attribute?
patrick@0
  5182
    & db.common.attributes
patrick@0
  5183
    & db.common.linking.attributes
patrick@0
  5184
  db.lhs =
patrick@0
  5185
    
patrick@0
  5186
    ## The left-hand side of an EBNF production
patrick@0
  5187
    element lhs { db.lhs.attlist, text }
patrick@0
  5188
}
patrick@0
  5189
div {
patrick@0
  5190
  db.rhs.role.attribute = attribute role { text }
patrick@0
  5191
  db.rhs.attlist =
patrick@0
  5192
    db.rhs.role.attribute?
patrick@0
  5193
    & db.common.attributes
patrick@0
  5194
    & db.common.linking.attributes
patrick@0
  5195
  db.rhs =
patrick@0
  5196
    
patrick@0
  5197
    ## The right-hand side of an EBNF production
patrick@0
  5198
    element rhs {
patrick@0
  5199
      db.rhs.attlist,
patrick@0
  5200
      (text | db.nonterminal | db.lineannotation | db.sbr)*
patrick@0
  5201
    }
patrick@0
  5202
}
patrick@0
  5203
div {
patrick@0
  5204
  db.nonterminal.role.attribute = attribute role { text }
patrick@0
  5205
  db.nonterminal.def.attribute =
patrick@0
  5206
    
patrick@0
  5207
    ## Specifies a URI that points to a production
patrick@0
  5208
    ## where the nonterminal
patrick@0
  5209
    ##  is defined
patrick@0
  5210
    attribute def { xsd:anyURI }
patrick@0
  5211
  db.nonterminal.attlist =
patrick@0
  5212
    db.nonterminal.role.attribute?
patrick@0
  5213
    & db.common.attributes
patrick@0
  5214
    & db.common.linking.attributes
patrick@0
  5215
    & db.nonterminal.def.attribute
patrick@0
  5216
  db.nonterminal =
patrick@0
  5217
    
patrick@0
  5218
    ## A non-terminal in an EBNF production
patrick@0
  5219
    element nonterminal { db.nonterminal.attlist, text }
patrick@0
  5220
}
patrick@0
  5221
div {
patrick@0
  5222
  db.constraint.role.attribute = attribute role { text }
patrick@0
  5223
  db.constraint.attlist =
patrick@0
  5224
    db.constraint.role.attribute?
patrick@0
  5225
    & db.common.attributes
patrick@0
  5226
    & db.common.req.linking.attributes
patrick@0
  5227
  db.constraint =
patrick@0
  5228
    
patrick@0
  5229
    ## A constraint in an EBNF production
patrick@0
  5230
    element constraint { db.constraint.attlist, empty }
patrick@0
  5231
}
patrick@0
  5232
div {
patrick@0
  5233
  db.productionrecap.role.attribute = attribute role { text }
patrick@0
  5234
  db.productionrecap.attlist =
patrick@0
  5235
    db.productionrecap.role.attribute?
patrick@0
  5236
    & db.common.attributes
patrick@0
  5237
    & db.common.req.linking.attributes
patrick@0
  5238
  db.productionrecap =
patrick@0
  5239
    
patrick@0
  5240
    ## A cross-reference to an EBNF production
patrick@0
  5241
    element productionrecap { db.productionrecap.attlist, empty }
patrick@0
  5242
}
patrick@0
  5243
div {
patrick@0
  5244
  db.constraintdef.role.attribute = attribute role { text }
patrick@0
  5245
  db.constraintdef.attlist =
patrick@0
  5246
    db.constraintdef.role.attribute?
patrick@0
  5247
    & db.common.attributes
patrick@0
  5248
    & db.common.linking.attributes
patrick@0
  5249
  db.constraintdef.info = db._info.title.only
patrick@0
  5250
  db.constraintdef =
patrick@0
  5251
    
patrick@0
  5252
    ## The definition of a constraint in an EBNF production
patrick@0
  5253
    element constraintdef {
patrick@0
  5254
      db.constraintdef.attlist, db.constraintdef.info, db.all.blocks+
patrick@0
  5255
    }
patrick@0
  5256
}
patrick@0
  5257
db.char.attribute =
patrick@0
  5258
  
patrick@0
  5259
  ## Specifies the alignment character when align
patrick@0
  5260
  ##  is set to char
patrick@0
  5261
  ## .
patrick@0
  5262
  attribute char { text }
patrick@0
  5263
db.charoff.attribute =
patrick@0
  5264
  
patrick@0
  5265
  ## Specifies the percentage of the column's total width that should appear to the left of the first occurance of the character identified in char
patrick@0
  5266
  ##  when align
patrick@0
  5267
  ##  is set to char
patrick@0
  5268
  ## .
patrick@0
  5269
  attribute charoff {
patrick@0
  5270
    xsd:decimal { minExclusive = "0" maxExclusive = "100" }
patrick@0
  5271
  }
patrick@0
  5272
db.frame.attribute =
patrick@0
  5273
  
patrick@0
  5274
  ## Specifies how the table is to be framed. Note that there is no way to obtain a border on only the starting edge (left, in left-to-right writing systems) of the table.
patrick@0
  5275
  attribute frame {
patrick@0
  5276
    
patrick@0
  5277
    ## Frame all four sides of the table. In some environments with limited control over table border formatting, such as HTML, this may imply additional borders.
patrick@0
  5278
    "all"
patrick@0
  5279
    | 
patrick@0
  5280
      ## Frame only the bottom of the table.
patrick@0
  5281
      "bottom"
patrick@0
  5282
    | 
patrick@0
  5283
      ## Place no border on the table. In some environments with limited control over table border formatting, such as HTML, this may disable other borders as well.
patrick@0
  5284
      "none"
patrick@0
  5285
    | 
patrick@0
  5286
      ## Frame the left and right sides of the table.
patrick@0
  5287
      "sides"
patrick@0
  5288
    | 
patrick@0
  5289
      ## Frame the top of the table.
patrick@0
  5290
      "top"
patrick@0
  5291
    | 
patrick@0
  5292
      ## Frame the top and bottom of the table.
patrick@0
  5293
      "topbot"
patrick@0
  5294
  }
patrick@0
  5295
db.colsep.attribute =
patrick@0
  5296
  
patrick@0
  5297
  ## Specifies the presence or absence of the column separator
patrick@0
  5298
  attribute colsep {
patrick@0
  5299
    
patrick@0
  5300
    ## No column separator rule.
patrick@0
  5301
    "0"
patrick@0
  5302
    | 
patrick@0
  5303
      ## Provide a column separator rule on the right
patrick@0
  5304
      "1"
patrick@0
  5305
  }
patrick@0
  5306
db.rowsep.attribute =
patrick@0
  5307
  
patrick@0
  5308
  ## Specifies the presence or absence of the row separator
patrick@0
  5309
  attribute rowsep {
patrick@0
  5310
    
patrick@0
  5311
    ## No row separator rule.
patrick@0
  5312
    "0"
patrick@0
  5313
    | 
patrick@0
  5314
      ## Provide a row separator rule below
patrick@0
  5315
      "1"
patrick@0
  5316
  }
patrick@0
  5317
db.orient.attribute =
patrick@0
  5318
  
patrick@0
  5319
  ## Specifies the orientation of the table
patrick@0
  5320
  attribute orient {
patrick@0
  5321
    
patrick@0
  5322
    ## 90 degrees counter-clockwise from the rest of the text flow.
patrick@0
  5323
    "land"
patrick@0
  5324
    | 
patrick@0
  5325
      ## The same orientation as the rest of the text flow.
patrick@0
  5326
      "port"
patrick@0
  5327
  }
patrick@0
  5328
db.tabstyle.attribute =
patrick@0
  5329
  
patrick@0
  5330
  ## Specifies the table style
patrick@0
  5331
  attribute tabstyle { text }
patrick@0
  5332
db.rowheader.attribute =
patrick@0
  5333
  
patrick@0
  5334
  ## Indicates whether or not the entries in the first column should be considered row headers
patrick@0
  5335
  attribute rowheader {
patrick@0
  5336
    
patrick@0
  5337
    ## Indicates that entries in the first column of the table are functionally row headers (analogous to the way that a thead provides column headers).
patrick@0
  5338
    "firstcol"
patrick@0
  5339
    | 
patrick@0
  5340
      ## Indicates that entries in the first column have no special significance with respect to column headers.
patrick@0
  5341
      "norowheader"
patrick@0
  5342
  }
patrick@0
  5343
db.align.attribute =
patrick@0
  5344
  
patrick@0
  5345
  ## Specifies the horizontal alignment of text in an entry.
patrick@0
  5346
  attribute align {
patrick@0
  5347
    
patrick@0
  5348
    ## Centered.
patrick@0
  5349
    "center"
patrick@0
  5350
    | 
patrick@0
  5351
      ## Aligned on a particular character.
patrick@0
  5352
      "char"
patrick@0
  5353
    | 
patrick@0
  5354
      ## Left and right justified.
patrick@0
  5355
      "justify"
patrick@0
  5356
    | 
patrick@0
  5357
      ## Left justified.
patrick@0
  5358
      "left"
patrick@0
  5359
    | 
patrick@0
  5360
      ## Right justified.
patrick@0
  5361
      "right"
patrick@0
  5362
  }
patrick@0
  5363
db.valign.attribute =
patrick@0
  5364
  
patrick@0
  5365
  ## Specifies the vertical alignment of text in an entry.
patrick@0
  5366
  attribute valign {
patrick@0
  5367
    
patrick@0
  5368
    ## Aligned on the bottom of the entry.
patrick@0
  5369
    "bottom"
patrick@0
  5370
    | 
patrick@0
  5371
      ## Aligned in the middle.
patrick@0
  5372
      "middle"
patrick@0
  5373
    | 
patrick@0
  5374
      ## Aligned at the top of the entry.
patrick@0
  5375
      "top"
patrick@0
  5376
  }
patrick@0
  5377
db.specify-col-by-colname.attributes =
patrick@0
  5378
  
patrick@0
  5379
  ## Specifies a column specification by name.
patrick@0
  5380
  attribute colname { text }
patrick@0
  5381
db.specify-col-by-namest.attributes =
patrick@0
  5382
  
patrick@0
  5383
  ## Specifies a starting column by name.
patrick@0
  5384
  attribute namest { text }
patrick@0
  5385
db.specify-span-by-spanspec.attributes =
patrick@0
  5386
  
patrick@0
  5387
  ## Specifies a span by name.
patrick@0
  5388
  attribute spanname { text }
patrick@0
  5389
db.specify-span-directly.attributes =
patrick@0
  5390
  
patrick@0
  5391
  ## Specifies a starting column by name.
patrick@0
  5392
  attribute namest { text }
patrick@0
  5393
  & 
patrick@0
  5394
    ## Specifies an ending column by name.
patrick@0
  5395
    attribute nameend { text }
patrick@0
  5396
db.column-spec.attributes =
patrick@0
  5397
  db.specify-col-by-colname.attributes
patrick@0
  5398
  | db.specify-col-by-namest.attributes
patrick@0
  5399
  | db.specify-span-by-spanspec.attributes
patrick@0
  5400
  | db.specify-span-directly.attributes
patrick@0
  5401
db.colname.attribute =
patrick@0
  5402
  
patrick@0
  5403
  ## Provides a name for a column specification.
patrick@0
  5404
  attribute colname { text }
patrick@0
  5405
db.spanname.attribute =
patrick@0
  5406
  
patrick@0
  5407
  ## Provides a name for a span specification.
patrick@0
  5408
  attribute spanname { text }
patrick@0
  5409
div {
patrick@0
  5410
  db.tgroup.role.attribute = attribute role { text }
patrick@0
  5411
  db.tgroup.tgroupstyle.attribute =
patrick@0
  5412
    
patrick@0
  5413
    ## Additional style information for downstream processing; typically the name of a style.
patrick@0
  5414
    attribute tgroupstyle { text }
patrick@0
  5415
  db.tgroup.cols.attribute =
patrick@0
  5416
    
patrick@0
  5417
    ## The number of columns in the table. Must be an integer greater than zero.
patrick@0
  5418
    attribute cols { xsd:positiveInteger }
patrick@0
  5419
  db.tgroup.attlist =
patrick@0
  5420
    db.tgroup.role.attribute?
patrick@0
  5421
    & db.common.attributes
patrick@0
  5422
    & db.common.linking.attributes
patrick@0
  5423
    & db.char.attribute?
patrick@0
  5424
    & db.charoff.attribute?
patrick@0
  5425
    & db.tgroup.tgroupstyle.attribute?
patrick@0
  5426
    & db.tgroup.cols.attribute
patrick@0
  5427
    & db.colsep.attribute?
patrick@0
  5428
    & db.rowsep.attribute?
patrick@0
  5429
    & db.align.attribute?
patrick@0
  5430
  db.tgroup =
patrick@0
  5431
    
patrick@0
  5432
    ## A wrapper for the main content of a table, or part of a table
patrick@0
  5433
    element tgroup {
patrick@0
  5434
      db.tgroup.attlist,
patrick@0
  5435
      db.colspec*,
patrick@0
  5436
      db.spanspec*,
patrick@0
  5437
      db.cals.thead?,
patrick@0
  5438
      db.cals.tfoot?,
patrick@0
  5439
      db.cals.tbody
patrick@0
  5440
    }
patrick@0
  5441
}
patrick@0
  5442
div {
patrick@0
  5443
  db.colspec.role.attribute = attribute role { text }
patrick@0
  5444
  db.colspec.colnum.attribute =
patrick@0
  5445
    
patrick@0
  5446
    ## The number of the column to which this specification applies. Must be greater than any preceding column number. Defaults to one more than the number of the preceding column, if there is one, or one.
patrick@0
  5447
    attribute colnum { xsd:positiveInteger }
patrick@0
  5448
  db.colspec.colwidth.attribute =
patrick@0
  5449
    
patrick@0
  5450
    ## Specifies the width of the column.
patrick@0
  5451
    attribute colwidth { text }
patrick@0
  5452
  db.colspec.attlist =
patrick@0
  5453
    db.colspec.role.attribute?
patrick@0
  5454
    & db.common.attributes
patrick@0
  5455
    & db.common.linking.attributes
patrick@0
  5456
    & db.colspec.colnum.attribute?
patrick@0
  5457
    & db.char.attribute?
patrick@0
  5458
    & db.colsep.attribute?
patrick@0
  5459
    & db.colspec.colwidth.attribute?
patrick@0
  5460
    & db.charoff.attribute?
patrick@0
  5461
    & db.colname.attribute?
patrick@0
  5462
    & db.rowsep.attribute?
patrick@0
  5463
    & db.align.attribute?
patrick@0
  5464
  db.colspec =
patrick@0
  5465
    
patrick@0
  5466
    ## Specifications for a column in a table
patrick@0
  5467
    element colspec { db.colspec.attlist, empty }
patrick@0
  5468
}
patrick@0
  5469
div {
patrick@0
  5470
  db.spanspec.role.attribute = attribute role { text }
patrick@0
  5471
  db.spanspec.namest.attribute =
patrick@0
  5472
    
patrick@0
  5473
    ## Specifies a starting column by name.
patrick@0
  5474
    attribute namest { text }
patrick@0
  5475
  db.spanspec.nameend.attribute =
patrick@0
  5476
    
patrick@0
  5477
    ## Specifies an ending column by name.
patrick@0
  5478
    attribute nameend { text }
patrick@0
  5479
  db.spanspec.attlist =
patrick@0
  5480
    db.spanspec.role.attribute?
patrick@0
  5481
    & db.common.attributes
patrick@0
  5482
    & db.common.linking.attributes
patrick@0
  5483
    & db.spanname.attribute
patrick@0
  5484
    & db.spanspec.namest.attribute
patrick@0
  5485
    & db.spanspec.nameend.attribute
patrick@0
  5486
    & db.char.attribute?
patrick@0
  5487
    & db.colsep.attribute?
patrick@0
  5488
    & db.charoff.attribute?
patrick@0
  5489
    & db.rowsep.attribute?
patrick@0
  5490
    & db.align.attribute?
patrick@0
  5491
  db.spanspec =
patrick@0
  5492
    
patrick@0
  5493
    ## Formatting information for a spanned column in a table
patrick@0
  5494
    element spanspec { db.spanspec.attlist, empty }
patrick@0
  5495
}
patrick@0
  5496
div {
patrick@0
  5497
  db.cals.thead.role.attribute = attribute role { text }
patrick@0
  5498
  db.cals.thead.attlist =
patrick@0
  5499
    db.cals.thead.role.attribute?
patrick@0
  5500
    & db.common.attributes
patrick@0
  5501
    & db.common.linking.attributes
patrick@0
  5502
    & db.valign.attribute?
patrick@0
  5503
  db.cals.thead =
patrick@0
  5504
    
patrick@0
  5505
    ## A table header consisting of one or more rows
patrick@0
  5506
    element thead { db.cals.thead.attlist, db.colspec*, db.row+ }
patrick@0
  5507
}
patrick@0
  5508
div {
patrick@0
  5509
  db.cals.tfoot.role.attribute = attribute role { text }
patrick@0
  5510
  db.cals.tfoot.attlist =
patrick@0
  5511
    db.cals.tfoot.role.attribute?
patrick@0
  5512
    & db.common.attributes
patrick@0
  5513
    & db.common.linking.attributes
patrick@0
  5514
    & db.valign.attribute?
patrick@0
  5515
  db.cals.tfoot =
patrick@0
  5516
    
patrick@0
  5517
    ## A table footer consisting of one or more rows
patrick@0
  5518
    element tfoot { db.cals.tfoot.attlist, db.colspec*, db.row+ }
patrick@0
  5519
}
patrick@0
  5520
div {
patrick@0
  5521
  db.cals.tbody.role.attribute = attribute role { text }
patrick@0
  5522
  db.cals.tbody.attlist =
patrick@0
  5523
    db.cals.tbody.role.attribute?
patrick@0
  5524
    & db.common.attributes
patrick@0
  5525
    & db.common.linking.attributes
patrick@0
  5526
    & db.valign.attribute?
patrick@0
  5527
  db.cals.tbody =
patrick@0
  5528
    
patrick@0
  5529
    ## A wrapper for the rows of a table or informal table
patrick@0
  5530
    element tbody { db.cals.tbody.attlist, db.row+ }
patrick@0
  5531
}
patrick@0
  5532
div {
patrick@0
  5533
  db.row.role.attribute = attribute role { text }
patrick@0
  5534
  db.row.attlist =
patrick@0
  5535
    db.row.role.attribute?
patrick@0
  5536
    & db.common.attributes
patrick@0
  5537
    & db.common.linking.attributes
patrick@0
  5538
    & db.rowsep.attribute?
patrick@0
  5539
    & db.valign.attribute?
patrick@0
  5540
  db.row =
patrick@0
  5541
    
patrick@0
  5542
    ## A row in a table
patrick@0
  5543
    element row { db.row.attlist, (db.entry | db.entrytbl)+ }
patrick@0
  5544
}
patrick@0
  5545
div {
patrick@0
  5546
  db.entry.role.attribute = attribute role { text }
patrick@0
  5547
  db.entry.morerows.attribute =
patrick@0
  5548
    
patrick@0
  5549
    ## Specifies the number of additional rows which this entry occupies. Defaults to zero.
patrick@0
  5550
    attribute morerows { xsd:integer }
patrick@0
  5551
  db.entry.rotate.attribute =
patrick@0
  5552
    
patrick@0
  5553
    ## Specifies the rotation of this entry. A value of 1 (true) rotates the cell 90 degrees counter-clockwise. A value of 0 (false) leaves the cell unrotated.
patrick@0
  5554
    attribute rotate {
patrick@0
  5555
      
patrick@0
  5556
      ## Do not rotate the cell.
patrick@0
  5557
      "0"
patrick@0
  5558
      | 
patrick@0
  5559
        ## Rotate the cell 90 degrees counter-clockwise.
patrick@0
  5560
        "1"
patrick@0
  5561
    }
patrick@0
  5562
  db.entry.attlist =
patrick@0
  5563
    db.entry.role.attribute?
patrick@0
  5564
    & db.common.attributes
patrick@0
  5565
    & db.common.linking.attributes
patrick@0
  5566
    & db.valign.attribute?
patrick@0
  5567
    & db.char.attribute?
patrick@0
  5568
    & db.colsep.attribute?
patrick@0
  5569
    & db.charoff.attribute?
patrick@0
  5570
    & db.entry.morerows.attribute?
patrick@0
  5571
    & db.column-spec.attributes?
patrick@0
  5572
    & db.rowsep.attribute?
patrick@0
  5573
    & db.entry.rotate.attribute?
patrick@0
  5574
    & db.align.attribute?
patrick@0
  5575
  db.entry =
patrick@0
  5576
    
patrick@0
  5577
    ## A cell in a table
patrick@0
  5578
    element entry {
patrick@0
  5579
      db.entry.attlist, (db.all.inlines* | db.all.blocks*)
patrick@0
  5580
    }
patrick@0
  5581
}
patrick@0
  5582
div {
patrick@0
  5583
  db.entrytbl.role.attribute = attribute role { text }
patrick@0
  5584
  db.entrytbl.tgroupstyle.attribute =
patrick@0
  5585
    
patrick@0
  5586
    ## Additional style information for downstream processing; typically the name of a style.
patrick@0
  5587
    attribute tgroupstyle { text }
patrick@0
  5588
  db.entrytbl.cols.attribute =
patrick@0
  5589
    
patrick@0
  5590
    ## The number of columns in the entry table. Must be an integer greater than zero.
patrick@0
  5591
    attribute cols { xsd:positiveInteger }
patrick@0
  5592
  db.entrytbl.attlist =
patrick@0
  5593
    db.entrytbl.role.attribute?
patrick@0
  5594
    & db.common.attributes
patrick@0
  5595
    & db.common.linking.attributes
patrick@0
  5596
    & db.char.attribute?
patrick@0
  5597
    & db.charoff.attribute?
patrick@0
  5598
    & db.column-spec.attributes?
patrick@0
  5599
    & db.entrytbl.tgroupstyle.attribute?
patrick@0
  5600
    & db.entrytbl.cols.attribute?
patrick@0
  5601
    & db.colsep.attribute?
patrick@0
  5602
    & db.rowsep.attribute?
patrick@0
  5603
    & db.align.attribute?
patrick@0
  5604
  db.entrytbl =
patrick@0
  5605
    
patrick@0
  5606
    ## A subtable appearing in place of an entry in a table
patrick@0
  5607
    element entrytbl {
patrick@0
  5608
      db.entrytbl.attlist,
patrick@0
  5609
      db.colspec*,
patrick@0
  5610
      db.spanspec*,
patrick@0
  5611
      db.cals.entrytbl.thead?,
patrick@0
  5612
      db.cals.entrytbl.tbody
patrick@0
  5613
    }
patrick@0
  5614
}
patrick@0
  5615
div {
patrick@0
  5616
  db.cals.entrytbl.thead.role.attribute = attribute role { text }
patrick@0
  5617
  db.cals.entrytbl.thead.attlist =
patrick@0
  5618
    db.cals.entrytbl.thead.role.attribute?
patrick@0
  5619
    & db.common.attributes
patrick@0
  5620
    & db.common.linking.attributes
patrick@0
  5621
    & db.valign.attribute?
patrick@0
  5622
  db.cals.entrytbl.thead =
patrick@0
  5623
    
patrick@0
  5624
    ## A table header consisting of one or more rows
patrick@0
  5625
    element thead {
patrick@0
  5626
      db.cals.entrytbl.thead.attlist, db.colspec*, db.entrytbl.row+
patrick@0
  5627
    }
patrick@0
  5628
}
patrick@0
  5629
div {
patrick@0
  5630
  db.cals.entrytbl.tbody.role.attribute = attribute role { text }
patrick@0
  5631
  db.cals.entrytbl.tbody.attlist =
patrick@0
  5632
    db.cals.entrytbl.tbody.role.attribute?
patrick@0
  5633
    & db.common.attributes
patrick@0
  5634
    & db.common.linking.attributes
patrick@0
  5635
    & db.valign.attribute?
patrick@0
  5636
  db.cals.entrytbl.tbody =
patrick@0
  5637
    
patrick@0
  5638
    ## A wrapper for the rows of a table or informal table
patrick@0
  5639
    element tbody { db.cals.entrytbl.tbody.attlist, db.entrytbl.row+ }
patrick@0
  5640
}
patrick@0
  5641
div {
patrick@0
  5642
  db.entrytbl.row.role.attribute = attribute role { text }
patrick@0
  5643
  db.entrytbl.row.attlist =
patrick@0
  5644
    db.entrytbl.row.role.attribute?
patrick@0
  5645
    & db.common.attributes
patrick@0
  5646
    & db.common.linking.attributes
patrick@0
  5647
    & db.rowsep.attribute?
patrick@0
  5648
    & db.valign.attribute?
patrick@0
  5649
  db.entrytbl.row =
patrick@0
  5650
    
patrick@0
  5651
    ## A row in a table
patrick@0
  5652
    element row { db.entrytbl.row.attlist, db.entry+ }
patrick@0
  5653
}
patrick@0
  5654
div {
patrick@0
  5655
  db.cals.table.role.attribute = attribute role { text }
patrick@0
  5656
  db.cals.table.label.attribute = db.label.attribute
patrick@0
  5657
  db.cals.table.attlist =
patrick@0
  5658
    db.cals.table.role.attribute?
patrick@0
  5659
    & db.cals.table.label.attribute?
patrick@0
  5660
    & db.common.attributes
patrick@0
  5661
    & db.common.linking.attributes
patrick@0
  5662
    & db.tabstyle.attribute?
patrick@0
  5663
    & db.floatstyle.attribute?
patrick@0
  5664
    & db.orient.attribute?
patrick@0
  5665
    & db.colsep.attribute?
patrick@0
  5666
    & db.rowsep.attribute?
patrick@0
  5667
    & db.frame.attribute?
patrick@0
  5668
    & db.pgwide.attribute?
patrick@0
  5669
    & 
patrick@0
  5670
      ## Indicates if the short or long title should be used in a List of Tables
patrick@0
  5671
      attribute shortentry {
patrick@0
  5672
        
patrick@0
  5673
        ## Indicates that the full title should be used.
patrick@0
  5674
        "0"
patrick@0
  5675
        | 
patrick@0
  5676
          ## Indicates that the short short title (titleabbrev) should be used.
patrick@0
  5677
          "1"
patrick@0
  5678
      }?
patrick@0
  5679
    & 
patrick@0
  5680
      ## Indicates if the table should appear in a List of Tables
patrick@0
  5681
      attribute tocentry {
patrick@0
  5682
        
patrick@0
  5683
        ## Indicates that the table should not occur in the List of Tables.
patrick@0
  5684
        "0"
patrick@0
  5685
        | 
patrick@0
  5686
          ## Indicates that the table should appear in the List of Tables.
patrick@0
  5687
          "1"
patrick@0
  5688
      }?
patrick@0
  5689
    & db.rowheader.attribute?
patrick@0
  5690
  db.cals.table.info = db._info.title.onlyreq
patrick@0
  5691
  db.cals.table =
patrick@0
  5692
    
patrick@0
  5693
    ## A formal table in a document
patrick@0
  5694
    element table {
patrick@0
  5695
      db.cals.table.attlist,
patrick@0
  5696
      db.cals.table.info,
patrick@0
  5697
      (db.alt? & db.indexing.inlines* & db.textobject*),
patrick@0
  5698
      (db.mediaobject+ | db.tgroup+),
patrick@0
  5699
      db.caption?
patrick@0
  5700
    }
patrick@0
  5701
}
patrick@0
  5702
div {
patrick@0
  5703
  db.cals.informaltable.role.attribute = attribute role { text }
patrick@0
  5704
  db.cals.informaltable.attlist =
patrick@0
  5705
    db.cals.informaltable.role.attribute?
patrick@0
  5706
    & db.common.attributes
patrick@0
  5707
    & db.common.linking.attributes
patrick@0
  5708
    & db.tabstyle.attribute?
patrick@0
  5709
    & db.floatstyle.attribute?
patrick@0
  5710
    & db.orient.attribute?
patrick@0
  5711
    & db.colsep.attribute?
patrick@0
  5712
    & db.rowsep.attribute?
patrick@0
  5713
    & db.frame.attribute?
patrick@0
  5714
    & db.pgwide.attribute?
patrick@0
  5715
    & db.rowheader.attribute?
patrick@0
  5716
  db.cals.informaltable.info = db._info.title.forbidden
patrick@0
  5717
  db.cals.informaltable =
patrick@0
  5718
    
patrick@0
  5719
    ## A table without a title
patrick@0
  5720
    element informaltable {
patrick@0
  5721
      db.cals.informaltable.attlist,
patrick@0
  5722
      db.cals.informaltable.info,
patrick@0
  5723
      (db.alt? & db.indexing.inlines* & db.textobject*),
patrick@0
  5724
      (db.mediaobject+ | db.tgroup+),
patrick@0
  5725
      db.caption?
patrick@0
  5726
    }
patrick@0
  5727
}
patrick@0
  5728
db.html.coreattrs =
patrick@0
  5729
  
patrick@0
  5730
  ## This attribute assigns a class name or set of class names to an element. Any number of elements may be assigned the same class name or names. Multiple class names must be separated by white space characters.
patrick@0
  5731
  attribute class { text }?
patrick@0
  5732
  & 
patrick@0
  5733
    ## This attribute specifies style information for the current element.
patrick@0
  5734
    attribute style { text }?
patrick@0
  5735
  & 
patrick@0
  5736
    ## This attribute offers advisory information about the element for which it is set.
patrick@0
  5737
    attribute title { text }?
patrick@0
  5738
db.html.i18n =
patrick@0
  5739
  
patrick@0
  5740
  ## This attribute specifies the base language of an element's attribute values and text content. The default value of this attribute is unknown.
patrick@0
  5741
  attribute lang { text }?
patrick@0
  5742
db.html.events =
patrick@0
  5743
  
patrick@0
  5744
  ## Occurs when the pointing device button is clicked over an element.
patrick@0
  5745
  attribute onclick { text }?
patrick@0
  5746
  & 
patrick@0
  5747
    ## Occurs when the pointing device button is double clicked over an element.
patrick@0
  5748
    attribute ondblclick { text }?
patrick@0
  5749
  & 
patrick@0
  5750
    ## Occurs when the pointing device button is pressed over an element.
patrick@0
  5751
    attribute onmousedown { text }?
patrick@0
  5752
  & 
patrick@0
  5753
    ## Occurs when the pointing device button is released over an element.
patrick@0
  5754
    attribute onmouseup { text }?
patrick@0
  5755
  & 
patrick@0
  5756
    ## Occurs when the pointing device is moved onto an element.
patrick@0
  5757
    attribute onmouseover { text }?
patrick@0
  5758
  & 
patrick@0
  5759
    ## Occurs when the pointing device is moved while it is over an element.
patrick@0
  5760
    attribute onmousemove { text }?
patrick@0
  5761
  & 
patrick@0
  5762
    ## Occurs when the pointing device is moved away from an element.
patrick@0
  5763
    attribute onmouseout { text }?
patrick@0
  5764
  & 
patrick@0
  5765
    ## Occurs when a key is pressed and released over an element.
patrick@0
  5766
    attribute onkeypress { text }?
patrick@0
  5767
  & 
patrick@0
  5768
    ## Occurs when a key is pressed down over an element.
patrick@0
  5769
    attribute onkeydown { text }?
patrick@0
  5770
  & 
patrick@0
  5771
    ## Occurs when a key is released over an element.
patrick@0
  5772
    attribute onkeyup { text }?
patrick@0
  5773
db.html.attrs =
patrick@0
  5774
  db.common.attributes
patrick@0
  5775
  & db.html.coreattrs
patrick@0
  5776
  & db.html.i18n
patrick@0
  5777
  & db.html.events
patrick@0
  5778
db.html.cellhalign =
patrick@0
  5779
  
patrick@0
  5780
  ## Specifies the alignment of data and the justification of text in a cell.
patrick@0
  5781
  attribute align {
patrick@0
  5782
    
patrick@0
  5783
    ## Left-flush data/Left-justify text. This is the default value for table data.
patrick@0
  5784
    "left"
patrick@0
  5785
    | 
patrick@0
  5786
      ## Center data/Center-justify text. This is the default value for table headers.
patrick@0
  5787
      "center"
patrick@0
  5788
    | 
patrick@0
  5789
      ## Right-flush data/Right-justify text.
patrick@0
  5790
      "right"
patrick@0
  5791
    | 
patrick@0
  5792
      ## Double-justify text.
patrick@0
  5793
      "justify"
patrick@0
  5794
    | 
patrick@0
  5795
      ## Align text around a specific character. If a user agent doesn't support character alignment, behavior in the presence of this value is unspecified.
patrick@0
  5796
      "char"
patrick@0
  5797
  }?
patrick@0
  5798
  & 
patrick@0
  5799
    ## This attribute specifies a single character within a text fragment to act as an axis for alignment. The default value for this attribute is the decimal point character for the current language as set by the lang attribute (e.g., the period in English and the comma in French). User agents are not required to support this attribute.
patrick@0
  5800
    attribute char { text }?
patrick@0
  5801
  & 
patrick@0
  5802
    ## When present, this attribute specifies the offset to the first occurrence of the alignment character on each line. If a line doesn't include the alignment character, it should be horizontally shifted to end at the alignment position. When charoff is used to set the offset of an alignment character, the direction of offset is determined by the current text direction (set by the dir attribute). In left-to-right texts (the default), offset is from the left margin. In right-to-left texts, offset is from the right margin. User agents are not required to support this attribute.
patrick@0
  5803
    attribute charoff {
patrick@0
  5804
      xsd:integer >> a:documentation [ "An explicit offset." ]
patrick@0
  5805
      | xsd:string { pattern = "[0-9]+%" }
patrick@0
  5806
        >> a:documentation [ "A percentage offset." ]
patrick@0
  5807
    }?
patrick@0
  5808
db.html.cellvalign =
patrick@0
  5809
  
patrick@0
  5810
  ## Specifies the vertical position of data within a cell.
patrick@0
  5811
  attribute valign {
patrick@0
  5812
    
patrick@0
  5813
    ## Cell data is flush with the top of the cell.
patrick@0
  5814
    "top"
patrick@0
  5815
    | 
patrick@0
  5816
      ## Cell data is centered vertically within the cell. This is the default value.
patrick@0
  5817
      "middle"
patrick@0
  5818
    | 
patrick@0
  5819
      ## Cell data is flush with the bottom of the cell.
patrick@0
  5820
      "bottom"
patrick@0
  5821
    | 
patrick@0
  5822
      ## All cells in the same row as a cell whose valign attribute has this value should have their textual data positioned so that the first text line occurs on a baseline common to all cells in the row. This constraint does not apply to subsequent text lines in these cells.
patrick@0
  5823
      "baseline"
patrick@0
  5824
  }?
patrick@0
  5825
db.html.table.attributes =
patrick@0
  5826
  
patrick@0
  5827
  ## Provides a summary of the table's purpose and structure for user agents rendering to non-visual media such as speech and Braille.
patrick@0
  5828
  attribute summary { text }?
patrick@0
  5829
  & 
patrick@0
  5830
    ## Specifies the desired width of the entire table and is intended for visual user agents. When the value is a percentage value, the value is relative to the user agent's available horizontal space. In the absence of any width specification, table width is determined by the user agent.
patrick@0
  5831
    attribute width {
patrick@0
  5832
      xsd:integer >> a:documentation [ "An explicit width." ]
patrick@0
  5833
      | xsd:string { pattern = "[0-9]+%" }
patrick@0
  5834
        >> a:documentation [ "A percentage width." ]
patrick@0
  5835
    }?
patrick@0
  5836
  & 
patrick@0
  5837
    ## Specifies the width (in pixels only) of the frame around a table.
patrick@0
  5838
    attribute border { xsd:nonNegativeInteger }?
patrick@0
  5839
  & 
patrick@0
  5840
    ## Specifies which sides of the frame surrounding a table will be visible.
patrick@0
  5841
    attribute frame {
patrick@0
  5842
      
patrick@0
  5843
      ## No sides. This is the default value.
patrick@0
  5844
      "void"
patrick@0
  5845
      | 
patrick@0
  5846
        ## The top side only.
patrick@0
  5847
        "above"
patrick@0
  5848
      | 
patrick@0
  5849
        ## The bottom side only.
patrick@0
  5850
        "below"
patrick@0
  5851
      | 
patrick@0
  5852
        ## The top and bottom sides only.
patrick@0
  5853
        "hsides"
patrick@0
  5854
      | 
patrick@0
  5855
        ## The left-hand side only.
patrick@0
  5856
        "lhs"
patrick@0
  5857
      | 
patrick@0
  5858
        ## The right-hand side only.
patrick@0
  5859
        "rhs"
patrick@0
  5860
      | 
patrick@0
  5861
        ## The right and left sides only.
patrick@0
  5862
        "vsides"
patrick@0
  5863
      | 
patrick@0
  5864
        ## All four sides.
patrick@0
  5865
        "box"
patrick@0
  5866
      | 
patrick@0
  5867
        ## All four sides.
patrick@0
  5868
        "border"
patrick@0
  5869
    }?
patrick@0
  5870
  & 
patrick@0
  5871
    ## Specifies which rules will appear between cells within a table. The rendering of rules is user agent dependent.
patrick@0
  5872
    attribute rules {
patrick@0
  5873
      
patrick@0
  5874
      ## No rules. This is the default value.
patrick@0
  5875
      "none"
patrick@0
  5876
      | 
patrick@0
  5877
        ## Rules will appear between row groups (see thead, tfoot, and tbody) and column groups (see colgroup and col) only.
patrick@0
  5878
        "groups"
patrick@0
  5879
      | 
patrick@0
  5880
        ## Rules will appear between rows only.
patrick@0
  5881
        "rows"
patrick@0
  5882
      | 
patrick@0
  5883
        ## Rules will appear between columns only.
patrick@0
  5884
        "cols"
patrick@0
  5885
      | 
patrick@0
  5886
        ## Rules will appear between all rows and columns.
patrick@0
  5887
        "all"
patrick@0
  5888
    }?
patrick@0
  5889
  & 
patrick@0
  5890
    ## Specifies how much space the user agent should leave between the left side of the table and the left-hand side of the leftmost column, the top of the table and the top side of the topmost row, and so on for the right and bottom of the table. The attribute also specifies the amount of space to leave between cells.
patrick@0
  5891
    attribute cellspacing {
patrick@0
  5892
      xsd:integer >> a:documentation [ "An explicit spacing." ]
patrick@0
  5893
      | xsd:string { pattern = "[0-9]+%" }
patrick@0
  5894
        >> a:documentation [ "A percentage spacing." ]
patrick@0
  5895
    }?
patrick@0
  5896
  & 
patrick@0
  5897
    ## Specifies the amount of space between the border of the cell and its contents. If the value of this attribute is a pixel length, all four margins should be this distance from the contents. If the value of the attribute is a percentage length, the top and bottom margins should be equally separated from the content based on a percentage of the available vertical space, and the left and right margins should be equally separated from the content based on a percentage of the available horizontal space.
patrick@0
  5898
    attribute cellpadding {
patrick@0
  5899
      xsd:integer >> a:documentation [ "An explicit padding." ]
patrick@0
  5900
      | xsd:string { pattern = "[0-9]+%" }
patrick@0
  5901
        >> a:documentation [ "A percentage padding." ]
patrick@0
  5902
    }?
patrick@0
  5903
db.html.tablecell.attributes =
patrick@0
  5904
  
patrick@0
  5905
  ## Provides an abbreviated form of the cell's content and may be rendered by user agents when appropriate in place of the cell's content. Abbreviated names should be short since user agents may render them repeatedly. For instance, speech synthesizers may render the abbreviated headers relating to a particular cell before rendering that cell's content.
patrick@0
  5906
  attribute abbr { text }?
patrick@0
  5907
  & 
patrick@0
  5908
    ## This attribute may be used to place a cell into conceptual categories that can be considered to form axes in an n-dimensional space. User agents may give users access to these categories (e.g., the user may query the user agent for all cells that belong to certain categories, the user agent may present a table in the form of a table of contents, etc.). Please consult an HTML reference for more details.
patrick@0
  5909
    attribute axis { text }?
patrick@0
  5910
  & 
patrick@0
  5911
    ## Specifies the list of header cells that provide header information for the current data cell. The value of this attribute is a space-separated list of cell names; those cells must be named by setting their id attribute. Authors generally use the headers attribute to help non-visual user agents render header information about data cells (e.g., header information is spoken prior to the cell data), but the attribute may also be used in conjunction with style sheets.
patrick@0
  5912
    attribute headers { text }?
patrick@0
  5913
  & 
patrick@0
  5914
    ## Specifies the set of data cells for which the current header cell provides header information. This attribute may be used in place of the headers attribute, particularly for simple tables.
patrick@0
  5915
    attribute scope {
patrick@0
  5916
      
patrick@0
  5917
      ## The current cell provides header information for the rest of the row that contains it
patrick@0
  5918
      "row"
patrick@0
  5919
      | 
patrick@0
  5920
        ## The current cell provides header information for the rest of the column that contains it.
patrick@0
  5921
        "col"
patrick@0
  5922
      | 
patrick@0
  5923
        ## The header cell provides header information for the rest of the row group that contains it.
patrick@0
  5924
        "rowgroup"
patrick@0
  5925
      | 
patrick@0
  5926
        ## The header cell provides header information for the rest of the column group that contains it.
patrick@0
  5927
        "colgroup"
patrick@0
  5928
    }?
patrick@0
  5929
  & 
patrick@0
  5930
    ## Specifies the number of rows spanned by the current cell. The default value of this attribute is one (1
patrick@0
  5931
    ## ). The value zero (0
patrick@0
  5932
    ## ) means that the cell spans all rows from the current row to the last row of the table section (thead
patrick@0
  5933
    ## , tbody
patrick@0
  5934
    ## , or tfoot
patrick@0
  5935
    ## ) in which the cell is defined.
patrick@0
  5936
    attribute rowspan { xsd:nonNegativeInteger }?
patrick@0
  5937
  & 
patrick@0
  5938
    ## Specifies the number of columns spanned by the current cell. The default value of this attribute is one (1
patrick@0
  5939
    ## ). The value zero (0
patrick@0
  5940
    ## ) means that the cell spans all columns from the current column to the last column of the column group (colgroup
patrick@0
  5941
    ## ) in which the cell is defined.
patrick@0
  5942
    attribute colspan { xsd:nonNegativeInteger }?
patrick@0
  5943
db.html.table.info = db._info.title.forbidden
patrick@0
  5944
db.html.table.model =
patrick@0
  5945
  db.html.table.info?,
patrick@0
  5946
  db.html.caption,
patrick@0
  5947
  (db.html.col* | db.html.colgroup*),
patrick@0
  5948
  db.html.thead?,
patrick@0
  5949
  db.html.tfoot?,
patrick@0
  5950
  (db.html.tbody+ | db.html.tr+)
patrick@0
  5951
db.html.informaltable.info = db._info.title.forbidden
patrick@0
  5952
db.html.informaltable.model =
patrick@0
  5953
  db.html.informaltable.info?,
patrick@0
  5954
  (db.html.col* | db.html.colgroup*),
patrick@0
  5955
  db.html.thead?,
patrick@0
  5956
  db.html.tfoot?,
patrick@0
  5957
  (db.html.tbody+ | db.html.tr+)
patrick@0
  5958
div {
patrick@0
  5959
  db.html.table.role.attribute = attribute role { text }
patrick@0
  5960
  db.html.table.label.attribute = db.label.attribute
patrick@0
  5961
  db.html.table.attlist =
patrick@0
  5962
    db.html.attrs
patrick@0
  5963
    & db.html.table.attributes
patrick@0
  5964
    & db.html.table.role.attribute?
patrick@0
  5965
    & db.html.table.label.attribute?
patrick@0
  5966
    & db.orient.attribute?
patrick@0
  5967
    & db.pgwide.attribute?
patrick@0
  5968
    & db.tabstyle.attribute?
patrick@0
  5969
    & db.floatstyle.attribute?
patrick@0
  5970
  db.html.table =
patrick@0
  5971
    
patrick@0
  5972
    ## A formal (captioned) HTML table in a document
patrick@0
  5973
    element table { db.html.table.attlist, db.html.table.model }
patrick@0
  5974
}
patrick@0
  5975
div {
patrick@0
  5976
  db.html.informaltable.attlist =
patrick@0
  5977
    db.html.attrs & db.html.table.attributes
patrick@0
  5978
  db.html.informaltable =
patrick@0
  5979
    
patrick@0
  5980
    ## An HTML table without a title
patrick@0
  5981
    element informaltable {
patrick@0
  5982
      db.html.informaltable.attlist, db.html.informaltable.model
patrick@0
  5983
    }
patrick@0
  5984
}
patrick@0
  5985
div {
patrick@0
  5986
  db.html.caption.attlist = db.html.attrs
patrick@0
  5987
  db.html.caption =
patrick@0
  5988
    
patrick@0
  5989
    ## An HTML table caption
patrick@0
  5990
    element caption { db.html.caption.attlist, db.all.inlines* }
patrick@0
  5991
}
patrick@0
  5992
div {
patrick@0
  5993
  db.html.col.attlist =
patrick@0
  5994
    db.html.attrs
patrick@0
  5995
    & 
patrick@0
  5996
      ## This attribute, whose value must be an integer > 0, specifies the number of columns spanned
patrick@0
  5997
      ##  by the col
patrick@0
  5998
      ##  element; the col
patrick@0
  5999
      ##  element shares its attributes with all the columns it spans. The default value for this attribute is 1 (i.e., a single column). If the span attribute is set to N > 1, the current col
patrick@0
  6000
      ##  element shares its attributes with the next N-1 columns.
patrick@0
  6001
      attribute span { xsd:nonNegativeInteger }?
patrick@0
  6002
    & 
patrick@0
  6003
      ## Specifies a default width for each column spanned by the current col
patrick@0
  6004
      ##  element. It has the same meaning as the width
patrick@0
  6005
      ##  attribute for the colgroup
patrick@0
  6006
      ##  element and overrides it.
patrick@0
  6007
      attribute width { text }?
patrick@0
  6008
    & db.html.cellhalign
patrick@0
  6009
    & db.html.cellvalign
patrick@0
  6010
  db.html.col =
patrick@0
  6011
    
patrick@0
  6012
    ## Specifications for a column in an HTML table
patrick@0
  6013
    element col { db.html.col.attlist, empty }
patrick@0
  6014
}
patrick@0
  6015
div {
patrick@0
  6016
  db.html.colgroup.attlist =
patrick@0
  6017
    db.html.attrs
patrick@0
  6018
    & 
patrick@0
  6019
      ## This attribute, which must be an integer > 0, specifies the number of columns in a column group. In the absence of a span attribute, each colgroup
patrick@0
  6020
      ##  defines a column group containing one column. If the span attribute is set to N > 0, the current colgroup
patrick@0
  6021
      ##  element defines a column group containing N columns. User agents must ignore this attribute if the colgroup
patrick@0
  6022
      ##  element contains one or more col
patrick@0
  6023
      ##  elements.
patrick@0
  6024
      attribute span { xsd:nonNegativeInteger }?
patrick@0
  6025
    & 
patrick@0
  6026
      ## This attribute specifies a default width for each column in the current column group. In addition to the standard pixel, percentage, and relative values, this attribute allows the special form 0*
patrick@0
  6027
      ##  (zero asterisk) which means that the width of the each column in the group should be the minimum width necessary to hold the column's contents. This implies that a column's entire contents must be known before its width may be correctly computed. Authors should be aware that specifying 0*
patrick@0
  6028
      ##  will prevent visual user agents from rendering a table incrementally. This attribute is overridden for any column in the column group whose width is specified via a col
patrick@0
  6029
      ##  element.
patrick@0
  6030
      attribute width { text }?
patrick@0
  6031
    & db.html.cellhalign
patrick@0
  6032
    & db.html.cellvalign
patrick@0
  6033
  db.html.colgroup =
patrick@0
  6034
    
patrick@0
  6035
    ## A group of columns in an HTML table
patrick@0
  6036
    element colgroup { db.html.colgroup.attlist, db.html.col* }
patrick@0
  6037
}
patrick@0
  6038
div {
patrick@0
  6039
  db.html.thead.attlist =
patrick@0
  6040
    db.html.attrs & db.html.cellhalign & db.html.cellvalign
patrick@0
  6041
  db.html.thead =
patrick@0
  6042
    
patrick@0
  6043
    ## A table header consisting of one or more rows in an HTML table
patrick@0
  6044
    element thead { db.html.thead.attlist, db.html.tr+ }
patrick@0
  6045
}
patrick@0
  6046
div {
patrick@0
  6047
  db.html.tfoot.attlist =
patrick@0
  6048
    db.html.attrs & db.html.cellhalign & db.html.cellvalign
patrick@0
  6049
  db.html.tfoot =
patrick@0
  6050
    
patrick@0
  6051
    ## A table footer consisting of one or more rows in an HTML table
patrick@0
  6052
    element tfoot { db.html.tfoot.attlist, db.html.tr+ }
patrick@0
  6053
}
patrick@0
  6054
div {
patrick@0
  6055
  db.html.tbody.attlist =
patrick@0
  6056
    db.html.attrs & db.html.cellhalign & db.html.cellvalign
patrick@0
  6057
  db.html.tbody =
patrick@0
  6058
    
patrick@0
  6059
    ## A wrapper for the rows of an HTML table or informal HTML table
patrick@0
  6060
    element tbody { db.html.tbody.attlist, db.html.tr+ }
patrick@0
  6061
}
patrick@0
  6062
div {
patrick@0
  6063
  db.html.tr.attlist =
patrick@0
  6064
    db.html.attrs & db.html.cellhalign & db.html.cellvalign
patrick@0
  6065
  db.html.tr =
patrick@0
  6066
    
patrick@0
  6067
    ## A row in an HTML table
patrick@0
  6068
    element tr { db.html.tr.attlist, (db.html.th | db.html.td)+ }
patrick@0
  6069
}
patrick@0
  6070
div {
patrick@0
  6071
  db.html.th.attlist =
patrick@0
  6072
    db.html.attrs
patrick@0
  6073
    & db.html.tablecell.attributes
patrick@0
  6074
    & db.html.cellhalign
patrick@0
  6075
    & db.html.cellvalign
patrick@0
  6076
  db.html.th =
patrick@0
  6077
    
patrick@0
  6078
    ## A table header entry in an HTML table
patrick@0
  6079
    element th {
patrick@0
  6080
      db.html.th.attlist, (db.all.inlines* | db.all.blocks*)
patrick@0
  6081
    }
patrick@0
  6082
}
patrick@0
  6083
div {
patrick@0
  6084
  db.html.td.attlist =
patrick@0
  6085
    db.html.attrs
patrick@0
  6086
    & db.html.tablecell.attributes
patrick@0
  6087
    & db.html.cellhalign
patrick@0
  6088
    & db.html.cellvalign
patrick@0
  6089
  db.html.td =
patrick@0
  6090
    
patrick@0
  6091
    ## A table entry in an HTML table
patrick@0
  6092
    element td {
patrick@0
  6093
      db.html.td.attlist, (db.all.inlines* | db.all.blocks*)
patrick@0
  6094
    }
patrick@0
  6095
}
patrick@0
  6096
div {
patrick@0
  6097
  db.msgset.role.attribute = attribute role { text }
patrick@0
  6098
  db.msgset.attlist =
patrick@0
  6099
    db.msgset.role.attribute?
patrick@0
  6100
    & db.common.attributes
patrick@0
  6101
    & db.common.linking.attributes
patrick@0
  6102
  db.msgset.info = db._info.title.only
patrick@0
  6103
  db.msgset =
patrick@0
  6104
    
patrick@0
  6105
    ## A detailed set of messages, usually error messages
patrick@0
  6106
    element msgset {
patrick@0
  6107
      db.msgset.attlist,
patrick@0
  6108
      db.msgset.info,
patrick@0
  6109
      (db.msgentry+ | db.simplemsgentry+)
patrick@0
  6110
    }
patrick@0
  6111
}
patrick@0
  6112
div {
patrick@0
  6113
  db.msgentry.role.attribute = attribute role { text }
patrick@0
  6114
  db.msgentry.attlist =
patrick@0
  6115
    db.msgentry.role.attribute?
patrick@0
  6116
    & db.common.attributes
patrick@0
  6117
    & db.common.linking.attributes
patrick@0
  6118
  db.msgentry =
patrick@0
  6119
    
patrick@0
  6120
    ## A wrapper for an entry in a message set
patrick@0
  6121
    element msgentry {
patrick@0
  6122
      db.msgentry.attlist, db.msg+, db.msginfo?, db.msgexplan*
patrick@0
  6123
    }
patrick@0
  6124
}
patrick@0
  6125
div {
patrick@0
  6126
  db.simplemsgentry.role.attribute = attribute role { text }
patrick@0
  6127
  db.simplemsgentry.msgaud.attribute =
patrick@0
  6128
    
patrick@0
  6129
    ## The audience to which the message relevant
patrick@0
  6130
    attribute msgaud { text }
patrick@0
  6131
  db.simplemsgentry.msgorig.attribute =
patrick@0
  6132
    
patrick@0
  6133
    ## The origin of the message
patrick@0
  6134
    attribute msgorig { text }
patrick@0
  6135
  db.simplemsgentry.msglevel.attribute =
patrick@0
  6136
    
patrick@0
  6137
    ## The level of importance or severity of a message
patrick@0
  6138
    attribute msglevel { text }
patrick@0
  6139
  db.simplemsgentry.attlist =
patrick@0
  6140
    db.simplemsgentry.role.attribute?
patrick@0
  6141
    & db.common.attributes
patrick@0
  6142
    & db.common.linking.attributes
patrick@0
  6143
    & db.simplemsgentry.msgaud.attribute?
patrick@0
  6144
    & db.simplemsgentry.msgorig.attribute?
patrick@0
  6145
    & db.simplemsgentry.msglevel.attribute?
patrick@0
  6146
  db.simplemsgentry =
patrick@0
  6147
    
patrick@0
  6148
    ## A wrapper for a simpler entry in a message set
patrick@0
  6149
    element simplemsgentry {
patrick@0
  6150
      db.simplemsgentry.attlist, db.msgtext, db.msgexplan+
patrick@0
  6151
    }
patrick@0
  6152
}
patrick@0
  6153
div {
patrick@0
  6154
  db.msg.role.attribute = attribute role { text }
patrick@0
  6155
  db.msg.attlist =
patrick@0
  6156
    db.msg.role.attribute?
patrick@0
  6157
    & db.common.attributes
patrick@0
  6158
    & db.common.linking.attributes
patrick@0
  6159
  db.msg.info = db._info.title.only
patrick@0
  6160
  db.msg =
patrick@0
  6161
    
patrick@0
  6162
    ## A message in a message set
patrick@0
  6163
    element msg {
patrick@0
  6164
      db.msg.attlist, db.msg.info, db.msgmain, (db.msgsub | db.msgrel)*
patrick@0
  6165
    }
patrick@0
  6166
}
patrick@0
  6167
div {
patrick@0
  6168
  db.msgmain.role.attribute = attribute role { text }
patrick@0
  6169
  db.msgmain.attlist =
patrick@0
  6170
    db.msgmain.role.attribute?
patrick@0
  6171
    & db.common.attributes
patrick@0
  6172
    & db.common.linking.attributes
patrick@0
  6173
  db.msgmain.info = db._info.title.only
patrick@0
  6174
  db.msgmain =
patrick@0
  6175
    
patrick@0
  6176
    ## The primary component of a message in a message set 
patrick@0
  6177
    element msgmain { db.msgmain.attlist, db.msgmain.info, db.msgtext }
patrick@0
  6178
}
patrick@0
  6179
div {
patrick@0
  6180
  db.msgsub.role.attribute = attribute role { text }
patrick@0
  6181
  db.msgsub.attlist =
patrick@0
  6182
    db.msgsub.role.attribute?
patrick@0
  6183
    & db.common.attributes
patrick@0
  6184
    & db.common.linking.attributes
patrick@0
  6185
  db.msgsub.info = db._info.title.only
patrick@0
  6186
  db.msgsub =
patrick@0
  6187
    
patrick@0
  6188
    ## A subcomponent of a message in a message set
patrick@0
  6189
    element msgsub { db.msgsub.attlist, db.msgsub.info, db.msgtext }
patrick@0
  6190
}
patrick@0
  6191
div {
patrick@0
  6192
  db.msgrel.role.attribute = attribute role { text }
patrick@0
  6193
  db.msgrel.attlist =
patrick@0
  6194
    db.msgrel.role.attribute?
patrick@0
  6195
    & db.common.attributes
patrick@0
  6196
    & db.common.linking.attributes
patrick@0
  6197
  db.msgrel.info = db._info.title.only
patrick@0
  6198
  db.msgrel =
patrick@0
  6199
    
patrick@0
  6200
    ## A related component of a message in a message set
patrick@0
  6201
    element msgrel { db.msgrel.attlist, db.msgrel.info, db.msgtext }
patrick@0
  6202
}
patrick@0
  6203
div {
patrick@0
  6204
  db.msgtext.role.attribute = attribute role { text }
patrick@0
  6205
  db.msgtext.attlist =
patrick@0
  6206
    db.msgtext.role.attribute?
patrick@0
  6207
    & db.common.attributes
patrick@0
  6208
    & db.common.linking.attributes
patrick@0
  6209
  db.msgtext =
patrick@0
  6210
    
patrick@0
  6211
    ## The actual text of a message component in a message set
patrick@0
  6212
    element msgtext { db.msgtext.attlist, db.all.blocks+ }
patrick@0
  6213
}
patrick@0
  6214
div {
patrick@0
  6215
  db.msginfo.role.attribute = attribute role { text }
patrick@0
  6216
  db.msginfo.attlist =
patrick@0
  6217
    db.msginfo.role.attribute?
patrick@0
  6218
    & db.common.attributes
patrick@0
  6219
    & db.common.linking.attributes
patrick@0
  6220
  db.msginfo =
patrick@0
  6221
    
patrick@0
  6222
    ## Information about a message in a message set
patrick@0
  6223
    element msginfo {
patrick@0
  6224
      db.msginfo.attlist, (db.msglevel | db.msgorig | db.msgaud)*
patrick@0
  6225
    }
patrick@0
  6226
}
patrick@0
  6227
div {
patrick@0
  6228
  db.msglevel.role.attribute = attribute role { text }
patrick@0
  6229
  db.msglevel.attlist =
patrick@0
  6230
    db.msglevel.role.attribute?
patrick@0
  6231
    & db.common.attributes
patrick@0
  6232
    & db.common.linking.attributes
patrick@0
  6233
  db.msglevel =
patrick@0
  6234
    
patrick@0
  6235
    ## The level of importance or severity of a message in a message set
patrick@0
  6236
    element msglevel { db.msglevel.attlist, db._text }
patrick@0
  6237
}
patrick@0
  6238
div {
patrick@0
  6239
  db.msgorig.role.attribute = attribute role { text }
patrick@0
  6240
  db.msgorig.attlist =
patrick@0
  6241
    db.msgorig.role.attribute?
patrick@0
  6242
    & db.common.attributes
patrick@0
  6243
    & db.common.linking.attributes
patrick@0
  6244
  db.msgorig =
patrick@0
  6245
    
patrick@0
  6246
    ## The origin of a message in a message set
patrick@0
  6247
    element msgorig { db.msgorig.attlist, db._text }
patrick@0
  6248
}
patrick@0
  6249
div {
patrick@0
  6250
  db.msgaud.role.attribute = attribute role { text }
patrick@0
  6251
  db.msgaud.attlist =
patrick@0
  6252
    db.msgaud.role.attribute?
patrick@0
  6253
    & db.common.attributes
patrick@0
  6254
    & db.common.linking.attributes
patrick@0
  6255
  db.msgaud =
patrick@0
  6256
    
patrick@0
  6257
    ## The audience to which a message in a message set is relevant
patrick@0
  6258
    element msgaud { db.msgaud.attlist, db._text }
patrick@0
  6259
}
patrick@0
  6260
div {
patrick@0
  6261
  db.msgexplan.role.attribute = attribute role { text }
patrick@0
  6262
  db.msgexplan.attlist =
patrick@0
  6263
    db.msgexplan.role.attribute?
patrick@0
  6264
    & db.common.attributes
patrick@0
  6265
    & db.common.linking.attributes
patrick@0
  6266
  db.msgexplan.info = db._info.title.only
patrick@0
  6267
  db.msgexplan =
patrick@0
  6268
    
patrick@0
  6269
    ## Explanatory material relating to a message in a message set
patrick@0
  6270
    element msgexplan {
patrick@0
  6271
      db.msgexplan.attlist, db.msgexplan.info, db.all.blocks+
patrick@0
  6272
    }
patrick@0
  6273
}
patrick@0
  6274
div {
patrick@0
  6275
  db.qandaset.role.attribute = attribute role { text }
patrick@0
  6276
  db.qandaset.defaultlabel.enumeration =
patrick@0
  6277
    
patrick@0
  6278
    ## No labels
patrick@0
  6279
    "none"
patrick@0
  6280
    | 
patrick@0
  6281
      ## Numeric labels
patrick@0
  6282
      "number"
patrick@0
  6283
    | 
patrick@0
  6284
      ## "Q:" and "A:" labels
patrick@0
  6285
      "qanda"
patrick@0
  6286
  db.qandaset.defaultlabel.attribute =
patrick@0
  6287
    
patrick@0
  6288
    ## Specifies the default labelling
patrick@0
  6289
    attribute defaultlabel { db.qandaset.defaultlabel.enumeration }
patrick@0
  6290
  db.qandaset.attlist =
patrick@0
  6291
    db.qandaset.role.attribute?
patrick@0
  6292
    & db.common.attributes
patrick@0
  6293
    & db.common.linking.attributes
patrick@0
  6294
    & db.qandaset.defaultlabel.attribute?
patrick@0
  6295
  db.qandaset.info = db._info.title.only
patrick@0
  6296
  db.qandaset =
patrick@0
  6297
    
patrick@0
  6298
    ## A question-and-answer set
patrick@0
  6299
    element qandaset {
patrick@0
  6300
      db.qandaset.attlist,
patrick@0
  6301
      db.qandaset.info,
patrick@0
  6302
      db.all.blocks*,
patrick@0
  6303
      (db.qandadiv+ | db.qandaentry+)
patrick@0
  6304
    }
patrick@0
  6305
}
patrick@0
  6306
div {
patrick@0
  6307
  db.qandadiv.role.attribute = attribute role { text }
patrick@0
  6308
  db.qandadiv.attlist =
patrick@0
  6309
    db.qandadiv.role.attribute?
patrick@0
  6310
    & db.common.attributes
patrick@0
  6311
    & db.common.linking.attributes
patrick@0
  6312
  db.qandadiv.info = db._info.title.only
patrick@0
  6313
  db.qandadiv =
patrick@0
  6314
    
patrick@0
  6315
    ## A titled division in a qandaset
patrick@0
  6316
    element qandadiv {
patrick@0
  6317
      db.qandadiv.attlist,
patrick@0
  6318
      db.qandadiv.info,
patrick@0
  6319
      db.all.blocks*,
patrick@0
  6320
      (db.qandadiv+ | db.qandaentry+)
patrick@0
  6321
    }
patrick@0
  6322
}
patrick@0
  6323
div {
patrick@0
  6324
  db.qandaentry.role.attribute = attribute role { text }
patrick@0
  6325
  db.qandaentry.attlist =
patrick@0
  6326
    db.qandaentry.role.attribute?
patrick@0
  6327
    & db.common.attributes
patrick@0
  6328
    & db.common.linking.attributes
patrick@0
  6329
  db.qandaentry.info = db._info.title.only
patrick@0
  6330
  db.qandaentry =
patrick@0
  6331
    
patrick@0
  6332
    ## A question/answer set within a qandaset
patrick@0
  6333
    element qandaentry {
patrick@0
  6334
      db.qandaentry.attlist, db.qandaentry.info, db.question, db.answer*
patrick@0
  6335
    }
patrick@0
  6336
}
patrick@0
  6337
div {
patrick@0
  6338
  db.question.role.attribute = attribute role { text }
patrick@0
  6339
  db.question.attlist =
patrick@0
  6340
    db.question.role.attribute?
patrick@0
  6341
    & db.common.attributes
patrick@0
  6342
    & db.common.linking.attributes
patrick@0
  6343
  db.question =
patrick@0
  6344
    
patrick@0
  6345
    ## A question in a qandaset
patrick@0
  6346
    element question { db.question.attlist, db.label?, db.all.blocks+ }
patrick@0
  6347
}
patrick@0
  6348
div {
patrick@0
  6349
  db.answer.role.attribute = attribute role { text }
patrick@0
  6350
  db.answer.attlist =
patrick@0
  6351
    db.answer.role.attribute?
patrick@0
  6352
    & db.common.attributes
patrick@0
  6353
    & db.common.linking.attributes
patrick@0
  6354
  db.answer =
patrick@0
  6355
    
patrick@0
  6356
    ## An answer to a question posed in a qandaset
patrick@0
  6357
    element answer { db.answer.attlist, db.label?, db.all.blocks+ }
patrick@0
  6358
}
patrick@0
  6359
div {
patrick@0
  6360
  db.label.role.attribute = attribute role { text }
patrick@0
  6361
  db.label.attlist =
patrick@0
  6362
    db.label.role.attribute?
patrick@0
  6363
    & db.common.attributes
patrick@0
  6364
    & db.common.linking.attributes
patrick@0
  6365
  db.label =
patrick@0
  6366
    
patrick@0
  6367
    ## A label on a question or answer
patrick@0
  6368
    element label { db.label.attlist, db._text }
patrick@0
  6369
}
patrick@0
  6370
db.math.inlines = db.inlineequation
patrick@0
  6371
db.equation.content = (db.mediaobject+ | db.mathphrase+) | db._any.mml+
patrick@0
  6372
db.inlineequation.content =
patrick@0
  6373
  (db.inlinemediaobject+ | db.mathphrase+) | db._any.mml+
patrick@0
  6374
div {
patrick@0
  6375
  db.equation.role.attribute = attribute role { text }
patrick@0
  6376
  db.equation.label.attribute = db.label.attribute
patrick@0
  6377
  db.equation.attlist =
patrick@0
  6378
    db.equation.role.attribute?
patrick@0
  6379
    & db.common.attributes
patrick@0
  6380
    & db.common.linking.attributes
patrick@0
  6381
    & db.equation.label.attribute?
patrick@0
  6382
    & db.pgwide.attribute?
patrick@0
  6383
    & db.floatstyle.attribute?
patrick@0
  6384
  db.equation.info = db._info.title.only
patrick@0
  6385
  db.equation =
patrick@0
  6386
    
patrick@0
  6387
    ## A displayed mathematical equation
patrick@0
  6388
    element equation {
patrick@0
  6389
      db.equation.attlist,
patrick@0
  6390
      db.equation.info,
patrick@0
  6391
      db.alt?,
patrick@0
  6392
      db.equation.content,
patrick@0
  6393
      db.caption?
patrick@0
  6394
    }
patrick@0
  6395
}
patrick@0
  6396
div {
patrick@0
  6397
  db.informalequation.role.attribute = attribute role { text }
patrick@0
  6398
  db.informalequation.attlist =
patrick@0
  6399
    db.informalequation.role.attribute?
patrick@0
  6400
    & db.common.attributes
patrick@0
  6401
    & db.common.linking.attributes
patrick@0
  6402
  db.informalequation.info = db._info.title.forbidden
patrick@0
  6403
  db.informalequation =
patrick@0
  6404
    
patrick@0
  6405
    ## A displayed mathematical equation without a title
patrick@0
  6406
    element informalequation {
patrick@0
  6407
      db.informalequation.attlist,
patrick@0
  6408
      db.informalequation.info,
patrick@0
  6409
      db.alt?,
patrick@0
  6410
      db.equation.content,
patrick@0
  6411
      db.caption?
patrick@0
  6412
    }
patrick@0
  6413
}
patrick@0
  6414
div {
patrick@0
  6415
  db.inlineequation.role.attribute = attribute role { text }
patrick@0
  6416
  db.inlineequation.attlist =
patrick@0
  6417
    db.inlineequation.role.attribute?
patrick@0
  6418
    & db.common.attributes
patrick@0
  6419
    & db.common.linking.attributes
patrick@0
  6420
  db.inlineequation =
patrick@0
  6421
    
patrick@0
  6422
    ## A mathematical equation or expression occurring inline
patrick@0
  6423
    element inlineequation {
patrick@0
  6424
      db.inlineequation.attlist, db.alt?, db.inlineequation.content
patrick@0
  6425
    }
patrick@0
  6426
}
patrick@0
  6427
div {
patrick@0
  6428
  db.mathphrase.role.attribute = attribute role { text }
patrick@0
  6429
  db.mathphrase.attlist =
patrick@0
  6430
    db.mathphrase.role.attribute?
patrick@0
  6431
    & db.common.attributes
patrick@0
  6432
    & db.common.linking.attributes
patrick@0
  6433
  db.mathphrase =
patrick@0
  6434
    
patrick@0
  6435
    ## A mathematical phrase that can be represented with ordinary text and a small amount of markup
patrick@0
  6436
    element mathphrase {
patrick@0
  6437
      db.mathphrase.attlist,
patrick@0
  6438
      (db._text | db.ubiq.inlines | db._emphasis)*
patrick@0
  6439
    }
patrick@0
  6440
}
patrick@0
  6441
div {
patrick@0
  6442
  db.imagedata.mathml.role.attribute = attribute role { text }
patrick@0
  6443
  db.imagedata.mathml.attlist =
patrick@0
  6444
    db.imagedata.mathml.role.attribute?
patrick@0
  6445
    & db.common.attributes
patrick@0
  6446
    & 
patrick@0
  6447
      ## Specifies that the format of the data is MathML
patrick@0
  6448
      attribute format {
patrick@0
  6449
        
patrick@0
  6450
        ## Specifies MathML.
patrick@0
  6451
        "mathml"
patrick@0
  6452
      }?
patrick@0
  6453
    & db.imagedata.align.attribute?
patrick@0
  6454
    & db.imagedata.valign.attribute?
patrick@0
  6455
    & db.imagedata.width.attribute?
patrick@0
  6456
    & db.imagedata.contentwidth.attribute?
patrick@0
  6457
    & db.imagedata.scalefit.attribute?
patrick@0
  6458
    & db.imagedata.scale.attribute?
patrick@0
  6459
    & db.imagedata.depth.attribute?
patrick@0
  6460
    & db.imagedata.contentdepth.attribute?
patrick@0
  6461
  db.imagedata.mathml.info = db._info.title.forbidden
patrick@0
  6462
  db.imagedata.mathml =
patrick@0
  6463
    
patrick@0
  6464
    ## A MathML expression in a media object
patrick@0
  6465
    element imagedata {
patrick@0
  6466
      db.imagedata.mathml.attlist,
patrick@0
  6467
      db.imagedata.mathml.info,
patrick@0
  6468
      db._any.mml+
patrick@0
  6469
    }
patrick@0
  6470
}
patrick@0
  6471
div {
patrick@0
  6472
  db._any.mml =
patrick@0
  6473
    
patrick@0
  6474
    ## Any element from the MathML namespace
patrick@0
  6475
    element mml:* { (db._any.attribute | text | db._any)* }
patrick@0
  6476
}
patrick@0
  6477
div {
patrick@0
  6478
  db.imagedata.svg.role.attribute = attribute role { text }
patrick@0
  6479
  db.imagedata.svg.attlist =
patrick@0
  6480
    db.imagedata.svg.role.attribute?
patrick@0
  6481
    & db.common.attributes
patrick@0
  6482
    & 
patrick@0
  6483
      ## Specifies that the format of the data is SVG
patrick@0
  6484
      attribute format {
patrick@0
  6485
        
patrick@0
  6486
        ## Specifies SVG.
patrick@0
  6487
        "svg"
patrick@0
  6488
      }?
patrick@0
  6489
    & db.imagedata.align.attribute?
patrick@0
  6490
    & db.imagedata.valign.attribute?
patrick@0
  6491
    & db.imagedata.width.attribute?
patrick@0
  6492
    & db.imagedata.contentwidth.attribute?
patrick@0
  6493
    & db.imagedata.scalefit.attribute?
patrick@0
  6494
    & db.imagedata.scale.attribute?
patrick@0
  6495
    & db.imagedata.depth.attribute?
patrick@0
  6496
    & db.imagedata.contentdepth.attribute?
patrick@0
  6497
  db.imagedata.svg.info = db._info.title.forbidden
patrick@0
  6498
  db.imagedata.svg =
patrick@0
  6499
    
patrick@0
  6500
    ## An SVG drawing in a media object
patrick@0
  6501
    element imagedata {
patrick@0
  6502
      db.imagedata.svg.attlist, db.imagedata.svg.info, db._any.svg+
patrick@0
  6503
    }
patrick@0
  6504
}
patrick@0
  6505
div {
patrick@0
  6506
  db._any.svg =
patrick@0
  6507
    
patrick@0
  6508
    ## Any element from the SVG namespace
patrick@0
  6509
    element svg:* { (db._any.attribute | text | db._any)* }
patrick@0
  6510
}
patrick@0
  6511
db.markup.inlines =
patrick@0
  6512
  db.tag
patrick@0
  6513
  | db.markup
patrick@0
  6514
  | db.token
patrick@0
  6515
  | db.symbol
patrick@0
  6516
  | db.literal
patrick@0
  6517
  | db.code
patrick@0
  6518
  | db.constant
patrick@0
  6519
  | db.email
patrick@0
  6520
  | db.uri
patrick@0
  6521
div {
patrick@0
  6522
  db.markup.role.attribute = attribute role { text }
patrick@0
  6523
  db.markup.attlist =
patrick@0
  6524
    db.markup.role.attribute?
patrick@0
  6525
    & db.common.attributes
patrick@0
  6526
    & db.common.linking.attributes
patrick@0
  6527
  db.markup =
patrick@0
  6528
    
patrick@0
  6529
    ## A string of formatting markup in text that is to be represented literally
patrick@0
  6530
    element markup { db.markup.attlist, db._text }
patrick@0
  6531
}
patrick@0
  6532
div {
patrick@0
  6533
  db.tag.role.attribute = attribute role { text }
patrick@0
  6534
  db.tag.class.enumeration =
patrick@0
  6535
    
patrick@0
  6536
    ## An attribute
patrick@0
  6537
    "attribute"
patrick@0
  6538
    | 
patrick@0
  6539
      ## An attribute value
patrick@0
  6540
      "attvalue"
patrick@0
  6541
    | 
patrick@0
  6542
      ## An element
patrick@0
  6543
      "element"
patrick@0
  6544
    | 
patrick@0
  6545
      ## An empty element tag
patrick@0
  6546
      "emptytag"
patrick@0
  6547
    | 
patrick@0
  6548
      ## An end tag
patrick@0
  6549
      "endtag"
patrick@0
  6550
    | 
patrick@0
  6551
      ## A general entity
patrick@0
  6552
      "genentity"
patrick@0
  6553
    | 
patrick@0
  6554
      ## The local name part of a qualified name
patrick@0
  6555
      "localname"
patrick@0
  6556
    | 
patrick@0
  6557
      ## A namespace
patrick@0
  6558
      "namespace"
patrick@0
  6559
    | 
patrick@0
  6560
      ## A numeric character reference
patrick@0
  6561
      "numcharref"
patrick@0
  6562
    | 
patrick@0
  6563
      ## A parameter entity
patrick@0
  6564
      "paramentity"
patrick@0
  6565
    | 
patrick@0
  6566
      ## A processing instruction
patrick@0
  6567
      "pi"
patrick@0
  6568
    | 
patrick@0
  6569
      ## The prefix part of a qualified name
patrick@0
  6570
      "prefix"
patrick@0
  6571
    | 
patrick@0
  6572
      ## An SGML comment
patrick@0
  6573
      "comment"
patrick@0
  6574
    | 
patrick@0
  6575
      ## A start tag
patrick@0
  6576
      "starttag"
patrick@0
  6577
    | 
patrick@0
  6578
      ## An XML processing instruction
patrick@0
  6579
      "xmlpi"
patrick@0
  6580
  db.tag.class.attribute =
patrick@0
  6581
    
patrick@0
  6582
    ## Identifies the nature of the tag content
patrick@0
  6583
    attribute class { db.tag.class.enumeration }
patrick@0
  6584
  db.tag.namespace.attribute =
patrick@0
  6585
    
patrick@0
  6586
    ## Identifies the namespace of the tag content
patrick@0
  6587
    attribute namespace { xsd:anyURI }
patrick@0
  6588
  db.tag.attlist =
patrick@0
  6589
    db.tag.role.attribute?
patrick@0
  6590
    & db.common.attributes
patrick@0
  6591
    & db.common.linking.attributes
patrick@0
  6592
    & db.tag.class.attribute?
patrick@0
  6593
    & db.tag.namespace.attribute?
patrick@0
  6594
  db.tag =
patrick@0
  6595
    
patrick@0
  6596
    ## A component of XML (or SGML) markup
patrick@0
  6597
    element tag { db.tag.attlist, db._text }
patrick@0
  6598
}
patrick@0
  6599
div {
patrick@0
  6600
  db.symbol.class.attribute =
patrick@0
  6601
    
patrick@0
  6602
    ## Identifies the class of symbol
patrick@0
  6603
    attribute class {
patrick@0
  6604
      
patrick@0
  6605
      ## The value is a limit of some kind
patrick@0
  6606
      "limit"
patrick@0
  6607
    }
patrick@0
  6608
  db.symbol.role.attribute = attribute role { text }
patrick@0
  6609
  db.symbol.attlist =
patrick@0
  6610
    db.symbol.role.attribute?
patrick@0
  6611
    & db.common.attributes
patrick@0
  6612
    & db.common.linking.attributes
patrick@0
  6613
    & db.symbol.class.attribute?
patrick@0
  6614
  db.symbol =
patrick@0
  6615
    
patrick@0
  6616
    ## A name that is replaced by a value before processing
patrick@0
  6617
    element symbol { db.symbol.attlist, db._text }
patrick@0
  6618
}
patrick@0
  6619
div {
patrick@0
  6620
  db.token.role.attribute = attribute role { text }
patrick@0
  6621
  db.token.attlist =
patrick@0
  6622
    db.token.role.attribute?
patrick@0
  6623
    & db.common.attributes
patrick@0
  6624
    & db.common.linking.attributes
patrick@0
  6625
  db.token =
patrick@0
  6626
    
patrick@0
  6627
    ## A unit of information
patrick@0
  6628
    element token { db.token.attlist, db._text }
patrick@0
  6629
}
patrick@0
  6630
div {
patrick@0
  6631
  db.literal.role.attribute = attribute role { text }
patrick@0
  6632
  db.literal.attlist =
patrick@0
  6633
    db.literal.role.attribute?
patrick@0
  6634
    & db.common.attributes
patrick@0
  6635
    & db.common.linking.attributes
patrick@0
  6636
  db.literal =
patrick@0
  6637
    
patrick@0
  6638
    ## Inline text that is some literal value
patrick@0
  6639
    element literal { db.literal.attlist, db._text }
patrick@0
  6640
}
patrick@0
  6641
div {
patrick@0
  6642
  code.language.attribute =
patrick@0
  6643
    
patrick@0
  6644
    ## Identifies the (computer) language of the code fragment
patrick@0
  6645
    attribute language { text }
patrick@0
  6646
  db.code.role.attribute = attribute role { text }
patrick@0
  6647
  db.code.attlist =
patrick@0
  6648
    db.code.role.attribute?
patrick@0
  6649
    & db.common.attributes
patrick@0
  6650
    & db.common.linking.attributes
patrick@0
  6651
    & code.language.attribute?
patrick@0
  6652
  db.code =
patrick@0
  6653
    
patrick@0
  6654
    ## An inline code fragment
patrick@0
  6655
    element code {
patrick@0
  6656
      db.code.attlist, (db.programming.inlines | db._text)*
patrick@0
  6657
    }
patrick@0
  6658
}
patrick@0
  6659
div {
patrick@0
  6660
  db.constant.class.attribute =
patrick@0
  6661
    
patrick@0
  6662
    ## Identifies the class of constant
patrick@0
  6663
    attribute class {
patrick@0
  6664
      
patrick@0
  6665
      ## The value is a limit of some kind
patrick@0
  6666
      "limit"
patrick@0
  6667
    }
patrick@0
  6668
  db.constant.role.attribute = attribute role { text }
patrick@0
  6669
  db.constant.attlist =
patrick@0
  6670
    db.constant.role.attribute?
patrick@0
  6671
    & db.common.attributes
patrick@0
  6672
    & db.common.linking.attributes
patrick@0
  6673
    & db.constant.class.attribute?
patrick@0
  6674
  db.constant =
patrick@0
  6675
    
patrick@0
  6676
    ## A programming or system constant
patrick@0
  6677
    element constant { db.constant.attlist, db._text }
patrick@0
  6678
}
patrick@0
  6679
div {
patrick@0
  6680
  db.productname.role.attribute = attribute role { text }
patrick@0
  6681
  db.productname.class.enumeration =
patrick@0
  6682
    
patrick@0
  6683
    ## A name with a copyright
patrick@0
  6684
    "copyright"
patrick@0
  6685
    | 
patrick@0
  6686
      ## A name with a registered copyright
patrick@0
  6687
      "registered"
patrick@0
  6688
    | 
patrick@0
  6689
      ## A name of a service
patrick@0
  6690
      "service"
patrick@0
  6691
    | 
patrick@0
  6692
      ## A name which is trademarked
patrick@0
  6693
      "trade"
patrick@0
  6694
  db.productname.class.attribute =
patrick@0
  6695
    
patrick@0
  6696
    ## Specifies the class of product name
patrick@0
  6697
    attribute class { db.productname.class.enumeration }
patrick@0
  6698
  db.productname.attlist =
patrick@0
  6699
    db.productname.role.attribute?
patrick@0
  6700
    & db.common.attributes
patrick@0
  6701
    & db.common.linking.attributes
patrick@0
  6702
    & db.productname.class.attribute?
patrick@0
  6703
  db.productname =
patrick@0
  6704
    
patrick@0
  6705
    ## The formal name of a product
patrick@0
  6706
    element productname { db.productname.attlist, db._text }
patrick@0
  6707
}
patrick@0
  6708
div {
patrick@0
  6709
  db.productnumber.role.attribute = attribute role { text }
patrick@0
  6710
  db.productnumber.attlist =
patrick@0
  6711
    db.productnumber.role.attribute?
patrick@0
  6712
    & db.common.attributes
patrick@0
  6713
    & db.common.linking.attributes
patrick@0
  6714
  db.productnumber =
patrick@0
  6715
    
patrick@0
  6716
    ## A number assigned to a product
patrick@0
  6717
    element productnumber { db.productnumber.attlist, db._text }
patrick@0
  6718
}
patrick@0
  6719
div {
patrick@0
  6720
  db.database.class.enumeration =
patrick@0
  6721
    
patrick@0
  6722
    ## An alternate or secondary key
patrick@0
  6723
    "altkey"
patrick@0
  6724
    | 
patrick@0
  6725
      ## A constraint
patrick@0
  6726
      "constraint"
patrick@0
  6727
    | 
patrick@0
  6728
      ## A data type
patrick@0
  6729
      "datatype"
patrick@0
  6730
    | 
patrick@0
  6731
      ## A field
patrick@0
  6732
      "field"
patrick@0
  6733
    | 
patrick@0
  6734
      ## A foreign key
patrick@0
  6735
      "foreignkey"
patrick@0
  6736
    | 
patrick@0
  6737
      ## A group
patrick@0
  6738
      "group"
patrick@0
  6739
    | 
patrick@0
  6740
      ## An index
patrick@0
  6741
      "index"
patrick@0
  6742
    | 
patrick@0
  6743
      ## The first or primary key
patrick@0
  6744
      "key1"
patrick@0
  6745
    | 
patrick@0
  6746
      ## An alternate or secondary key
patrick@0
  6747
      "key2"
patrick@0
  6748
    | 
patrick@0
  6749
      ## A name
patrick@0
  6750
      "name"
patrick@0
  6751
    | 
patrick@0
  6752
      ## The primary key
patrick@0
  6753
      "primarykey"
patrick@0
  6754
    | 
patrick@0
  6755
      ## A (stored) procedure
patrick@0
  6756
      "procedure"
patrick@0
  6757
    | 
patrick@0
  6758
      ## A record
patrick@0
  6759
      "record"
patrick@0
  6760
    | 
patrick@0
  6761
      ## A rule
patrick@0
  6762
      "rule"
patrick@0
  6763
    | 
patrick@0
  6764
      ## The secondary key
patrick@0
  6765
      "secondarykey"
patrick@0
  6766
    | 
patrick@0
  6767
      ## A table
patrick@0
  6768
      "table"
patrick@0
  6769
    | 
patrick@0
  6770
      ## A user
patrick@0
  6771
      "user"
patrick@0
  6772
    | 
patrick@0
  6773
      ## A view
patrick@0
  6774
      "view"
patrick@0
  6775
  db.database.class.attribute =
patrick@0
  6776
    
patrick@0
  6777
    ## Identifies the class of database artifact
patrick@0
  6778
    attribute class { db.database.class.enumeration }
patrick@0
  6779
  db.database.role.attribute = attribute role { text }
patrick@0
  6780
  db.database.attlist =
patrick@0
  6781
    db.database.role.attribute?
patrick@0
  6782
    & db.common.attributes
patrick@0
  6783
    & db.common.linking.attributes
patrick@0
  6784
    & db.database.class.attribute?
patrick@0
  6785
  db.database =
patrick@0
  6786
    
patrick@0
  6787
    ## The name of a database, or part of a database
patrick@0
  6788
    element database { db.database.attlist, db._text }
patrick@0
  6789
}
patrick@0
  6790
div {
patrick@0
  6791
  db.application.class.enumeration =
patrick@0
  6792
    
patrick@0
  6793
    ## A hardware application
patrick@0
  6794
    "hardware"
patrick@0
  6795
    | 
patrick@0
  6796
      ## A software application
patrick@0
  6797
      "software"
patrick@0
  6798
  db.application.class.attribute =
patrick@0
  6799
    
patrick@0
  6800
    ## Identifies the class of application
patrick@0
  6801
    attribute class { db.application.class.enumeration }
patrick@0
  6802
  db.application.role.attribute = attribute role { text }
patrick@0
  6803
  db.application.attlist =
patrick@0
  6804
    db.application.role.attribute?
patrick@0
  6805
    & db.common.attributes
patrick@0
  6806
    & db.common.linking.attributes
patrick@0
  6807
    & db.application.class.attribute?
patrick@0
  6808
  db.application =
patrick@0
  6809
    
patrick@0
  6810
    ## The name of a software program
patrick@0
  6811
    element application { db.application.attlist, db._text }
patrick@0
  6812
}
patrick@0
  6813
div {
patrick@0
  6814
  db.hardware.role.attribute = attribute role { text }
patrick@0
  6815
  db.hardware.attlist =
patrick@0
  6816
    db.hardware.role.attribute?
patrick@0
  6817
    & db.common.attributes
patrick@0
  6818
    & db.common.linking.attributes
patrick@0
  6819
  db.hardware =
patrick@0
  6820
    
patrick@0
  6821
    ## A physical part of a computer system
patrick@0
  6822
    element hardware { db.hardware.attlist, db._text }
patrick@0
  6823
}
patrick@0
  6824
db.gui.inlines =
patrick@0
  6825
  db.guiicon
patrick@0
  6826
  | db.guibutton
patrick@0
  6827
  | db.guimenuitem
patrick@0
  6828
  | db.guimenu
patrick@0
  6829
  | db.guisubmenu
patrick@0
  6830
  | db.guilabel
patrick@0
  6831
  | db.menuchoice
patrick@0
  6832
  | db.mousebutton
patrick@0
  6833
div {
patrick@0
  6834
  db.guibutton.role.attribute = attribute role { text }
patrick@0
  6835
  db.guibutton.attlist =
patrick@0
  6836
    db.guibutton.role.attribute?
patrick@0
  6837
    & db.common.attributes
patrick@0
  6838
    & db.common.linking.attributes
patrick@0
  6839
  db.guibutton =
patrick@0
  6840
    
patrick@0
  6841
    ## The text on a button in a GUI
patrick@0
  6842
    element guibutton {
patrick@0
  6843
      db.guibutton.attlist,
patrick@0
  6844
      (db._text | db.accel | db.superscript | db.subscript)*
patrick@0
  6845
    }
patrick@0
  6846
}
patrick@0
  6847
div {
patrick@0
  6848
  db.guiicon.role.attribute = attribute role { text }
patrick@0
  6849
  db.guiicon.attlist =
patrick@0
  6850
    db.guiicon.role.attribute?
patrick@0
  6851
    & db.common.attributes
patrick@0
  6852
    & db.common.linking.attributes
patrick@0
  6853
  db.guiicon =
patrick@0
  6854
    
patrick@0
  6855
    ## Graphic and/or text appearing as a icon in a GUI
patrick@0
  6856
    element guiicon {
patrick@0
  6857
      db.guiicon.attlist,
patrick@0
  6858
      (db._text | db.accel | db.superscript | db.subscript)*
patrick@0
  6859
    }
patrick@0
  6860
}
patrick@0
  6861
div {
patrick@0
  6862
  db.guilabel.role.attribute = attribute role { text }
patrick@0
  6863
  db.guilabel.attlist =
patrick@0
  6864
    db.guilabel.role.attribute?
patrick@0
  6865
    & db.common.attributes
patrick@0
  6866
    & db.common.linking.attributes
patrick@0
  6867
  db.guilabel =
patrick@0
  6868
    
patrick@0
  6869
    ## The text of a label in a GUI
patrick@0
  6870
    element guilabel {
patrick@0
  6871
      db.guilabel.attlist,
patrick@0
  6872
      (db._text | db.accel | db.superscript | db.subscript)*
patrick@0
  6873
    }
patrick@0
  6874
}
patrick@0
  6875
div {
patrick@0
  6876
  db.guimenu.role.attribute = attribute role { text }
patrick@0
  6877
  db.guimenu.attlist =
patrick@0
  6878
    db.guimenu.role.attribute?
patrick@0
  6879
    & db.common.attributes
patrick@0
  6880
    & db.common.linking.attributes
patrick@0
  6881
  db.guimenu =
patrick@0
  6882
    
patrick@0
  6883
    ## The name of a menu in a GUI
patrick@0
  6884
    element guimenu {
patrick@0
  6885
      db.guimenu.attlist,
patrick@0
  6886
      (db._text | db.accel | db.superscript | db.subscript)*
patrick@0
  6887
    }
patrick@0
  6888
}
patrick@0
  6889
div {
patrick@0
  6890
  db.guimenuitem.role.attribute = attribute role { text }
patrick@0
  6891
  db.guimenuitem.attlist =
patrick@0
  6892
    db.guimenuitem.role.attribute?
patrick@0
  6893
    & db.common.attributes
patrick@0
  6894
    & db.common.linking.attributes
patrick@0
  6895
  db.guimenuitem =
patrick@0
  6896
    
patrick@0
  6897
    ## The name of a terminal menu item in a GUI
patrick@0
  6898
    element guimenuitem {
patrick@0
  6899
      db.guimenuitem.attlist,
patrick@0
  6900
      (db._text | db.accel | db.superscript | db.subscript)*
patrick@0
  6901
    }
patrick@0
  6902
}
patrick@0
  6903
div {
patrick@0
  6904
  db.guisubmenu.role.attribute = attribute role { text }
patrick@0
  6905
  db.guisubmenu.attlist =
patrick@0
  6906
    db.guisubmenu.role.attribute?
patrick@0
  6907
    & db.common.attributes
patrick@0
  6908
    & db.common.linking.attributes
patrick@0
  6909
  db.guisubmenu =
patrick@0
  6910
    
patrick@0
  6911
    ## The name of a submenu in a GUI
patrick@0
  6912
    element guisubmenu {
patrick@0
  6913
      db.guisubmenu.attlist,
patrick@0
  6914
      (db._text | db.accel | db.superscript | db.subscript)*
patrick@0
  6915
    }
patrick@0
  6916
}
patrick@0
  6917
div {
patrick@0
  6918
  db.menuchoice.role.attribute = attribute role { text }
patrick@0
  6919
  db.menuchoice.attlist =
patrick@0
  6920
    db.menuchoice.role.attribute?
patrick@0
  6921
    & db.common.attributes
patrick@0
  6922
    & db.common.linking.attributes
patrick@0
  6923
  db.menuchoice =
patrick@0
  6924
    
patrick@0
  6925
    ## A selection or series of selections from a menu
patrick@0
  6926
    element menuchoice {
patrick@0
  6927
      db.menuchoice.attlist,
patrick@0
  6928
      db.shortcut?,
patrick@0
  6929
      (db.guibutton
patrick@0
  6930
       | db.guiicon
patrick@0
  6931
       | db.guilabel
patrick@0
  6932
       | db.guimenu
patrick@0
  6933
       | db.guimenuitem
patrick@0
  6934
       | db.guisubmenu)+
patrick@0
  6935
    }
patrick@0
  6936
}
patrick@0
  6937
div {
patrick@0
  6938
  db.mousebutton.role.attribute = attribute role { text }
patrick@0
  6939
  db.mousebutton.attlist =
patrick@0
  6940
    db.mousebutton.role.attribute?
patrick@0
  6941
    & db.common.attributes
patrick@0
  6942
    & db.common.linking.attributes
patrick@0
  6943
  db.mousebutton =
patrick@0
  6944
    
patrick@0
  6945
    ## The conventional name of a mouse button
patrick@0
  6946
    element mousebutton { db.mousebutton.attlist, db._text }
patrick@0
  6947
}
patrick@0
  6948
db.keyboard.inlines =
patrick@0
  6949
  db.keycombo
patrick@0
  6950
  | db.keycap
patrick@0
  6951
  | db.keycode
patrick@0
  6952
  | db.keysym
patrick@0
  6953
  | db.shortcut
patrick@0
  6954
  | db.accel
patrick@0
  6955
div {
patrick@0
  6956
  db.keycap.function.enumeration =
patrick@0
  6957
    
patrick@0
  6958
    ## The "Alt" key
patrick@0
  6959
    "alt"
patrick@0
  6960
    | 
patrick@0
  6961
      ## The "Backspace" key
patrick@0
  6962
      "backspace"
patrick@0
  6963
    | 
patrick@0
  6964
      ## The "Command" key
patrick@0
  6965
      "command"
patrick@0
  6966
    | 
patrick@0
  6967
      ## The "Control" key
patrick@0
  6968
      "control"
patrick@0
  6969
    | 
patrick@0
  6970
      ## The "Delete" key
patrick@0
  6971
      "delete"
patrick@0
  6972
    | 
patrick@0
  6973
      ## The down arrow
patrick@0
  6974
      "down"
patrick@0
  6975
    | 
patrick@0
  6976
      ## The "End" key
patrick@0
  6977
      "end"
patrick@0
  6978
    | 
patrick@0
  6979
      ## The "Enter" or "Return" key
patrick@0
  6980
      "enter"
patrick@0
  6981
    | 
patrick@0
  6982
      ## The "Escape" key
patrick@0
  6983
      "escape"
patrick@0
  6984
    | 
patrick@0
  6985
      ## The "Home" key
patrick@0
  6986
      "home"
patrick@0
  6987
    | 
patrick@0
  6988
      ## The "Insert" key
patrick@0
  6989
      "insert"
patrick@0
  6990
    | 
patrick@0
  6991
      ## The left arrow
patrick@0
  6992
      "left"
patrick@0
  6993
    | 
patrick@0
  6994
      ## The "Meta" key
patrick@0
  6995
      "meta"
patrick@0
  6996
    | 
patrick@0
  6997
      ## The "Option" key
patrick@0
  6998
      "option"
patrick@0
  6999
    | 
patrick@0
  7000
      ## The page down key
patrick@0
  7001
      "pagedown"
patrick@0
  7002
    | 
patrick@0
  7003
      ## The page up key
patrick@0
  7004
      "pageup"
patrick@0
  7005
    | 
patrick@0
  7006
      ## The right arrow
patrick@0
  7007
      "right"
patrick@0
  7008
    | 
patrick@0
  7009
      ## The "Shift" key
patrick@0
  7010
      "shift"
patrick@0
  7011
    | 
patrick@0
  7012
      ## The spacebar
patrick@0
  7013
      "space"
patrick@0
  7014
    | 
patrick@0
  7015
      ## The "Tab" key
patrick@0
  7016
      "tab"
patrick@0
  7017
    | 
patrick@0
  7018
      ## The up arrow
patrick@0
  7019
      "up"
patrick@0
  7020
  db.keycap.function-enum.attribute =
patrick@0
  7021
    
patrick@0
  7022
    ## Identifies the function key
patrick@0
  7023
    attribute function { db.keycap.function.enumeration }?
patrick@0
  7024
  db.keycap.function-other.attributes =
patrick@0
  7025
    
patrick@0
  7026
    ## Identifies the function key
patrick@0
  7027
    attribute function {
patrick@0
  7028
      
patrick@0
  7029
      ## Indicates a non-standard function key
patrick@0
  7030
      "other"
patrick@0
  7031
    }?,
patrick@0
  7032
    
patrick@0
  7033
    ## Specifies a keyword that identifies the non-standard key
patrick@0
  7034
    attribute otherfunction { text }
patrick@0
  7035
  db.keycap.function.attrib =
patrick@0
  7036
    db.keycap.function-enum.attribute
patrick@0
  7037
    | db.keycap.function-other.attributes
patrick@0
  7038
  db.keycap.role.attribute = attribute role { text }
patrick@0
  7039
  db.keycap.attlist =
patrick@0
  7040
    db.keycap.role.attribute?
patrick@0
  7041
    & db.common.attributes
patrick@0
  7042
    & db.common.linking.attributes
patrick@0
  7043
    & db.keycap.function.attrib
patrick@0
  7044
  db.keycap =
patrick@0
  7045
    
patrick@0
  7046
    ## The text printed on a key on a keyboard
patrick@0
  7047
    element keycap { db.keycap.attlist, db._text }
patrick@0
  7048
}
patrick@0
  7049
div {
patrick@0
  7050
  db.keycode.role.attribute = attribute role { text }
patrick@0
  7051
  db.keycode.attlist =
patrick@0
  7052
    db.keycode.role.attribute?
patrick@0
  7053
    & db.common.attributes
patrick@0
  7054
    & db.common.linking.attributes
patrick@0
  7055
  db.keycode =
patrick@0
  7056
    
patrick@0
  7057
    ## The internal, frequently numeric, identifier for a key on a keyboard
patrick@0
  7058
    element keycode { db.keycode.attlist, db._text }
patrick@0
  7059
}
patrick@0
  7060
db.keycombination.contentmodel =
patrick@0
  7061
  (db.keycap | db.keycombo | db.keysym) | db.mousebutton
patrick@0
  7062
div {
patrick@0
  7063
  db.keycombo.action.enumeration =
patrick@0
  7064
    
patrick@0
  7065
    ## A (single) mouse click.
patrick@0
  7066
    "click"
patrick@0
  7067
    | 
patrick@0
  7068
      ## A double mouse click.
patrick@0
  7069
      "double-click"
patrick@0
  7070
    | 
patrick@0
  7071
      ## A mouse or key press.
patrick@0
  7072
      "press"
patrick@0
  7073
    | 
patrick@0
  7074
      ## Sequential clicks or presses.
patrick@0
  7075
      "seq"
patrick@0
  7076
    | 
patrick@0
  7077
      ## Simultaneous clicks or presses.
patrick@0
  7078
      "simul"
patrick@0
  7079
  db.keycombo.action-enum.attribute =
patrick@0
  7080
    
patrick@0
  7081
    ## Identifies the nature of the action taken. If keycombo
patrick@0
  7082
    ##  contains more than one element, simul
patrick@0
  7083
    ##  is the default, otherwise there is no default.
patrick@0
  7084
    attribute action { db.keycombo.action.enumeration }?
patrick@0
  7085
  db.keycombo.action-other.attributes =
patrick@0
  7086
    
patrick@0
  7087
    ## Identifies the nature of the action taken
patrick@0
  7088
    attribute action {
patrick@0
  7089
      
patrick@0
  7090
      ## Indicates a non-standard action
patrick@0
  7091
      "other"
patrick@0
  7092
    }?,
patrick@0
  7093
    
patrick@0
  7094
    ## Identifies the non-standard action in some unspecified way.
patrick@0
  7095
    attribute otheraction { text }
patrick@0
  7096
  db.keycombo.action.attrib =
patrick@0
  7097
    db.keycombo.action-enum.attribute
patrick@0
  7098
    | db.keycombo.action-other.attributes
patrick@0
  7099
  db.keycombo.role.attribute = attribute role { text }
patrick@0
  7100
  db.keycombo.attlist =
patrick@0
  7101
    db.keycombo.role.attribute?
patrick@0
  7102
    & db.common.attributes
patrick@0
  7103
    & db.common.linking.attributes
patrick@0
  7104
    & db.keycombo.action.attrib
patrick@0
  7105
  db.keycombo =
patrick@0
  7106
    
patrick@0
  7107
    ## A combination of input actions
patrick@0
  7108
    element keycombo {
patrick@0
  7109
      db.keycombo.attlist, db.keycombination.contentmodel+
patrick@0
  7110
    }
patrick@0
  7111
}
patrick@0
  7112
div {
patrick@0
  7113
  db.keysym.role.attribute = attribute role { text }
patrick@0
  7114
  db.keysym.attlist =
patrick@0
  7115
    db.keysym.role.attribute?
patrick@0
  7116
    & db.common.attributes
patrick@0
  7117
    & db.common.linking.attributes
patrick@0
  7118
  db.keysym =
patrick@0
  7119
    
patrick@0
  7120
    ## The symbolic name of a key on a keyboard
patrick@0
  7121
    element keysym { db.keysym.attlist, db._text }
patrick@0
  7122
}
patrick@0
  7123
div {
patrick@0
  7124
  db.accel.role.attribute = attribute role { text }
patrick@0
  7125
  db.accel.attlist =
patrick@0
  7126
    db.accel.role.attribute?
patrick@0
  7127
    & db.common.attributes
patrick@0
  7128
    & db.common.linking.attributes
patrick@0
  7129
  db.accel =
patrick@0
  7130
    
patrick@0
  7131
    ## A graphical user interface (GUI) keyboard shortcut
patrick@0
  7132
    element accel { db.accel.attlist, db._text }
patrick@0
  7133
}
patrick@0
  7134
div {
patrick@0
  7135
  db.shortcut.action.attrib = db.keycombo.action.attrib
patrick@0
  7136
  db.shortcut.role.attribute = attribute role { text }
patrick@0
  7137
  db.shortcut.attlist =
patrick@0
  7138
    db.shortcut.role.attribute?
patrick@0
  7139
    & db.common.attributes
patrick@0
  7140
    & db.common.linking.attributes
patrick@0
  7141
    & db.shortcut.action.attrib
patrick@0
  7142
  db.shortcut =
patrick@0
  7143
    
patrick@0
  7144
    ## A key combination for an action that is also accessible through a menu
patrick@0
  7145
    element shortcut {
patrick@0
  7146
      db.shortcut.attlist, db.keycombination.contentmodel+
patrick@0
  7147
    }
patrick@0
  7148
}
patrick@0
  7149
db.os.inlines =
patrick@0
  7150
  db.prompt
patrick@0
  7151
  | db.envar
patrick@0
  7152
  | db.filename
patrick@0
  7153
  | db.command
patrick@0
  7154
  | db.computeroutput
patrick@0
  7155
  | db.userinput
patrick@0
  7156
db.computeroutput.inlines =
patrick@0
  7157
  (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines)
patrick@0
  7158
  | db.co
patrick@0
  7159
  | db.markup.inlines
patrick@0
  7160
db.userinput.inlines =
patrick@0
  7161
  (text | db.ubiq.inlines | db.os.inlines | db.technical.inlines)
patrick@0
  7162
  | db.co
patrick@0
  7163
  | db.markup.inlines
patrick@0
  7164
  | db.gui.inlines
patrick@0
  7165
  | db.keyboard.inlines
patrick@0
  7166
db.prompt.inlines = db._text | db.co
patrick@0
  7167
div {
patrick@0
  7168
  db.prompt.role.attribute = attribute role { text }
patrick@0
  7169
  db.prompt.attlist =
patrick@0
  7170
    db.prompt.role.attribute?
patrick@0
  7171
    & db.common.attributes
patrick@0
  7172
    & db.common.linking.attributes
patrick@0
  7173
  db.prompt =
patrick@0
  7174
    
patrick@0
  7175
    ## A character or string indicating the start of an input field in a  computer display
patrick@0
  7176
    element prompt { db.prompt.attlist, db.prompt.inlines* }
patrick@0
  7177
}
patrick@0
  7178
div {
patrick@0
  7179
  db.envar.role.attribute = attribute role { text }
patrick@0
  7180
  db.envar.attlist =
patrick@0
  7181
    db.envar.role.attribute?
patrick@0
  7182
    & db.common.attributes
patrick@0
  7183
    & db.common.linking.attributes
patrick@0
  7184
  db.envar =
patrick@0
  7185
    
patrick@0
  7186
    ## A software environment variable
patrick@0
  7187
    element envar { db.envar.attlist, db._text }
patrick@0
  7188
}
patrick@0
  7189
div {
patrick@0
  7190
  db.filename.class.enumeration =
patrick@0
  7191
    
patrick@0
  7192
    ## A device
patrick@0
  7193
    "devicefile"
patrick@0
  7194
    | 
patrick@0
  7195
      ## A directory
patrick@0
  7196
      "directory"
patrick@0
  7197
    | 
patrick@0
  7198
      ## A filename extension
patrick@0
  7199
      "extension"
patrick@0
  7200
    | 
patrick@0
  7201
      ## A header file (as for a programming language)
patrick@0
  7202
      "headerfile"
patrick@0
  7203
    | 
patrick@0
  7204
      ## A library file
patrick@0
  7205
      "libraryfile"
patrick@0
  7206
    | 
patrick@0
  7207
      ## A partition (as of a hard disk)
patrick@0
  7208
      "partition"
patrick@0
  7209
    | 
patrick@0
  7210
      ## A symbolic link
patrick@0
  7211
      "symlink"
patrick@0
  7212
  db.filename.class.attribute =
patrick@0
  7213
    
patrick@0
  7214
    ## Identifies the class of filename
patrick@0
  7215
    attribute class { db.filename.class.enumeration }
patrick@0
  7216
  db.filename.path.attribute =
patrick@0
  7217
    
patrick@0
  7218
    ## Specifies the path of the filename
patrick@0
  7219
    attribute path { text }
patrick@0
  7220
  db.filename.role.attribute = attribute role { text }
patrick@0
  7221
  db.filename.attlist =
patrick@0
  7222
    db.filename.role.attribute?
patrick@0
  7223
    & db.common.attributes
patrick@0
  7224
    & db.common.linking.attributes
patrick@0
  7225
    & db.filename.path.attribute?
patrick@0
  7226
    & db.filename.class.attribute?
patrick@0
  7227
  db.filename =
patrick@0
  7228
    
patrick@0
  7229
    ## The name of a file
patrick@0
  7230
    element filename { db.filename.attlist, db._text }
patrick@0
  7231
}
patrick@0
  7232
div {
patrick@0
  7233
  db.command.role.attribute = attribute role { text }
patrick@0
  7234
  db.command.attlist =
patrick@0
  7235
    db.command.role.attribute?
patrick@0
  7236
    & db.common.attributes
patrick@0
  7237
    & db.common.linking.attributes
patrick@0
  7238
  db.command =
patrick@0
  7239
    
patrick@0
  7240
    ## The name of an executable program or other software command
patrick@0
  7241
    element command { db.command.attlist, db._text }
patrick@0
  7242
}
patrick@0
  7243
div {
patrick@0
  7244
  db.computeroutput.role.attribute = attribute role { text }
patrick@0
  7245
  db.computeroutput.attlist =
patrick@0
  7246
    db.computeroutput.role.attribute?
patrick@0
  7247
    & db.common.attributes
patrick@0
  7248
    & db.common.linking.attributes
patrick@0
  7249
  db.computeroutput =
patrick@0
  7250
    
patrick@0
  7251
    ## Data, generally text, displayed or presented by a computer
patrick@0
  7252
    element computeroutput {
patrick@0
  7253
      db.computeroutput.attlist, db.computeroutput.inlines*
patrick@0
  7254
    }
patrick@0
  7255
}
patrick@0
  7256
div {
patrick@0
  7257
  db.userinput.role.attribute = attribute role { text }
patrick@0
  7258
  db.userinput.attlist =
patrick@0
  7259
    db.userinput.role.attribute?
patrick@0
  7260
    & db.common.attributes
patrick@0
  7261
    & db.common.linking.attributes
patrick@0
  7262
  db.userinput =
patrick@0
  7263
    
patrick@0
  7264
    ## Data entered by the user
patrick@0
  7265
    element userinput { db.userinput.attlist, db.userinput.inlines* }
patrick@0
  7266
}
patrick@0
  7267
div {
patrick@0
  7268
  db.cmdsynopsis.role.attribute = attribute role { text }
patrick@0
  7269
  db.cmdsynopsis.sepchar.attribute =
patrick@0
  7270
    
patrick@0
  7271
    ## Specifies the character that should separate the command and its top-level arguments
patrick@0
  7272
    attribute sepchar { text }
patrick@0
  7273
  db.cmdsynopsis.cmdlength.attribute =
patrick@0
  7274
    
patrick@0
  7275
    ## Indicates the displayed length of the command; this information may be used to intelligently indent command synopses which extend beyond one line
patrick@0
  7276
    attribute cmdlength { text }
patrick@0
  7277
  db.cmdsynopsis.label.attribute = db.label.attribute
patrick@0
  7278
  db.cmdsynopsis.attlist =
patrick@0
  7279
    db.cmdsynopsis.role.attribute?
patrick@0
  7280
    & db.common.attributes
patrick@0
  7281
    & db.common.linking.attributes
patrick@0
  7282
    & db.cmdsynopsis.sepchar.attribute?
patrick@0
  7283
    & db.cmdsynopsis.cmdlength.attribute?
patrick@0
  7284
    & db.cmdsynopsis.label.attribute?
patrick@0
  7285
  db.cmdsynopsis.info = db._info.title.forbidden
patrick@0
  7286
  db.cmdsynopsis =
patrick@0
  7287
    
patrick@0
  7288
    ## A syntax summary for a software command
patrick@0
  7289
    element cmdsynopsis {
patrick@0
  7290
      db.cmdsynopsis.attlist,
patrick@0
  7291
      db.cmdsynopsis.info,
patrick@0
  7292
      (db.command | db.arg | db.group | db.sbr)+,
patrick@0
  7293
      db.synopfragment*
patrick@0
  7294
    }
patrick@0
  7295
}
patrick@0
  7296
db.rep.enumeration =
patrick@0
  7297
  
patrick@0
  7298
  ## Can not be repeated.
patrick@0
  7299
  "norepeat"
patrick@0
  7300
  | 
patrick@0
  7301
    ## Can be repeated.
patrick@0
  7302
    "repeat"
patrick@0
  7303
db.rep.attribute =
patrick@0
  7304
  
patrick@0
  7305
  ## Indicates whether or not repetition is possible.
patrick@0
  7306
  [ a:defaultValue = "norepeat" ] attribute rep { db.rep.enumeration }
patrick@0
  7307
db.choice.enumeration =
patrick@0
  7308
  
patrick@0
  7309
  ## Formatted to indicate that it is optional.
patrick@0
  7310
  "opt"
patrick@0
  7311
  | 
patrick@0
  7312
    ## Formatted without indication.
patrick@0
  7313
    "plain"
patrick@0
  7314
  | 
patrick@0
  7315
    ## Formatted to indicate that it is required.
patrick@0
  7316
    "req"
patrick@0
  7317
db.choice.opt.attribute =
patrick@0
  7318
  
patrick@0
  7319
  ## Indicates optionality.
patrick@0
  7320
  [ a:defaultValue = "opt" ] attribute choice { db.choice.enumeration }
patrick@0
  7321
db.choice.req.attribute =
patrick@0
  7322
  
patrick@0
  7323
  ## Indicates optionality.
patrick@0
  7324
  [ a:defaultValue = "req" ] attribute choice { db.choice.enumeration }
patrick@0
  7325
div {
patrick@0
  7326
  db.arg.role.attribute = attribute role { text }
patrick@0
  7327
  db.arg.rep.attribute = db.rep.attribute
patrick@0
  7328
  db.arg.choice.attribute = db.choice.opt.attribute
patrick@0
  7329
  db.arg.attlist =
patrick@0
  7330
    db.arg.role.attribute?
patrick@0
  7331
    & db.common.attributes
patrick@0
  7332
    & db.common.linking.attributes
patrick@0
  7333
    & db.arg.rep.attribute?
patrick@0
  7334
    & db.arg.choice.attribute?
patrick@0
  7335
  db.arg =
patrick@0
  7336
    
patrick@0
  7337
    ## An argument in a cmdsynopsis
patrick@0
  7338
    element arg {
patrick@0
  7339
      db.arg.attlist,
patrick@0
  7340
      (db._text
patrick@0
  7341
       | db.arg
patrick@0
  7342
       | db.group
patrick@0
  7343
       | db.option
patrick@0
  7344
       | db.synopfragmentref
patrick@0
  7345
       | db.sbr)*
patrick@0
  7346
    }
patrick@0
  7347
}
patrick@0
  7348
div {
patrick@0
  7349
  db.group.role.attribute = attribute role { text }
patrick@0
  7350
  db.group.rep.attribute = db.rep.attribute
patrick@0
  7351
  db.group.choice.attribute = db.choice.opt.attribute
patrick@0
  7352
  db.group.attlist =
patrick@0
  7353
    db.group.role.attribute?
patrick@0
  7354
    & db.common.attributes
patrick@0
  7355
    & db.common.linking.attributes
patrick@0
  7356
    & db.group.rep.attribute?
patrick@0
  7357
    & db.group.choice.attribute?
patrick@0
  7358
  db.group =
patrick@0
  7359
    
patrick@0
  7360
    ## A group of elements in a cmdsynopsis
patrick@0
  7361
    element group {
patrick@0
  7362
      db.group.attlist,
patrick@0
  7363
      (db.arg
patrick@0
  7364
       | db.group
patrick@0
  7365
       | db.option
patrick@0
  7366
       | db.synopfragmentref
patrick@0
  7367
       | db.replaceable
patrick@0
  7368
       | db.sbr)+
patrick@0
  7369
    }
patrick@0
  7370
}
patrick@0
  7371
div {
patrick@0
  7372
  db.sbr.role.attribute = attribute role { text }
patrick@0
  7373
  db.sbr.attlist = db.sbr.role.attribute? & db.common.attributes
patrick@0
  7374
  db.sbr =
patrick@0
  7375
    
patrick@0
  7376
    ## An explicit line break in a command synopsis
patrick@0
  7377
    element sbr { db.sbr.attlist, empty }
patrick@0
  7378
}
patrick@0
  7379
div {
patrick@0
  7380
  db.synopfragment.role.attribute = attribute role { text }
patrick@0
  7381
  db.synopfragment.attlist =
patrick@0
  7382
    db.synopfragment.role.attribute?
patrick@0
  7383
    & db.common.attributes
patrick@0
  7384
    & db.common.linking.attributes
patrick@0
  7385
  db.synopfragment =
patrick@0
  7386
    
patrick@0
  7387
    ## A portion of a cmdsynopsis broken out from the main body of the synopsis
patrick@0
  7388
    element synopfragment {
patrick@0
  7389
      db.synopfragment.attlist, (db.arg | db.group)+
patrick@0
  7390
    }
patrick@0
  7391
}
patrick@0
  7392
div {
patrick@0
  7393
  db.synopfragmentref.role.attribute = attribute role { text }
patrick@0
  7394
  db.synopfragmentref.attlist =
patrick@0
  7395
    db.synopfragmentref.role.attribute?
patrick@0
  7396
    & db.common.attributes
patrick@0
  7397
    & db.linkend.attribute
patrick@0
  7398
  db.synopfragmentref =
patrick@0
  7399
    
patrick@0
  7400
    ## A reference to a fragment of a command synopsis
patrick@0
  7401
    element synopfragmentref { db.synopfragmentref.attlist, text }
patrick@0
  7402
}
patrick@0
  7403
db.programming.inlines =
patrick@0
  7404
  db.function
patrick@0
  7405
  | db.parameter
patrick@0
  7406
  | db.varname
patrick@0
  7407
  | db.returnvalue
patrick@0
  7408
  | db.type
patrick@0
  7409
  | db.classname
patrick@0
  7410
  | db.exceptionname
patrick@0
  7411
  | db.interfacename
patrick@0
  7412
  | db.methodname
patrick@0
  7413
  | db.modifier
patrick@0
  7414
  | db.initializer
patrick@0
  7415
  | db.oo.inlines
patrick@0
  7416
db.oo.inlines = db.ooclass | db.ooexception | db.oointerface
patrick@0
  7417
db.synopsis.blocks =
patrick@0
  7418
  (db.funcsynopsis
patrick@0
  7419
   | db.classsynopsis
patrick@0
  7420
   | db.methodsynopsis
patrick@0
  7421
   | db.constructorsynopsis
patrick@0
  7422
   | db.destructorsynopsis
patrick@0
  7423
   | db.fieldsynopsis)
patrick@0
  7424
  | db.cmdsynopsis
patrick@0
  7425
div {
patrick@0
  7426
  db.synopsis.role.attribute = attribute role { text }
patrick@0
  7427
  db.synopsis.label.attribute = db.label.attribute
patrick@0
  7428
  db.synopsis.attlist =
patrick@0
  7429
    db.synopsis.role.attribute?
patrick@0
  7430
    & db.common.attributes
patrick@0
  7431
    & db.common.linking.attributes
patrick@0
  7432
    & db.verbatim.attributes
patrick@0
  7433
    & db.synopsis.label.attribute?
patrick@0
  7434
  db.synopsis =
patrick@0
  7435
    
patrick@0
  7436
    ## A general-purpose element for representing the syntax of commands or functions
patrick@0
  7437
    element synopsis { db.synopsis.attlist, db.verbatim.contentmodel }
patrick@0
  7438
}
patrick@0
  7439
div {
patrick@0
  7440
  db.funcsynopsis.role.attribute = attribute role { text }
patrick@0
  7441
  db.funcsynopsis.attlist =
patrick@0
  7442
    db.funcsynopsis.role.attribute?
patrick@0
  7443
    & db.common.attributes
patrick@0
  7444
    & db.common.linking.attributes
patrick@0
  7445
    & db.language.attribute?
patrick@0
  7446
  db.funcsynopsis.info = db._info.title.forbidden
patrick@0
  7447
  db.funcsynopsis =
patrick@0
  7448
    
patrick@0
  7449
    ## The syntax summary for a function definition
patrick@0
  7450
    element funcsynopsis {
patrick@0
  7451
      db.funcsynopsis.attlist,
patrick@0
  7452
      db.funcsynopsis.info,
patrick@0
  7453
      (db.funcsynopsisinfo | db.funcprototype)+
patrick@0
  7454
    }
patrick@0
  7455
}
patrick@0
  7456
div {
patrick@0
  7457
  db.funcsynopsisinfo.role.attribute = attribute role { text }
patrick@0
  7458
  db.funcsynopsisinfo.attlist =
patrick@0
  7459
    db.funcsynopsisinfo.role.attribute?
patrick@0
  7460
    & db.common.attributes
patrick@0
  7461
    & db.common.linking.attributes
patrick@0
  7462
    & db.verbatim.attributes
patrick@0
  7463
  db.funcsynopsisinfo =
patrick@0
  7464
    
patrick@0
  7465
    ## Information supplementing the funcdefs of a funcsynopsis
patrick@0
  7466
    element funcsynopsisinfo {
patrick@0
  7467
      db.funcsynopsisinfo.attlist, db.verbatim.contentmodel
patrick@0
  7468
    }
patrick@0
  7469
}
patrick@0
  7470
div {
patrick@0
  7471
  db.funcprototype.role.attribute = attribute role { text }
patrick@0
  7472
  db.funcprototype.attlist =
patrick@0
  7473
    db.funcprototype.role.attribute?
patrick@0
  7474
    & db.common.attributes
patrick@0
  7475
    & db.common.linking.attributes
patrick@0
  7476
  db.funcprototype =
patrick@0
  7477
    
patrick@0
  7478
    ## The prototype of a function
patrick@0
  7479
    element funcprototype {
patrick@0
  7480
      db.funcprototype.attlist,
patrick@0
  7481
      db.modifier*,
patrick@0
  7482
      db.funcdef,
patrick@0
  7483
      (db.void
patrick@0
  7484
       | db.varargs
patrick@0
  7485
       | ((db.paramdef | db.group.paramdef)+, db.varargs?)),
patrick@0
  7486
      db.modifier*
patrick@0
  7487
    }
patrick@0
  7488
}
patrick@0
  7489
div {
patrick@0
  7490
  db.funcdef.role.attribute = attribute role { text }
patrick@0
  7491
  db.funcdef.attlist =
patrick@0
  7492
    db.funcdef.role.attribute?
patrick@0
  7493
    & db.common.attributes
patrick@0
  7494
    & db.common.linking.attributes
patrick@0
  7495
  db.funcdef =
patrick@0
  7496
    
patrick@0
  7497
    ## A function (subroutine) name and its return type
patrick@0
  7498
    element funcdef {
patrick@0
  7499
      db.funcdef.attlist, (db._text | db.type | db.function)*
patrick@0
  7500
    }
patrick@0
  7501
}
patrick@0
  7502
div {
patrick@0
  7503
  db.function.role.attribute = attribute role { text }
patrick@0
  7504
  db.function.attlist =
patrick@0
  7505
    db.function.role.attribute?
patrick@0
  7506
    & db.common.attributes
patrick@0
  7507
    & db.common.linking.attributes
patrick@0
  7508
  db.function =
patrick@0
  7509
    
patrick@0
  7510
    ## The name of a function or subroutine, as in a programming language
patrick@0
  7511
    element function { db.function.attlist, db._text }
patrick@0
  7512
}
patrick@0
  7513
div {
patrick@0
  7514
  db.void.role.attribute = attribute role { text }
patrick@0
  7515
  db.void.attlist =
patrick@0
  7516
    db.void.role.attribute?
patrick@0
  7517
    & db.common.attributes
patrick@0
  7518
    & db.common.linking.attributes
patrick@0
  7519
  db.void =
patrick@0
  7520
    
patrick@0
  7521
    ## An empty element in a function synopsis indicating that the function in question takes no arguments
patrick@0
  7522
    element void { db.void.attlist, empty }
patrick@0
  7523
}
patrick@0
  7524
div {
patrick@0
  7525
  db.varargs.role.attribute = attribute role { text }
patrick@0
  7526
  db.varargs.attlist =
patrick@0
  7527
    db.varargs.role.attribute?
patrick@0
  7528
    & db.common.attributes
patrick@0
  7529
    & db.common.linking.attributes
patrick@0
  7530
  db.varargs =
patrick@0
  7531
    
patrick@0
  7532
    ## An empty element in a function synopsis indicating a variable number of arguments
patrick@0
  7533
    element varargs { db.varargs.attlist, empty }
patrick@0
  7534
}
patrick@0
  7535
div {
patrick@0
  7536
  db.group.paramdef.role.attribute = attribute role { text }
patrick@0
  7537
  db.group.paramdef.choice.attribute = db.choice.opt.attribute
patrick@0
  7538
  db.group.paramdef.attlist =
patrick@0
  7539
    db.group.paramdef.role.attribute?
patrick@0
  7540
    & db.common.attributes
patrick@0
  7541
    & db.common.linking.attributes
patrick@0
  7542
    & db.group.paramdef.choice.attribute?
patrick@0
  7543
  db.group.paramdef =
patrick@0
  7544
    
patrick@0
  7545
    ## A group of parameters
patrick@0
  7546
    element group {
patrick@0
  7547
      db.group.paramdef.attlist, (db.paramdef | db.group.paramdef)+
patrick@0
  7548
    }
patrick@0
  7549
}
patrick@0
  7550
div {
patrick@0
  7551
  db.paramdef.role.attribute = attribute role { text }
patrick@0
  7552
  db.paramdef.choice.enumeration =
patrick@0
  7553
    
patrick@0
  7554
    ## Formatted to indicate that it is optional.
patrick@0
  7555
    "opt"
patrick@0
  7556
    | 
patrick@0
  7557
      ## Formatted to indicate that it is required.
patrick@0
  7558
      "req"
patrick@0
  7559
  db.paramdef.choice.attribute =
patrick@0
  7560
    
patrick@0
  7561
    ## Indicates optionality.
patrick@0
  7562
    [ a:defaultValue = "opt" ]
patrick@0
  7563
    attribute choice { db.paramdef.choice.enumeration }
patrick@0
  7564
  db.paramdef.attlist =
patrick@0
  7565
    db.paramdef.role.attribute?
patrick@0
  7566
    & db.common.attributes
patrick@0
  7567
    & db.common.linking.attributes
patrick@0
  7568
    & db.paramdef.choice.attribute?
patrick@0
  7569
  db.paramdef =
patrick@0
  7570
    
patrick@0
  7571
    ## Information about a function parameter in a programming language
patrick@0
  7572
    element paramdef {
patrick@0
  7573
      db.paramdef.attlist,
patrick@0
  7574
      (db._text
patrick@0
  7575
       | db.initializer
patrick@0
  7576
       | db.type
patrick@0
  7577
       | db.parameter
patrick@0
  7578
       | db.funcparams)*
patrick@0
  7579
    }
patrick@0
  7580
}
patrick@0
  7581
div {
patrick@0
  7582
  db.funcparams.role.attribute = attribute role { text }
patrick@0
  7583
  db.funcparams.attlist =
patrick@0
  7584
    db.funcparams.role.attribute?
patrick@0
  7585
    & db.common.attributes
patrick@0
  7586
    & db.common.linking.attributes
patrick@0
  7587
  db.funcparams =
patrick@0
  7588
    
patrick@0
  7589
    ## Parameters for a function referenced through a function pointer in a synopsis
patrick@0
  7590
    element funcparams { db.funcparams.attlist, db._text }
patrick@0
  7591
}
patrick@0
  7592
div {
patrick@0
  7593
  db.classsynopsis.role.attribute = attribute role { text }
patrick@0
  7594
  db.classsynopsis.class.enumeration =
patrick@0
  7595
    
patrick@0
  7596
    ## This is the synopsis of a class
patrick@0
  7597
    "class"
patrick@0
  7598
    | 
patrick@0
  7599
      ## This is the synopsis of an interface
patrick@0
  7600
      "interface"
patrick@0
  7601
  db.classsynopsis.class.attribute =
patrick@0
  7602
    
patrick@0
  7603
    ## Specifies the nature of the synopsis
patrick@0
  7604
    attribute class { db.classsynopsis.class.enumeration }
patrick@0
  7605
  db.classsynopsis.attlist =
patrick@0
  7606
    db.classsynopsis.role.attribute?
patrick@0
  7607
    & db.common.attributes
patrick@0
  7608
    & db.common.linking.attributes
patrick@0
  7609
    & db.language.attribute?
patrick@0
  7610
    & db.classsynopsis.class.attribute?
patrick@0
  7611
  db.classsynopsis =
patrick@0
  7612
    
patrick@0
  7613
    ## The syntax summary for a class definition
patrick@0
  7614
    element classsynopsis {
patrick@0
  7615
      db.classsynopsis.attlist,
patrick@0
  7616
      db.oo.inlines+,
patrick@0
  7617
      (db.classsynopsisinfo
patrick@0
  7618
       | db.methodsynopsis
patrick@0
  7619
       | db.constructorsynopsis
patrick@0
  7620
       | db.destructorsynopsis
patrick@0
  7621
       | db.fieldsynopsis)*
patrick@0
  7622
    }
patrick@0
  7623
}
patrick@0
  7624
div {
patrick@0
  7625
  db.classsynopsisinfo.role.attribute = attribute role { text }
patrick@0
  7626
  db.classsynopsisinfo.attlist =
patrick@0
  7627
    db.classsynopsisinfo.role.attribute?
patrick@0
  7628
    & db.common.attributes
patrick@0
  7629
    & db.common.linking.attributes
patrick@0
  7630
    & db.verbatim.attributes
patrick@0
  7631
  db.classsynopsisinfo =
patrick@0
  7632
    
patrick@0
  7633
    ## Information supplementing the contents of a classsynopsis
patrick@0
  7634
    element classsynopsisinfo {
patrick@0
  7635
      db.classsynopsisinfo.attlist, db.verbatim.contentmodel
patrick@0
  7636
    }
patrick@0
  7637
}
patrick@0
  7638
div {
patrick@0
  7639
  db.ooclass.role.attribute = attribute role { text }
patrick@0
  7640
  db.ooclass.attlist =
patrick@0
  7641
    db.ooclass.role.attribute?
patrick@0
  7642
    & db.common.attributes
patrick@0
  7643
    & db.common.linking.attributes
patrick@0
  7644
  db.ooclass =
patrick@0
  7645
    
patrick@0
  7646
    ## A class in an object-oriented programming language
patrick@0
  7647
    element ooclass {
patrick@0
  7648
      db.ooclass.attlist, (db.package | db.modifier)*, db.classname
patrick@0
  7649
    }
patrick@0
  7650
}
patrick@0
  7651
div {
patrick@0
  7652
  db.oointerface.role.attribute = attribute role { text }
patrick@0
  7653
  db.oointerface.attlist =
patrick@0
  7654
    db.oointerface.role.attribute?
patrick@0
  7655
    & db.common.attributes
patrick@0
  7656
    & db.common.linking.attributes
patrick@0
  7657
  db.oointerface =
patrick@0
  7658
    
patrick@0
  7659
    ## An interface in an object-oriented programming language
patrick@0
  7660
    element oointerface {
patrick@0
  7661
      db.oointerface.attlist,
patrick@0
  7662
      (db.package | db.modifier)*,
patrick@0
  7663
      db.interfacename
patrick@0
  7664
    }
patrick@0
  7665
}
patrick@0
  7666
div {
patrick@0
  7667
  db.ooexception.role.attribute = attribute role { text }
patrick@0
  7668
  db.ooexception.attlist =
patrick@0
  7669
    db.ooexception.role.attribute?
patrick@0
  7670
    & db.common.attributes
patrick@0
  7671
    & db.common.linking.attributes
patrick@0
  7672
  db.ooexception =
patrick@0
  7673
    
patrick@0
  7674
    ## An exception in an object-oriented programming language
patrick@0
  7675
    element ooexception {
patrick@0
  7676
      db.ooexception.attlist,
patrick@0
  7677
      (db.package | db.modifier)*,
patrick@0
  7678
      db.exceptionname
patrick@0
  7679
    }
patrick@0
  7680
}
patrick@0
  7681
db.modifier.xml.space.attribute =
patrick@0
  7682
  
patrick@0
  7683
  ## Can be used to indicate that whitespace in the modifier should be preserved (for multi-line annotations, for example).
patrick@0
  7684
  attribute xml:space {
patrick@0
  7685
    
patrick@0
  7686
    ## Extra whitespace and line breaks must be preserved.
patrick@0
  7687
    [
patrick@0
  7688
      # Ideally the definition of xml:space used on modifier would be
patrick@0
  7689
      # different from the definition used on the verbatim elements. The
patrick@0
  7690
      # verbatim elements forbid the use of xml:space="default" which
patrick@0
  7691
      # wouldn't be a problem on modifier. But doing that causes the
patrick@0
  7692
      # generated XSD schemas to be broken so I'm just reusing the existing
patrick@0
  7693
      # definition for now. It won't be backwards incompatible to fix this
patrick@0
  7694
      # problem in the future.
patrick@0
  7695
      #    | ## Extra whitespace and line breaks are not preserved.
patrick@0
  7696
      #      "default"
patrick@0
  7697
      
patrick@0
  7698
    ]
patrick@0
  7699
    "preserve"
patrick@0
  7700
  }
patrick@0
  7701
div {
patrick@0
  7702
  db.modifier.role.attribute = attribute role { text }
patrick@0
  7703
  db.modifier.attlist =
patrick@0
  7704
    db.modifier.xml.space.attribute?
patrick@0
  7705
    & db.modifier.role.attribute?
patrick@0
  7706
    & db.common.attributes
patrick@0
  7707
    & db.common.linking.attributes
patrick@0
  7708
  db.modifier =
patrick@0
  7709
    
patrick@0
  7710
    ## Modifiers in a synopsis
patrick@0
  7711
    element modifier { db.modifier.attlist, db._text }
patrick@0
  7712
}
patrick@0
  7713
div {
patrick@0
  7714
  db.interfacename.role.attribute = attribute role { text }
patrick@0
  7715
  db.interfacename.attlist =
patrick@0
  7716
    db.interfacename.role.attribute?
patrick@0
  7717
    & db.common.attributes
patrick@0
  7718
    & db.common.linking.attributes
patrick@0
  7719
  db.interfacename =
patrick@0
  7720
    
patrick@0
  7721
    ## The name of an interface
patrick@0
  7722
    element interfacename { db.interfacename.attlist, db._text }
patrick@0
  7723
}
patrick@0
  7724
div {
patrick@0
  7725
  db.exceptionname.role.attribute = attribute role { text }
patrick@0
  7726
  db.exceptionname.attlist =
patrick@0
  7727
    db.exceptionname.role.attribute?
patrick@0
  7728
    & db.common.attributes
patrick@0
  7729
    & db.common.linking.attributes
patrick@0
  7730
  db.exceptionname =
patrick@0
  7731
    
patrick@0
  7732
    ## The name of an exception
patrick@0
  7733
    element exceptionname { db.exceptionname.attlist, db._text }
patrick@0
  7734
}
patrick@0
  7735
div {
patrick@0
  7736
  db.fieldsynopsis.role.attribute = attribute role { text }
patrick@0
  7737
  db.fieldsynopsis.attlist =
patrick@0
  7738
    db.fieldsynopsis.role.attribute?
patrick@0
  7739
    & db.common.attributes
patrick@0
  7740
    & db.common.linking.attributes
patrick@0
  7741
    & db.language.attribute?
patrick@0
  7742
  db.fieldsynopsis =
patrick@0
  7743
    
patrick@0
  7744
    ## The name of a field in a class definition
patrick@0
  7745
    element fieldsynopsis {
patrick@0
  7746
      db.fieldsynopsis.attlist,
patrick@0
  7747
      db.modifier*,
patrick@0
  7748
      db.type?,
patrick@0
  7749
      db.varname,
patrick@0
  7750
      db.initializer?
patrick@0
  7751
    }
patrick@0
  7752
}
patrick@0
  7753
div {
patrick@0
  7754
  db.initializer.role.attribute = attribute role { text }
patrick@0
  7755
  db.initializer.attlist =
patrick@0
  7756
    db.initializer.role.attribute?
patrick@0
  7757
    & db.common.attributes
patrick@0
  7758
    & db.common.linking.attributes
patrick@0
  7759
  db.initializer.inlines = db._text | db.mathphrase | db.markup.inlines
patrick@0
  7760
  db.initializer =
patrick@0
  7761
    
patrick@0
  7762
    ## The initializer for a fieldsynopsis
patrick@0
  7763
    element initializer {
patrick@0
  7764
      db.initializer.attlist, db.initializer.inlines*
patrick@0
  7765
    }
patrick@0
  7766
}
patrick@0
  7767
div {
patrick@0
  7768
  db.constructorsynopsis.role.attribute = attribute role { text }
patrick@0
  7769
  db.constructorsynopsis.attlist =
patrick@0
  7770
    db.constructorsynopsis.role.attribute?
patrick@0
  7771
    & db.common.attributes
patrick@0
  7772
    & db.common.linking.attributes
patrick@0
  7773
    & db.language.attribute?
patrick@0
  7774
  db.constructorsynopsis =
patrick@0
  7775
    
patrick@0
  7776
    ## A syntax summary for a constructor
patrick@0
  7777
    element constructorsynopsis {
patrick@0
  7778
      db.constructorsynopsis.attlist,
patrick@0
  7779
      db.modifier*,
patrick@0
  7780
      db.methodname?,
patrick@0
  7781
      ((db.methodparam | db.group.methodparam)+ | db.void?),
patrick@0
  7782
      db.exceptionname*
patrick@0
  7783
    }
patrick@0
  7784
}
patrick@0
  7785
div {
patrick@0
  7786
  db.destructorsynopsis.role.attribute = attribute role { text }
patrick@0
  7787
  db.destructorsynopsis.attlist =
patrick@0
  7788
    db.destructorsynopsis.role.attribute?
patrick@0
  7789
    & db.common.attributes
patrick@0
  7790
    & db.common.linking.attributes
patrick@0
  7791
    & db.language.attribute?
patrick@0
  7792
  db.destructorsynopsis =
patrick@0
  7793
    
patrick@0
  7794
    ## A syntax summary for a destructor
patrick@0
  7795
    element destructorsynopsis {
patrick@0
  7796
      db.destructorsynopsis.attlist,
patrick@0
  7797
      db.modifier*,
patrick@0
  7798
      db.methodname?,
patrick@0
  7799
      ((db.methodparam | db.group.methodparam)+ | db.void?),
patrick@0
  7800
      db.exceptionname*
patrick@0
  7801
    }
patrick@0
  7802
}
patrick@0
  7803
div {
patrick@0
  7804
  db.methodsynopsis.role.attribute = attribute role { text }
patrick@0
  7805
  db.methodsynopsis.attlist =
patrick@0
  7806
    db.methodsynopsis.role.attribute?
patrick@0
  7807
    & db.common.attributes
patrick@0
  7808
    & db.common.linking.attributes
patrick@0
  7809
    & db.language.attribute?
patrick@0
  7810
  db.methodsynopsis =
patrick@0
  7811
    
patrick@0
  7812
    ## A syntax summary for a method
patrick@0
  7813
    element methodsynopsis {
patrick@0
  7814
      db.methodsynopsis.attlist,
patrick@0
  7815
      db.modifier*,
patrick@0
  7816
      (db.type | db.void)?,
patrick@0
  7817
      db.methodname,
patrick@0
  7818
      ((db.methodparam | db.group.methodparam)+ | db.void),
patrick@0
  7819
      db.exceptionname*,
patrick@0
  7820
      db.modifier*
patrick@0
  7821
    }
patrick@0
  7822
}
patrick@0
  7823
div {
patrick@0
  7824
  db.methodname.role.attribute = attribute role { text }
patrick@0
  7825
  db.methodname.attlist =
patrick@0
  7826
    db.methodname.role.attribute?
patrick@0
  7827
    & db.common.attributes
patrick@0
  7828
    & db.common.linking.attributes
patrick@0
  7829
  db.methodname =
patrick@0
  7830
    
patrick@0
  7831
    ## The name of a method
patrick@0
  7832
    element methodname { db.methodname.attlist, db._text }
patrick@0
  7833
}
patrick@0
  7834
div {
patrick@0
  7835
  db.methodparam.role.attribute = attribute role { text }
patrick@0
  7836
  db.methodparam.rep.attribute = db.rep.attribute
patrick@0
  7837
  db.methodparam.choice.attribute = db.choice.req.attribute
patrick@0
  7838
  db.methodparam.attlist =
patrick@0
  7839
    db.methodparam.role.attribute?
patrick@0
  7840
    & db.common.attributes
patrick@0
  7841
    & db.common.linking.attributes
patrick@0
  7842
    & db.methodparam.rep.attribute?
patrick@0
  7843
    & db.methodparam.choice.attribute?
patrick@0
  7844
  db.methodparam =
patrick@0
  7845
    
patrick@0
  7846
    ## Parameters to a method
patrick@0
  7847
    element methodparam {
patrick@0
  7848
      db.methodparam.attlist,
patrick@0
  7849
      db.modifier*,
patrick@0
  7850
      db.type?,
patrick@0
  7851
      ((db.modifier*, db.parameter, db.initializer?) | db.funcparams),
patrick@0
  7852
      db.modifier*
patrick@0
  7853
    }
patrick@0
  7854
}
patrick@0
  7855
div {
patrick@0
  7856
  db.group.methodparam.role.attribute = attribute role { text }
patrick@0
  7857
  db.group.methodparam.choice.attribute = db.choice.opt.attribute
patrick@0
  7858
  db.group.methodparam.attlist =
patrick@0
  7859
    db.group.methodparam.role.attribute?
patrick@0
  7860
    & db.common.attributes
patrick@0
  7861
    & db.common.linking.attributes
patrick@0
  7862
    & db.group.methodparam.choice.attribute?
patrick@0
  7863
  db.group.methodparam =
patrick@0
  7864
    
patrick@0
  7865
    ## A group of method parameters
patrick@0
  7866
    element group {
patrick@0
  7867
      db.group.methodparam.attlist,
patrick@0
  7868
      (db.methodparam | db.group.methodparam)+
patrick@0
  7869
    }
patrick@0
  7870
}
patrick@0
  7871
div {
patrick@0
  7872
  db.varname.role.attribute = attribute role { text }
patrick@0
  7873
  db.varname.attlist =
patrick@0
  7874
    db.varname.role.attribute?
patrick@0
  7875
    & db.common.attributes
patrick@0
  7876
    & db.common.linking.attributes
patrick@0
  7877
  db.varname =
patrick@0
  7878
    
patrick@0
  7879
    ## The name of a variable
patrick@0
  7880
    element varname { db.varname.attlist, db._text }
patrick@0
  7881
}
patrick@0
  7882
div {
patrick@0
  7883
  db.returnvalue.role.attribute = attribute role { text }
patrick@0
  7884
  db.returnvalue.attlist =
patrick@0
  7885
    db.returnvalue.role.attribute?
patrick@0
  7886
    & db.common.attributes
patrick@0
  7887
    & db.common.linking.attributes
patrick@0
  7888
  db.returnvalue =
patrick@0
  7889
    
patrick@0
  7890
    ## The value returned by a function
patrick@0
  7891
    element returnvalue { db.returnvalue.attlist, db._text }
patrick@0
  7892
}
patrick@0
  7893
div {
patrick@0
  7894
  db.type.role.attribute = attribute role { text }
patrick@0
  7895
  db.type.attlist =
patrick@0
  7896
    db.type.role.attribute?
patrick@0
  7897
    & db.common.attributes
patrick@0
  7898
    & db.common.linking.attributes
patrick@0
  7899
  db.type =
patrick@0
  7900
    
patrick@0
  7901
    ## The classification of a value
patrick@0
  7902
    element type { db.type.attlist, db._text }
patrick@0
  7903
}
patrick@0
  7904
div {
patrick@0
  7905
  db.classname.role.attribute = attribute role { text }
patrick@0
  7906
  db.classname.attlist =
patrick@0
  7907
    db.classname.role.attribute?
patrick@0
  7908
    & db.common.attributes
patrick@0
  7909
    & db.common.linking.attributes
patrick@0
  7910
  db.classname =
patrick@0
  7911
    
patrick@0
  7912
    ## The name of a class, in the object-oriented programming sense
patrick@0
  7913
    element classname { db.classname.attlist, db._text }
patrick@0
  7914
}
patrick@0
  7915
div {
patrick@0
  7916
  db.programlisting.role.attribute = attribute role { text }
patrick@0
  7917
  db.programlisting.width.attribute = db.width.characters.attribute
patrick@0
  7918
  db.programlisting.attlist =
patrick@0
  7919
    db.programlisting.role.attribute?
patrick@0
  7920
    & db.common.attributes
patrick@0
  7921
    & db.common.linking.attributes
patrick@0
  7922
    & db.verbatim.attributes
patrick@0
  7923
    & db.programlisting.width.attribute?
patrick@0
  7924
  db.programlisting =
patrick@0
  7925
    
patrick@0
  7926
    ## A literal listing of all or part of a program
patrick@0
  7927
    element programlisting {
patrick@0
  7928
      db.programlisting.attlist, db.verbatim.contentmodel
patrick@0
  7929
    }
patrick@0
  7930
}
patrick@0
  7931
db.admonition.blocks =
patrick@0
  7932
  db.caution | db.important | db.note | db.tip | db.warning
patrick@0
  7933
db.admonition.contentmodel = db._info.title.only, db.all.blocks+
patrick@0
  7934
div {
patrick@0
  7935
  db.caution.role.attribute = attribute role { text }
patrick@0
  7936
  db.caution.attlist =
patrick@0
  7937
    db.caution.role.attribute?
patrick@0
  7938
    & db.common.attributes
patrick@0
  7939
    & db.common.linking.attributes
patrick@0
  7940
  db.caution =
patrick@0
  7941
    
patrick@0
  7942
    ## A note of caution
patrick@0
  7943
    element caution { db.caution.attlist, db.admonition.contentmodel }
patrick@0
  7944
}
patrick@0
  7945
div {
patrick@0
  7946
  db.important.role.attribute = attribute role { text }
patrick@0
  7947
  db.important.attlist =
patrick@0
  7948
    db.important.role.attribute?
patrick@0
  7949
    & db.common.attributes
patrick@0
  7950
    & db.common.linking.attributes
patrick@0
  7951
  db.important =
patrick@0
  7952
    
patrick@0
  7953
    ## An admonition set off from the text
patrick@0
  7954
    element important {
patrick@0
  7955
      db.important.attlist, db.admonition.contentmodel
patrick@0
  7956
    }
patrick@0
  7957
}
patrick@0
  7958
div {
patrick@0
  7959
  db.note.role.attribute = attribute role { text }
patrick@0
  7960
  db.note.attlist =
patrick@0
  7961
    db.note.role.attribute?
patrick@0
  7962
    & db.common.attributes
patrick@0
  7963
    & db.common.linking.attributes
patrick@0
  7964
  db.note =
patrick@0
  7965
    
patrick@0
  7966
    ## A message set off from the text
patrick@0
  7967
    element note { db.note.attlist, db.admonition.contentmodel }
patrick@0
  7968
}
patrick@0
  7969
div {
patrick@0
  7970
  db.tip.role.attribute = attribute role { text }
patrick@0
  7971
  db.tip.attlist =
patrick@0
  7972
    db.tip.role.attribute?
patrick@0
  7973
    & db.common.attributes
patrick@0
  7974
    & db.common.linking.attributes
patrick@0
  7975
  db.tip =
patrick@0
  7976
    
patrick@0
  7977
    ## A suggestion to the user, set off from the text
patrick@0
  7978
    element tip { db.tip.attlist, db.admonition.contentmodel }
patrick@0
  7979
}
patrick@0
  7980
div {
patrick@0
  7981
  db.warning.role.attribute = attribute role { text }
patrick@0
  7982
  db.warning.attlist =
patrick@0
  7983
    db.warning.role.attribute?
patrick@0
  7984
    & db.common.attributes
patrick@0
  7985
    & db.common.linking.attributes
patrick@0
  7986
  db.warning =
patrick@0
  7987
    
patrick@0
  7988
    ## An admonition set off from the text
patrick@0
  7989
    element warning { db.warning.attlist, db.admonition.contentmodel }
patrick@0
  7990
}
patrick@0
  7991
db.error.inlines =
patrick@0
  7992
  db.errorcode | db.errortext | db.errorname | db.errortype
patrick@0
  7993
div {
patrick@0
  7994
  db.errorcode.role.attribute = attribute role { text }
patrick@0
  7995
  db.errorcode.attlist =
patrick@0
  7996
    db.errorcode.role.attribute?
patrick@0
  7997
    & db.common.attributes
patrick@0
  7998
    & db.common.linking.attributes
patrick@0
  7999
  db.errorcode =
patrick@0
  8000
    
patrick@0
  8001
    ## An error code
patrick@0
  8002
    element errorcode { db.errorcode.attlist, db._text }
patrick@0
  8003
}
patrick@0
  8004
div {
patrick@0
  8005
  db.errorname.role.attribute = attribute role { text }
patrick@0
  8006
  db.errorname.attlist =
patrick@0
  8007
    db.errorname.role.attribute?
patrick@0
  8008
    & db.common.attributes
patrick@0
  8009
    & db.common.linking.attributes
patrick@0
  8010
  db.errorname =
patrick@0
  8011
    
patrick@0
  8012
    ## An error name
patrick@0
  8013
    element errorname { db.errorname.attlist, db._text }
patrick@0
  8014
}
patrick@0
  8015
div {
patrick@0
  8016
  db.errortext.role.attribute = attribute role { text }
patrick@0
  8017
  db.errortext.attlist =
patrick@0
  8018
    db.errortext.role.attribute?
patrick@0
  8019
    & db.common.attributes
patrick@0
  8020
    & db.common.linking.attributes
patrick@0
  8021
  db.errortext =
patrick@0
  8022
    
patrick@0
  8023
    ## An error message.
patrick@0
  8024
    element errortext { db.errortext.attlist, db._text }
patrick@0
  8025
}
patrick@0
  8026
div {
patrick@0
  8027
  db.errortype.role.attribute = attribute role { text }
patrick@0
  8028
  db.errortype.attlist =
patrick@0
  8029
    db.errortype.role.attribute?
patrick@0
  8030
    & db.common.attributes
patrick@0
  8031
    & db.common.linking.attributes
patrick@0
  8032
  db.errortype =
patrick@0
  8033
    
patrick@0
  8034
    ## The classification of an error message
patrick@0
  8035
    element errortype { db.errortype.attlist, db._text }
patrick@0
  8036
}
patrick@0
  8037
db.systemitem.inlines = db._text | db.co
patrick@0
  8038
div {
patrick@0
  8039
  db.systemitem.class.enumeration =
patrick@0
  8040
    
patrick@0
  8041
    ## A daemon or other system process (syslogd)
patrick@0
  8042
    "daemon"
patrick@0
  8043
    | 
patrick@0
  8044
      ## A domain name (example.com)
patrick@0
  8045
      "domainname"
patrick@0
  8046
    | 
patrick@0
  8047
      ## An ethernet address (00:05:4E:49:FD:8E)
patrick@0
  8048
      "etheraddress"
patrick@0
  8049
    | 
patrick@0
  8050
      ## An event of some sort (SIGHUP)
patrick@0
  8051
      "event"
patrick@0
  8052
    | 
patrick@0
  8053
      ## An event handler of some sort (hangup)
patrick@0
  8054
      "eventhandler"
patrick@0
  8055
    | 
patrick@0
  8056
      ## A filesystem (ext3)
patrick@0
  8057
      "filesystem"
patrick@0
  8058
    | 
patrick@0
  8059
      ## A fully qualified domain name (my.example.com)
patrick@0
  8060
      "fqdomainname"
patrick@0
  8061
    | 
patrick@0
  8062
      ## A group name (wheel)
patrick@0
  8063
      "groupname"
patrick@0
  8064
    | 
patrick@0
  8065
      ## An IP address (127.0.0.1)
patrick@0
  8066
      "ipaddress"
patrick@0
  8067
    | 
patrick@0
  8068
      ## A library (libncurses)
patrick@0
  8069
      "library"
patrick@0
  8070
    | 
patrick@0
  8071
      ## A macro
patrick@0
  8072
      "macro"
patrick@0
  8073
    | 
patrick@0
  8074
      ## A netmask (255.255.255.192)
patrick@0
  8075
      "netmask"
patrick@0
  8076
    | 
patrick@0
  8077
      ## A newsgroup (comp.text.xml)
patrick@0
  8078
      "newsgroup"
patrick@0
  8079
    | 
patrick@0
  8080
      ## An operating system name (Hurd)
patrick@0
  8081
      "osname"
patrick@0
  8082
    | 
patrick@0
  8083
      ## A process (gnome-cups-icon)
patrick@0
  8084
      "process"
patrick@0
  8085
    | 
patrick@0
  8086
      ## A protocol (ftp)
patrick@0
  8087
      "protocol"
patrick@0
  8088
    | 
patrick@0
  8089
      ## A resource
patrick@0
  8090
      "resource"
patrick@0
  8091
    | 
patrick@0
  8092
      ## A server (mail.example.com)
patrick@0
  8093
      "server"
patrick@0
  8094
    | 
patrick@0
  8095
      ## A service (ppp)
patrick@0
  8096
      "service"
patrick@0
  8097
    | 
patrick@0
  8098
      ## A system name (hephaistos)
patrick@0
  8099
      "systemname"
patrick@0
  8100
    | 
patrick@0
  8101
      ## A user name (ndw)
patrick@0
  8102
      "username"
patrick@0
  8103
  db.systemitem.class.attribute =
patrick@0
  8104
    
patrick@0
  8105
    ## Identifies the nature of the system item
patrick@0
  8106
    attribute class { db.systemitem.class.enumeration }
patrick@0
  8107
  db.systemitem.role.attribute = attribute role { text }
patrick@0
  8108
  db.systemitem.attlist =
patrick@0
  8109
    db.systemitem.role.attribute?
patrick@0
  8110
    & db.common.attributes
patrick@0
  8111
    & db.common.linking.attributes
patrick@0
  8112
    & db.systemitem.class.attribute?
patrick@0
  8113
  db.systemitem =
patrick@0
  8114
    
patrick@0
  8115
    ## A system-related item or term
patrick@0
  8116
    element systemitem { db.systemitem.attlist, db.systemitem.inlines* }
patrick@0
  8117
}
patrick@0
  8118
div {
patrick@0
  8119
  db.option.role.attribute = attribute role { text }
patrick@0
  8120
  db.option.attlist =
patrick@0
  8121
    db.option.role.attribute?
patrick@0
  8122
    & db.common.attributes
patrick@0
  8123
    & db.common.linking.attributes
patrick@0
  8124
  db.option =
patrick@0
  8125
    
patrick@0
  8126
    ## An option for a software command
patrick@0
  8127
    element option { db.option.attlist, db._text }
patrick@0
  8128
}
patrick@0
  8129
div {
patrick@0
  8130
  db.optional.role.attribute = attribute role { text }
patrick@0
  8131
  db.optional.attlist =
patrick@0
  8132
    db.optional.role.attribute?
patrick@0
  8133
    & db.common.attributes
patrick@0
  8134
    & db.common.linking.attributes
patrick@0
  8135
  db.optional =
patrick@0
  8136
    
patrick@0
  8137
    ## Optional information
patrick@0
  8138
    element optional { db.optional.attlist, db._text }
patrick@0
  8139
}
patrick@0
  8140
div {
patrick@0
  8141
  db.property.role.attribute = attribute role { text }
patrick@0
  8142
  db.property.attlist =
patrick@0
  8143
    db.property.role.attribute?
patrick@0
  8144
    & db.common.attributes
patrick@0
  8145
    & db.common.linking.attributes
patrick@0
  8146
  db.property =
patrick@0
  8147
    
patrick@0
  8148
    ## A unit of data associated with some part of a computer system
patrick@0
  8149
    element property { db.property.attlist, db._text }
patrick@0
  8150
}
patrick@0
  8151
div {
patrick@0
  8152
  db.topic.status.attribute = db.status.attribute
patrick@0
  8153
  db.topic.role.attribute = attribute role { text }
patrick@0
  8154
  db.topic.type.attribute =
patrick@0
  8155
    
patrick@0
  8156
    ## Identifies the topic type
patrick@0
  8157
    attribute type { text }
patrick@0
  8158
  db.topic.attlist =
patrick@0
  8159
    db.topic.role.attribute?
patrick@0
  8160
    & db.topic.type.attribute?
patrick@0
  8161
    & db.common.attributes
patrick@0
  8162
    & db.common.linking.attributes
patrick@0
  8163
    & db.label.attribute?
patrick@0
  8164
    & db.topic.status.attribute?
patrick@0
  8165
  db.topic.info = db._info.title.req
patrick@0
  8166
  db.topic =
patrick@0
  8167
    
patrick@0
  8168
    ## A modular unit of documentation not part of any particular narrative flow
patrick@0
  8169
    element topic {
patrick@0
  8170
      db.topic.attlist,
patrick@0
  8171
      db.topic.info,
patrick@0
  8172
      db.navigation.components*,
patrick@0
  8173
      db.toplevel.blocks.or.sections,
patrick@0
  8174
      db.navigation.components*
patrick@0
  8175
    }
patrick@0
  8176
}