RelaxNG/publidoc.rng
author Patrick PIERRE <patrick.pierre@prismallia.fr>
mar., 19 juil. 2011 11:01:54 +0200
changeset 35 de4114d12ef1
parent 34 c51d5097d065
child 36 d23cfb7be79e
permissions -rw-r--r--
Ajout de la gestion des couvertures
patrick@0
     1
<?xml version="1.0" encoding="UTF-8"?>
patrick@0
     2
<grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
patrick@0
     3
  <!-- $Id$ -->
patrick@0
     4
  <start>
patrick@0
     5
    <ref name="publidoc"/>
patrick@0
     6
  </start>
patrick@0
     7
  <define name="publidoc">
patrick@0
     8
    <element name="publidoc">
patrick@0
     9
      <ref name="publidoc.attributes"/>
patrick@0
    10
      <ref name="publidoc.content"/>
patrick@0
    11
    </element>
patrick@0
    12
  </define>
patrick@0
    13
  <define name="publidoc.attributes">
patrick@0
    14
    <ref name="version.attribute"/>
patrick@0
    15
  </define>
patrick@0
    16
  <define name="version.attribute">
patrick@0
    17
    <attribute name="version">
patrick@0
    18
      <value>1.0</value>
patrick@0
    19
    </attribute>
patrick@0
    20
  </define>
patrick@0
    21
  <define name="publidoc.content">
patrick@0
    22
    <choice>
patrick@0
    23
      <ref name="document"/>
patrick@0
    24
      <ref name="top.topic"/>
patrick@0
    25
    </choice>
patrick@0
    26
  </define>
patrick@0
    27
  <!--
patrick@0
    28
    =============================================================================
patrick@20
    29
                                     TOP LEVEL
patrick@0
    30
    =============================================================================
patrick@0
    31
  -->
patrick@0
    32
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ document ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@0
    33
  <define name="document">
patrick@0
    34
    <element name="document">
patrick@0
    35
      <ref name="document.attributes"/>
patrick@0
    36
      <ref name="document.content"/>
patrick@0
    37
    </element>
patrick@0
    38
  </define>
patrick@0
    39
  <define name="document.attributes">
patrick@0
    40
    <ref name="document.id.attribute"/>
patrick@0
    41
  </define>
patrick@0
    42
  <define name="document.id.attribute">
patrick@0
    43
    <attribute name="xml:id">
patrick@0
    44
      <data type="ID"/>
patrick@0
    45
    </attribute>
patrick@0
    46
  </define>
patrick@0
    47
  <define name="document.content">
patrick@0
    48
    <optional>
patrick@20
    49
      <ref name="top.head"/>
patrick@0
    50
    </optional>
patrick@0
    51
    <choice>
patrick@0
    52
      <oneOrMore>
patrick@0
    53
        <ref name="division"/>
patrick@0
    54
      </oneOrMore>
patrick@0
    55
      <oneOrMore>
patrick@0
    56
        <ref name="topic"/>
patrick@0
    57
      </oneOrMore>
patrick@0
    58
    </choice>
patrick@0
    59
  </define>
patrick@0
    60
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ topic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@0
    61
  <define name="top.topic">
patrick@0
    62
    <element name="topic">
patrick@0
    63
      <ref name="top.topic.attributes"/>
patrick@20
    64
      <ref name="top.topic.content"/>
patrick@0
    65
    </element>
patrick@0
    66
  </define>
patrick@20
    67
  <define name="top.topic.attributes">
patrick@20
    68
    <interleave>
patrick@20
    69
      <ref name="topic.id.attribute"/>
patrick@20
    70
      <optional>
patrick@20
    71
        <ref name="topic.type.attribute"/>
patrick@20
    72
      </optional>
patrick@20
    73
    </interleave>
patrick@20
    74
  </define>
patrick@20
    75
  <define name="topic.id.attribute">
patrick@20
    76
    <attribute name="xml:id">
patrick@20
    77
      <data type="ID"/>
patrick@20
    78
    </attribute>
patrick@20
    79
  </define>
patrick@20
    80
  <define name="topic.type.attribute">
patrick@20
    81
    <attribute name="type">
patrick@20
    82
      <data type="NCName"/>
patrick@20
    83
    </attribute>
patrick@20
    84
  </define>
patrick@20
    85
  <define name="top.topic.content">
patrick@20
    86
    <optional>
patrick@20
    87
      <ref name="top.head"/>
patrick@20
    88
    </optional>
patrick@20
    89
    <oneOrMore>
patrick@20
    90
      <ref name="section"/>
patrick@20
    91
    </oneOrMore>
patrick@20
    92
  </define>
patrick@0
    93
  <!--
patrick@0
    94
    =============================================================================
patrick@20
    95
                                    HEAD LEVEL
patrick@0
    96
    =============================================================================
patrick@0
    97
  -->
patrick@20
    98
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ head ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@20
    99
  <define name="top.head">
patrick@20
   100
    <element name="head">
patrick@20
   101
      <ref name="top.head.content"/>
patrick@0
   102
    </element>
patrick@0
   103
  </define>
patrick@20
   104
  <define name="division.head">
patrick@20
   105
    <element name="head">
patrick@20
   106
      <ref name="division.head.content"/>
patrick@20
   107
    </element>
patrick@20
   108
  </define>
patrick@20
   109
  <define name="component.head">
patrick@20
   110
    <element name="head">
patrick@20
   111
      <ref name="component.head.content"/>
patrick@20
   112
    </element>
patrick@20
   113
  </define>
patrick@20
   114
  <define name="section.head">
patrick@20
   115
    <element name="head">
patrick@20
   116
      <ref name="section.head.content"/>
patrick@20
   117
    </element>
patrick@20
   118
  </define>
patrick@20
   119
  <define name="block.head">
patrick@20
   120
    <element name="head">
patrick@20
   121
      <ref name="block.head.content"/>
patrick@20
   122
    </element>
patrick@20
   123
  </define>
patrick@20
   124
  <define name="top.head.content">
patrick@0
   125
    <interleave>
patrick@0
   126
      <optional>
patrick@20
   127
        <ref name="title"/>
patrick@20
   128
        <optional>
patrick@20
   129
          <ref name="subtitle"/>
patrick@20
   130
        </optional>
patrick@20
   131
      </optional>
patrick@34
   132
      <zeroOrMore>
patrick@34
   133
        <ref name="identifier"/>
patrick@34
   134
      </zeroOrMore>
patrick@20
   135
      <optional>
patrick@20
   136
        <ref name="language"/>
patrick@0
   137
      </optional>
patrick@0
   138
      <zeroOrMore>
patrick@0
   139
        <ref name="author"/>
patrick@0
   140
      </zeroOrMore>
patrick@0
   141
      <optional>
patrick@0
   142
        <ref name="publisher"/>
patrick@0
   143
      </optional>
patrick@0
   144
      <optional>
patrick@0
   145
        <ref name="date"/>
patrick@0
   146
      </optional>
patrick@0
   147
      <optional>
patrick@0
   148
        <ref name="place"/>
patrick@0
   149
      </optional>
patrick@0
   150
      <zeroOrMore>
patrick@0
   151
        <ref name="source"/>
patrick@0
   152
      </zeroOrMore>
patrick@0
   153
      <optional>
patrick@0
   154
        <ref name="subjectset"/>
patrick@0
   155
      </optional>
patrick@0
   156
      <optional>
patrick@0
   157
        <ref name="abstract"/>
patrick@0
   158
      </optional>
patrick@35
   159
      <optional>
patrick@35
   160
        <ref name="cover"/>
patrick@35
   161
      </optional>
patrick@0
   162
      <zeroOrMore>
patrick@0
   163
        <ref name="annotation"/>
patrick@0
   164
      </zeroOrMore>
patrick@0
   165
    </interleave>
patrick@0
   166
  </define>
patrick@20
   167
  <define name="division.head.content">
patrick@20
   168
    <interleave>
patrick@20
   169
      <optional>
patrick@20
   170
        <ref name="title"/>
patrick@20
   171
        <optional>
patrick@20
   172
          <ref name="subtitle"/>
patrick@20
   173
        </optional>
patrick@20
   174
      </optional>
patrick@20
   175
      <optional>
patrick@20
   176
        <ref name="language"/>
patrick@20
   177
      </optional>
patrick@20
   178
      <zeroOrMore>
patrick@20
   179
        <ref name="annotation"/>
patrick@20
   180
      </zeroOrMore>
patrick@20
   181
    </interleave>
patrick@20
   182
  </define>
patrick@20
   183
  <define name="component.head.content">
patrick@20
   184
    <interleave>
patrick@20
   185
      <optional>
patrick@20
   186
        <ref name="title"/>
patrick@20
   187
        <optional>
patrick@20
   188
          <ref name="subtitle"/>
patrick@20
   189
        </optional>
patrick@20
   190
      </optional>
patrick@20
   191
      <optional>
patrick@20
   192
        <ref name="language"/>
patrick@20
   193
      </optional>
patrick@20
   194
      <zeroOrMore>
patrick@20
   195
        <ref name="author"/>
patrick@20
   196
      </zeroOrMore>
patrick@20
   197
      <zeroOrMore>
patrick@20
   198
        <ref name="annotation"/>
patrick@20
   199
      </zeroOrMore>
patrick@20
   200
    </interleave>
patrick@20
   201
  </define>
patrick@20
   202
  <define name="section.head.content">
patrick@20
   203
    <interleave>
patrick@20
   204
      <optional>
patrick@20
   205
        <ref name="title"/>
patrick@20
   206
        <optional>
patrick@20
   207
          <ref name="subtitle"/>
patrick@20
   208
        </optional>
patrick@20
   209
      </optional>
patrick@20
   210
      <optional>
patrick@20
   211
        <ref name="language"/>
patrick@20
   212
      </optional>
patrick@20
   213
      <zeroOrMore>
patrick@20
   214
        <ref name="annotation"/>
patrick@20
   215
      </zeroOrMore>
patrick@20
   216
    </interleave>
patrick@20
   217
  </define>
patrick@20
   218
  <define name="block.head.content">
patrick@20
   219
    <optional>
patrick@20
   220
      <ref name="title"/>
patrick@20
   221
      <optional>
patrick@20
   222
        <ref name="subtitle"/>
patrick@20
   223
      </optional>
patrick@20
   224
    </optional>
patrick@20
   225
  </define>
patrick@0
   226
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ title, subtitle ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@0
   227
  <define name="title">
patrick@0
   228
    <element name="title">
patrick@0
   229
      <ref name="title.content"/>
patrick@0
   230
    </element>
patrick@0
   231
  </define>
patrick@0
   232
  <define name="subtitle">
patrick@0
   233
    <element name="subtitle">
patrick@0
   234
      <ref name="title.content"/>
patrick@0
   235
    </element>
patrick@0
   236
  </define>
patrick@20
   237
  <define name="title.content">
patrick@20
   238
    <ref name="inlines"/>
patrick@20
   239
  </define>
patrick@34
   240
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ identifier ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@34
   241
  <define name="identifier">
patrick@34
   242
    <element name="identifier">
patrick@34
   243
      <ref name="identifier.content"/>
patrick@34
   244
      <ref name="identifier.attributes"/>
patrick@34
   245
    </element>
patrick@34
   246
  </define>
patrick@34
   247
  <define name="identifier.attributes">
patrick@34
   248
    <ref name="class.attribute"/>
patrick@34
   249
  </define>
patrick@34
   250
  <define name="class.attribute">
patrick@34
   251
    <attribute name="class">
patrick@34
   252
      <choice>
patrick@34
   253
        <value>uri</value>
patrick@34
   254
        <value>ean</value>
patrick@34
   255
      </choice>
patrick@34
   256
    </attribute>
patrick@34
   257
  </define>
patrick@34
   258
  <define name="identifier.content">
patrick@34
   259
    <choice>
patrick@34
   260
      <data type="anyURI"/>
patrick@34
   261
      <data type="NMTOKEN"/>
patrick@34
   262
    </choice>
patrick@34
   263
  </define>
patrick@20
   264
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ language ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@20
   265
  <define name="language">
patrick@20
   266
    <element name="language">
patrick@20
   267
      <ref name="language.attributes"/>
patrick@20
   268
    </element>
patrick@20
   269
  </define>
patrick@20
   270
  <define name="language.attributes">
patrick@20
   271
    <ref name="lang.attribute"/>
patrick@20
   272
  </define>
patrick@20
   273
  <define name="lang.attribute">
patrick@20
   274
    <attribute name="xml:lang">
patrick@20
   275
      <data type="language"/>
patrick@20
   276
    </attribute>
patrick@20
   277
  </define>
patrick@0
   278
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ author, publisher ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@5
   279
  <!-- ~~~~~~ author -->
patrick@0
   280
  <define name="author">
patrick@0
   281
    <element name="author">
patrick@0
   282
      <ref name="author.content"/>
patrick@0
   283
    </element>
patrick@0
   284
  </define>
patrick@33
   285
  <define name="author.attributes">
patrick@33
   286
    <optional>
patrick@33
   287
      <ref name="role.attribute"/>
patrick@33
   288
    </optional>
patrick@33
   289
  </define>
patrick@33
   290
  <define name="role.attribute">
patrick@33
   291
    <attribute name="role">
patrick@33
   292
      <choice>
patrick@33
   293
        <value>author</value>
patrick@33
   294
        <value>illustrator</value>
patrick@33
   295
      </choice>
patrick@33
   296
    </attribute>
patrick@33
   297
  </define>
patrick@0
   298
  <define name="author.content">
patrick@0
   299
    <optional>
patrick@0
   300
      <ref name="firstname"/>
patrick@0
   301
    </optional>
patrick@0
   302
    <ref name="lastname"/>
patrick@33
   303
    <zeroOrMore>
patrick@33
   304
      <ref name="role"/>
patrick@33
   305
    </zeroOrMore>
patrick@33
   306
  </define>
patrick@5
   307
  <!-- ~~~~~~ publisher -->
patrick@0
   308
  <define name="publisher">
patrick@0
   309
    <element name="publisher">
patrick@0
   310
      <ref name="publisher.content"/>
patrick@0
   311
    </element>
patrick@0
   312
  </define>
patrick@0
   313
  <define name="publisher.content">
patrick@34
   314
    <ref name="label"/>
patrick@34
   315
    <optional>
patrick@34
   316
      <ref name="url"/>
patrick@34
   317
    </optional>
patrick@0
   318
  </define>
patrick@5
   319
  <!-- ~~~~~~ firstname -->
patrick@5
   320
  <define name="firstname">
patrick@5
   321
    <element name="firstname">
patrick@5
   322
      <ref name="firstname.content"/>
patrick@5
   323
    </element>
patrick@5
   324
  </define>
patrick@5
   325
  <define name="firstname.content">
patrick@5
   326
    <ref name="inlines"/>
patrick@5
   327
  </define>
patrick@5
   328
  <!-- ~~~~~~ lastname -->
patrick@5
   329
  <define name="lastname">
patrick@5
   330
    <element name="lastname">
patrick@5
   331
      <ref name="lastname.content"/>
patrick@5
   332
    </element>
patrick@5
   333
  </define>
patrick@5
   334
  <define name="lastname.content">
patrick@5
   335
    <ref name="inlines"/>
patrick@5
   336
  </define>
patrick@34
   337
  <!-- ~~~~~~ label -->
patrick@34
   338
  <define name="label">
patrick@34
   339
    <element name="label">
patrick@34
   340
      <ref name="label.content"/>
patrick@34
   341
    </element>
patrick@34
   342
  </define>
patrick@34
   343
  <define name="label.content">
patrick@34
   344
    <ref name="inlines"/>
patrick@34
   345
  </define>
patrick@34
   346
  <!-- ~~~~~~ role -->
patrick@34
   347
  <define name="role">
patrick@34
   348
    <element name="role">
patrick@34
   349
      <ref name="role.attributes"/>
patrick@34
   350
    </element>
patrick@34
   351
  </define>
patrick@34
   352
  <define name="role.attributes">
patrick@34
   353
    <ref name="role.of.attribute"/>
patrick@34
   354
  </define>
patrick@34
   355
  <define name="role.of.attribute">
patrick@34
   356
    <attribute name="of">
patrick@34
   357
      <choice>
patrick@34
   358
        <value>author</value>
patrick@34
   359
        <value>illustrator</value>
patrick@34
   360
      </choice>
patrick@34
   361
    </attribute>
patrick@34
   362
  </define>
patrick@34
   363
  <!-- ~~~~~~ url -->
patrick@34
   364
  <define name="url">
patrick@34
   365
    <element name="url">
patrick@34
   366
      <ref name="url.content"/>
patrick@34
   367
    </element>
patrick@34
   368
  </define>
patrick@34
   369
  <define name="url.content">
patrick@34
   370
    <data type="anyURI"/>
patrick@34
   371
  </define>
patrick@2
   372
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ place ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@2
   373
  <define name="place">
patrick@2
   374
    <element name="place">
patrick@2
   375
      <ref name="place.content"/>
patrick@2
   376
    </element>
patrick@2
   377
  </define>
patrick@2
   378
  <define name="place.content">
patrick@2
   379
    <ref name="inlines"/>
patrick@2
   380
  </define>
patrick@0
   381
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ source ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@2
   382
  <!-- ~~~~~~ source -->
patrick@0
   383
  <define name="source">
patrick@0
   384
    <element name="source">
patrick@0
   385
      <ref name="source.attributes"/>
patrick@0
   386
      <choice>
patrick@0
   387
        <group>
patrick@0
   388
          <attribute name="type">
patrick@0
   389
            <value>book</value>
patrick@0
   390
          </attribute>
patrick@0
   391
          <ref name="source.content.book"/>
patrick@0
   392
        </group>
patrick@0
   393
        <attribute name="type">
patrick@0
   394
          <value>file</value>
patrick@0
   395
        </attribute>
patrick@0
   396
      </choice>
patrick@0
   397
      <ref name="source.content"/>
patrick@0
   398
    </element>
patrick@0
   399
  </define>
patrick@0
   400
  <define name="source.attributes">
patrick@0
   401
    <ref name="source.id.attribute"/>
patrick@0
   402
  </define>
patrick@0
   403
  <define name="source.id.attribute">
patrick@0
   404
    <attribute name="id">
patrick@0
   405
      <data type="NMTOKEN"/>
patrick@0
   406
    </attribute>
patrick@0
   407
  </define>
patrick@0
   408
  <define name="source.content.book">
patrick@0
   409
    <ref name="title"/>
patrick@0
   410
    <zeroOrMore>
patrick@0
   411
      <ref name="pagenumber"/>
patrick@0
   412
    </zeroOrMore>
patrick@0
   413
  </define>
patrick@0
   414
  <define name="source.content">
patrick@0
   415
    <zeroOrMore>
patrick@0
   416
      <ref name="annotation"/>
patrick@0
   417
    </zeroOrMore>
patrick@0
   418
  </define>
patrick@2
   419
  <!-- ~~~~~~ pagenumber -->
patrick@0
   420
  <define name="pagenumber">
patrick@0
   421
    <element name="pagenumber">
patrick@0
   422
      <ref name="pagenumber.attributes"/>
patrick@0
   423
    </element>
patrick@0
   424
  </define>
patrick@0
   425
  <define name="pagenumber.attributes">
patrick@0
   426
    <ref name="pagenumber.value.attribute"/>
patrick@0
   427
  </define>
patrick@0
   428
  <define name="pagenumber.value.attribute">
patrick@0
   429
    <attribute name="value">
patrick@33
   430
      <data type="positiveInteger"/>
patrick@0
   431
    </attribute>
patrick@0
   432
  </define>
patrick@0
   433
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ subject ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@2
   434
  <!-- ~~~~~~ subjectset -->
patrick@0
   435
  <define name="subjectset">
patrick@0
   436
    <element name="subjectset">
patrick@0
   437
      <ref name="subjectset.content"/>
patrick@0
   438
    </element>
patrick@0
   439
  </define>
patrick@0
   440
  <define name="subjectset.content">
patrick@0
   441
    <oneOrMore>
patrick@0
   442
      <ref name="subject"/>
patrick@0
   443
    </oneOrMore>
patrick@0
   444
  </define>
patrick@2
   445
  <!-- ~~~~~~ subject -->
patrick@0
   446
  <define name="subject">
patrick@0
   447
    <element name="subject">
patrick@0
   448
      <ref name="subject.attributes"/>
patrick@0
   449
    </element>
patrick@0
   450
  </define>
patrick@0
   451
  <define name="subject.attributes">
patrick@0
   452
    <ref name="subject.id.attribute"/>
patrick@0
   453
  </define>
patrick@0
   454
  <define name="subject.id.attribute">
patrick@0
   455
    <attribute name="id">
patrick@0
   456
      <data type="NMTOKEN"/>
patrick@0
   457
    </attribute>
patrick@0
   458
  </define>
patrick@5
   459
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ abstract ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@2
   460
  <define name="abstract">
patrick@2
   461
    <element name="abstract">
patrick@2
   462
      <ref name="abstract.content"/>
patrick@2
   463
    </element>
patrick@2
   464
  </define>
patrick@2
   465
  <define name="abstract.content">
patrick@2
   466
    <oneOrMore>
patrick@20
   467
      <ref name="p"/>
patrick@2
   468
    </oneOrMore>
patrick@2
   469
  </define>
patrick@35
   470
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cover ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@35
   471
  <define name="cover">
patrick@35
   472
    <element name="cover">
patrick@35
   473
      <ref name="cover.content"/>
patrick@35
   474
    </element>
patrick@35
   475
  </define>
patrick@35
   476
  <define name="cover.content">
patrick@35
   477
    <ref name="cover.image"/>
patrick@35
   478
  </define>
patrick@35
   479
  <define name="cover.image">
patrick@35
   480
    <element name="image">
patrick@35
   481
      <ref name="cover.image.attributes"/>
patrick@35
   482
    </element>
patrick@35
   483
  </define>
patrick@35
   484
  <define name="cover.image.attributes">
patrick@35
   485
    <ref name="cover.image.id.attribute"/>
patrick@35
   486
  </define>
patrick@35
   487
  <define name="cover.image.id.attribute">
patrick@35
   488
    <attribute name="id">
patrick@35
   489
      <data type="NMTOKEN"/>
patrick@35
   490
    </attribute>
patrick@35
   491
  </define>
patrick@0
   492
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ annotation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@0
   493
  <define name="annotation">
patrick@0
   494
    <element name="annotation">
patrick@0
   495
      <ref name="annotation.content"/>
patrick@0
   496
    </element>
patrick@0
   497
  </define>
patrick@0
   498
  <define name="annotation.content">
patrick@0
   499
    <ref name="inlines"/>
patrick@0
   500
  </define>
patrick@0
   501
  <!--
patrick@0
   502
    =============================================================================
patrick@20
   503
                                    DIVISION LEVEL
patrick@0
   504
    =============================================================================
patrick@0
   505
  -->
patrick@0
   506
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ division ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@0
   507
  <define name="division">
patrick@0
   508
    <element name="division">
patrick@0
   509
      <ref name="division.content"/>
patrick@0
   510
    </element>
patrick@0
   511
  </define>
patrick@0
   512
  <define name="division.content">
patrick@0
   513
    <optional>
patrick@20
   514
      <ref name="division.head"/>
patrick@0
   515
    </optional>
patrick@0
   516
    <choice>
patrick@0
   517
      <oneOrMore>
patrick@0
   518
        <ref name="division"/>
patrick@0
   519
      </oneOrMore>
patrick@0
   520
      <oneOrMore>
patrick@0
   521
        <ref name="topic"/>
patrick@0
   522
      </oneOrMore>
patrick@0
   523
    </choice>
patrick@0
   524
  </define>
patrick@0
   525
  <!--
patrick@0
   526
    =============================================================================
patrick@20
   527
                                  COMPONENT LEVEL
patrick@0
   528
    =============================================================================
patrick@0
   529
  -->
patrick@0
   530
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ topic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@0
   531
  <define name="topic">
patrick@0
   532
    <element name="topic">
patrick@0
   533
      <ref name="topic.attributes"/>
patrick@0
   534
      <ref name="topic.content"/>
patrick@0
   535
    </element>
patrick@0
   536
  </define>
patrick@0
   537
  <define name="topic.attributes">
patrick@0
   538
    <interleave>
patrick@0
   539
      <optional>
patrick@0
   540
        <ref name="topic.id.attribute"/>
patrick@0
   541
      </optional>
patrick@0
   542
      <optional>
patrick@0
   543
        <ref name="topic.type.attribute"/>
patrick@0
   544
      </optional>
patrick@0
   545
    </interleave>
patrick@0
   546
  </define>
patrick@0
   547
  <define name="topic.content">
patrick@0
   548
    <optional>
patrick@20
   549
      <ref name="component.head"/>
patrick@0
   550
    </optional>
patrick@0
   551
    <oneOrMore>
patrick@0
   552
      <ref name="section"/>
patrick@0
   553
    </oneOrMore>
patrick@0
   554
  </define>
patrick@0
   555
  <!--
patrick@0
   556
    =============================================================================
patrick@20
   557
                                    SECTION LEVEL
patrick@0
   558
    =============================================================================
patrick@0
   559
  -->
patrick@20
   560
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ section ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@0
   561
  <define name="section">
patrick@0
   562
    <element name="section">
patrick@0
   563
      <ref name="section.content"/>
patrick@0
   564
      <ref name="section.attributes"/>
patrick@0
   565
    </element>
patrick@0
   566
  </define>
patrick@0
   567
  <define name="section.content">
patrick@0
   568
    <optional>
patrick@20
   569
      <ref name="section.head"/>
patrick@0
   570
    </optional>
patrick@0
   571
    <choice>
patrick@0
   572
      <oneOrMore>
patrick@0
   573
        <ref name="section"/>
patrick@0
   574
      </oneOrMore>
patrick@0
   575
      <oneOrMore>
patrick@10
   576
        <ref name="block"/>
patrick@0
   577
      </oneOrMore>
patrick@0
   578
    </choice>
patrick@0
   579
  </define>
patrick@0
   580
  <define name="section.attributes">
patrick@0
   581
    <optional>
patrick@0
   582
      <ref name="status.attribute"/>
patrick@0
   583
    </optional>
patrick@0
   584
  </define>
patrick@0
   585
  <define name="status.attribute">
patrick@0
   586
    <attribute name="status">
patrick@0
   587
      <data type="NCName"/>
patrick@0
   588
    </attribute>
patrick@0
   589
  </define>
patrick@0
   590
  <!--
patrick@0
   591
    =============================================================================
patrick@20
   592
                                    BLOCK LEVEL
patrick@0
   593
    =============================================================================
patrick@0
   594
  -->
patrick@20
   595
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ block ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@10
   596
  <define name="block">
patrick@10
   597
    <choice>
patrick@20
   598
      <ref name="p"/>
patrick@20
   599
      <ref name="speech"/>
patrick@10
   600
      <ref name="list"/>
patrick@17
   601
      <ref name="table"/>
patrick@10
   602
      <ref name="media"/>
patrick@10
   603
    </choice>
patrick@10
   604
  </define>
patrick@20
   605
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ p ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@20
   606
  <define name="p">
patrick@20
   607
    <element name="p">
patrick@20
   608
      <ref name="p.content"/>
patrick@0
   609
    </element>
patrick@0
   610
  </define>
patrick@20
   611
  <define name="p.content">
patrick@25
   612
    <ref name="inlines"/>
patrick@0
   613
  </define>
patrick@20
   614
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ speech ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@20
   615
  <!-- ~~~~~~ speech -->
patrick@20
   616
  <define name="speech">
patrick@20
   617
    <element name="speech">
patrick@20
   618
      <ref name="speech.content"/>
patrick@20
   619
    </element>
patrick@20
   620
  </define>
patrick@20
   621
  <define name="speech.content">
patrick@20
   622
    <optional>
patrick@20
   623
      <ref name="speaker"/>
patrick@20
   624
    </optional>
patrick@20
   625
    <optional>
patrick@20
   626
      <ref name="stage"/>
patrick@20
   627
    </optional>
patrick@20
   628
    <oneOrMore>
patrick@20
   629
      <ref name="p"/>
patrick@20
   630
    </oneOrMore>
patrick@20
   631
  </define>
patrick@20
   632
  <!-- ~~~~~~ speaker -->
patrick@20
   633
  <define name="speaker">
patrick@20
   634
    <element name="speaker">
patrick@20
   635
      <ref name="speaker.content"/>
patrick@20
   636
    </element>
patrick@20
   637
  </define>
patrick@20
   638
  <define name="speaker.content">
patrick@20
   639
    <ref name="inlines"/>
patrick@20
   640
  </define>
patrick@20
   641
  <!-- ~~~~~~ stage -->
patrick@20
   642
  <define name="stage">
patrick@20
   643
    <element name="stage">
patrick@20
   644
      <ref name="stage.content"/>
patrick@20
   645
    </element>
patrick@20
   646
  </define>
patrick@20
   647
  <define name="stage.content">
patrick@20
   648
    <ref name="inlines"/>
patrick@20
   649
  </define>
patrick@17
   650
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ list ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@10
   651
  <!-- ~~~~~~ list -->
patrick@10
   652
  <define name="list">
patrick@10
   653
    <element name="list">
patrick@10
   654
      <ref name="list.content"/>
patrick@10
   655
    </element>
patrick@10
   656
  </define>
patrick@10
   657
  <define name="list.content">
patrick@10
   658
    <optional>
patrick@20
   659
      <ref name="block.head"/>
patrick@10
   660
    </optional>
patrick@10
   661
    <choice>
patrick@10
   662
      <group>
patrick@10
   663
        <optional>
patrick@10
   664
          <attribute name="type">
patrick@12
   665
            <value>ordered</value>
patrick@10
   666
          </attribute>
patrick@10
   667
        </optional>
patrick@10
   668
        <ref name="item"/>
patrick@10
   669
        <oneOrMore>
patrick@10
   670
          <ref name="item"/>
patrick@10
   671
        </oneOrMore>
patrick@10
   672
      </group>
patrick@10
   673
      <group>
patrick@10
   674
        <attribute name="type">
patrick@10
   675
          <value>glossary</value>
patrick@10
   676
        </attribute>
patrick@10
   677
        <oneOrMore>
patrick@10
   678
          <ref name="glossary.item"/>
patrick@10
   679
        </oneOrMore>
patrick@10
   680
      </group>
patrick@10
   681
    </choice>
patrick@10
   682
  </define>
patrick@10
   683
  <!-- ~~~~~~ item -->
patrick@10
   684
  <define name="item">
patrick@10
   685
    <element name="item">
patrick@10
   686
      <ref name="item.content"/>
patrick@10
   687
    </element>
patrick@10
   688
  </define>
patrick@10
   689
  <define name="item.content">
patrick@30
   690
    <choice>
patrick@30
   691
      <ref name="inlines"/>
patrick@30
   692
      <oneOrMore>
patrick@30
   693
        <ref name="block"/>
patrick@30
   694
      </oneOrMore>
patrick@30
   695
    </choice>
patrick@10
   696
  </define>
patrick@10
   697
  <!-- ~~~~~~ glossary.item -->
patrick@10
   698
  <define name="glossary.item">
patrick@10
   699
    <element name="item">
patrick@10
   700
      <ref name="glossary.item.content"/>
patrick@10
   701
    </element>
patrick@10
   702
  </define>
patrick@10
   703
  <define name="glossary.item.content">
patrick@10
   704
    <ref name="label"/>
patrick@10
   705
    <oneOrMore>
patrick@10
   706
      <ref name="block"/>
patrick@10
   707
    </oneOrMore>
patrick@10
   708
  </define>
patrick@17
   709
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ table ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@17
   710
  <define name="table">
patrick@17
   711
    <element name="table">
patrick@17
   712
      <ref name="table.content"/>
patrick@17
   713
    </element>
patrick@17
   714
  </define>
patrick@17
   715
  <define name="table.content">
patrick@17
   716
    <optional>
patrick@20
   717
      <ref name="block.head"/>
patrick@17
   718
    </optional>
patrick@17
   719
    <oneOrMore>
patrick@17
   720
      <ref name="tgroup"/>
patrick@17
   721
    </oneOrMore>
patrick@17
   722
    <optional>
patrick@17
   723
      <ref name="caption"/>
patrick@17
   724
    </optional>
patrick@17
   725
  </define>
patrick@17
   726
  <!-- ~~~~~~ tgroup -->
patrick@17
   727
  <define name="tgroup">
patrick@17
   728
    <element name="tgroup">
patrick@17
   729
      <ref name="tgroup.attributes"/>
patrick@17
   730
      <ref name="tgroup.content"/>
patrick@17
   731
    </element>
patrick@17
   732
  </define>
patrick@17
   733
  <define name="tgroup.content">
patrick@17
   734
    <optional>
patrick@17
   735
      <ref name="thead"/>
patrick@17
   736
    </optional>
patrick@17
   737
    <optional>
patrick@17
   738
      <ref name="tfoot"/>
patrick@17
   739
    </optional>
patrick@17
   740
    <ref name="tbody"/>
patrick@17
   741
  </define>
patrick@17
   742
  <define name="tgroup.attributes">
patrick@17
   743
    <interleave>
patrick@17
   744
      <ref name="cols.attribute"/>
patrick@17
   745
      <optional>
patrick@17
   746
        <ref name="align.attribute"/>
patrick@17
   747
      </optional>
patrick@17
   748
      <optional>
patrick@17
   749
        <ref name="colsep.attribute"/>
patrick@17
   750
      </optional>
patrick@17
   751
      <optional>
patrick@17
   752
        <ref name="rowsep.attribute"/>
patrick@17
   753
      </optional>
patrick@17
   754
    </interleave>
patrick@17
   755
  </define>
patrick@17
   756
  <define name="cols.attribute">
patrick@17
   757
    <attribute name="cols">
patrick@17
   758
      <data type="positiveInteger"/>
patrick@17
   759
    </attribute>
patrick@17
   760
  </define>
patrick@17
   761
  <define name="align.attribute">
patrick@17
   762
    <attribute name="align">
patrick@17
   763
      <choice>
patrick@17
   764
        <value>left</value>
patrick@17
   765
        <value>right</value>
patrick@17
   766
        <value>center</value>
patrick@17
   767
        <value>justify</value>
patrick@17
   768
      </choice>
patrick@17
   769
    </attribute>
patrick@17
   770
  </define>
patrick@17
   771
  <define name="colsep.attribute">
patrick@17
   772
    <attribute name="colsep">
patrick@17
   773
      <choice>
patrick@17
   774
        <value>0</value>
patrick@17
   775
        <value>1</value>
patrick@17
   776
      </choice>
patrick@17
   777
    </attribute>
patrick@17
   778
  </define>
patrick@17
   779
  <define name="rowsep.attribute">
patrick@17
   780
    <attribute name="rowsep">
patrick@17
   781
      <choice>
patrick@17
   782
        <value>0</value>
patrick@17
   783
        <value>1</value>
patrick@17
   784
      </choice>
patrick@17
   785
    </attribute>
patrick@17
   786
  </define>
patrick@17
   787
  <!-- ~~~~~~ thead, tfoot, tbody -->
patrick@17
   788
  <define name="thead">
patrick@17
   789
    <element name="thead">
patrick@22
   790
      <ref name="thead.attributes"/>
patrick@17
   791
      <ref name="thead.content"/>
patrick@17
   792
    </element>
patrick@17
   793
  </define>
patrick@17
   794
  <define name="tfoot">
patrick@17
   795
    <element name="tfoot">
patrick@22
   796
      <ref name="tfoot.attributes"/>
patrick@17
   797
      <ref name="tfoot.content"/>
patrick@17
   798
    </element>
patrick@17
   799
  </define>
patrick@17
   800
  <define name="tbody">
patrick@17
   801
    <element name="tbody">
patrick@22
   802
      <ref name="tbody.attributes"/>
patrick@17
   803
      <ref name="tbody.content"/>
patrick@17
   804
    </element>
patrick@17
   805
  </define>
patrick@22
   806
  <define name="thead.attributes">
patrick@22
   807
    <optional>
patrick@22
   808
      <ref name="valign.attribute"/>
patrick@22
   809
    </optional>
patrick@22
   810
  </define>
patrick@22
   811
  <define name="tfoot.attributes">
patrick@22
   812
    <optional>
patrick@22
   813
      <ref name="valign.attribute"/>
patrick@22
   814
    </optional>
patrick@22
   815
  </define>
patrick@22
   816
  <define name="tbody.attributes">
patrick@22
   817
    <optional>
patrick@22
   818
      <ref name="valign.attribute"/>
patrick@22
   819
    </optional>
patrick@22
   820
  </define>
patrick@22
   821
  <define name="valign.attribute">
patrick@22
   822
    <attribute name="valign">
patrick@22
   823
      <choice>
patrick@22
   824
        <value>top</value>
patrick@22
   825
        <value>middle</value>
patrick@22
   826
        <value>bottom</value>
patrick@22
   827
      </choice>
patrick@22
   828
    </attribute>
patrick@22
   829
  </define>
patrick@17
   830
  <define name="thead.content">
patrick@17
   831
    <oneOrMore>
patrick@17
   832
      <ref name="row"/>
patrick@17
   833
    </oneOrMore>
patrick@17
   834
  </define>
patrick@17
   835
  <define name="tfoot.content">
patrick@17
   836
    <oneOrMore>
patrick@17
   837
      <ref name="row"/>
patrick@17
   838
    </oneOrMore>
patrick@17
   839
  </define>
patrick@17
   840
  <define name="tbody.content">
patrick@17
   841
    <oneOrMore>
patrick@17
   842
      <ref name="row"/>
patrick@17
   843
    </oneOrMore>
patrick@17
   844
  </define>
patrick@17
   845
  <!-- ~~~~~~ row -->
patrick@17
   846
  <define name="row">
patrick@17
   847
    <element name="row">
patrick@17
   848
      <ref name="row.attribute"/>
patrick@17
   849
      <ref name="row.content"/>
patrick@17
   850
    </element>
patrick@17
   851
  </define>
patrick@17
   852
  <define name="row.attribute">
patrick@17
   853
    <optional>
patrick@17
   854
      <ref name="valign.attribute"/>
patrick@17
   855
    </optional>
patrick@17
   856
  </define>
patrick@17
   857
  <define name="row.content">
patrick@17
   858
    <oneOrMore>
patrick@17
   859
      <ref name="entry"/>
patrick@17
   860
    </oneOrMore>
patrick@17
   861
  </define>
patrick@17
   862
  <!-- ~~~~~~ entry -->
patrick@17
   863
  <define name="entry">
patrick@17
   864
    <element name="entry">
patrick@17
   865
      <ref name="entry.content"/>
patrick@17
   866
    </element>
patrick@17
   867
  </define>
patrick@17
   868
  <define name="entry.content">
patrick@17
   869
    <choice>
patrick@17
   870
      <ref name="inlines"/>
patrick@17
   871
      <oneOrMore>
patrick@20
   872
        <ref name="p"/>
patrick@17
   873
      </oneOrMore>
patrick@17
   874
    </choice>
patrick@17
   875
  </define>
patrick@17
   876
  <!-- ~~~~~~ caption -->
patrick@17
   877
  <define name="caption">
patrick@17
   878
    <element name="caption">
patrick@17
   879
      <ref name="caption.content"/>
patrick@17
   880
    </element>
patrick@17
   881
  </define>
patrick@17
   882
  <define name="caption.content">
patrick@20
   883
    <choice>
patrick@20
   884
      <ref name="inlines"/>
patrick@20
   885
      <oneOrMore>
patrick@20
   886
        <ref name="p"/>
patrick@20
   887
      </oneOrMore>
patrick@20
   888
    </choice>
patrick@11
   889
  </define>
patrick@35
   890
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ media ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@2
   891
  <!-- ~~~~~~ media -->
patrick@0
   892
  <define name="media">
patrick@0
   893
    <element name="media">
patrick@0
   894
      <ref name="media.content"/>
patrick@0
   895
    </element>
patrick@0
   896
  </define>
patrick@0
   897
  <define name="media.content">
patrick@24
   898
    <optional>
patrick@24
   899
      <ref name="block.head"/>
patrick@24
   900
    </optional>
patrick@0
   901
    <oneOrMore>
patrick@0
   902
      <ref name="image"/>
patrick@0
   903
    </oneOrMore>
patrick@0
   904
    <optional>
patrick@17
   905
      <ref name="caption"/>
patrick@0
   906
    </optional>
patrick@35
   907
    <optional>
patrick@35
   908
      <ref name="url"/>
patrick@35
   909
    </optional>
patrick@0
   910
  </define>
patrick@2
   911
  <!-- ~~~~~~ image -->
patrick@0
   912
  <define name="image">
patrick@0
   913
    <element name="image">
patrick@0
   914
      <ref name="image.attributes"/>
patrick@0
   915
      <ref name="image.content"/>
patrick@0
   916
    </element>
patrick@0
   917
  </define>
patrick@0
   918
  <define name="image.attributes">
patrick@0
   919
    <ref name="media.id.attribute"/>
patrick@0
   920
  </define>
patrick@17
   921
  <define name="media.id.attribute">
patrick@17
   922
    <attribute name="id">
patrick@17
   923
      <data type="NMTOKEN"/>
patrick@17
   924
    </attribute>
patrick@17
   925
  </define>
patrick@0
   926
  <define name="image.content">
patrick@0
   927
    <optional>
patrick@0
   928
      <ref name="copyright"/>
patrick@0
   929
    </optional>
patrick@0
   930
  </define>
patrick@2
   931
  <!-- ~~~~~~ copyright -->
patrick@0
   932
  <define name="copyright">
patrick@0
   933
    <element name="copyright">
patrick@0
   934
      <ref name="copyright.content"/>
patrick@0
   935
    </element>
patrick@0
   936
  </define>
patrick@0
   937
  <define name="copyright.content">
patrick@0
   938
    <ref name="inlines"/>
patrick@0
   939
  </define>
patrick@0
   940
  <!--
patrick@0
   941
    =============================================================================
patrick@20
   942
                                    INLINE LEVEL
patrick@0
   943
    =============================================================================
patrick@0
   944
  -->
patrick@0
   945
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@0
   946
  <define name="inlines">
patrick@0
   947
    <mixed>
patrick@0
   948
      <interleave>
patrick@0
   949
        <zeroOrMore>
patrick@0
   950
          <ref name="sup"/>
patrick@0
   951
        </zeroOrMore>
patrick@0
   952
        <zeroOrMore>
patrick@0
   953
          <ref name="sub"/>
patrick@0
   954
        </zeroOrMore>
patrick@0
   955
        <zeroOrMore>
patrick@12
   956
          <ref name="number"/>
patrick@0
   957
        </zeroOrMore>
patrick@0
   958
        <zeroOrMore>
patrick@0
   959
          <ref name="date"/>
patrick@0
   960
        </zeroOrMore>
patrick@0
   961
        <zeroOrMore>
patrick@0
   962
          <ref name="name"/>
patrick@0
   963
        </zeroOrMore>
patrick@0
   964
        <zeroOrMore>
patrick@5
   965
          <ref name="note"/>
patrick@0
   966
        </zeroOrMore>
patrick@0
   967
        <zeroOrMore>
patrick@0
   968
          <ref name="foreign"/>
patrick@0
   969
        </zeroOrMore>
patrick@0
   970
        <zeroOrMore>
patrick@0
   971
          <ref name="highlight"/>
patrick@0
   972
        </zeroOrMore>
patrick@5
   973
        <zeroOrMore>
patrick@5
   974
          <ref name="mentioned"/>
patrick@5
   975
        </zeroOrMore>
patrick@5
   976
        <zeroOrMore>
patrick@5
   977
          <ref name="quote"/>
patrick@5
   978
        </zeroOrMore>
patrick@8
   979
        <zeroOrMore>
patrick@8
   980
          <ref name="acronym"/>
patrick@8
   981
        </zeroOrMore>
patrick@10
   982
        <zeroOrMore>
patrick@10
   983
          <ref name="term"/>
patrick@10
   984
        </zeroOrMore>
patrick@25
   985
        <zeroOrMore>
patrick@25
   986
          <ref name="link"/>
patrick@25
   987
        </zeroOrMore>
patrick@0
   988
      </interleave>
patrick@0
   989
    </mixed>
patrick@0
   990
  </define>
patrick@0
   991
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sub, sup ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@0
   992
  <define name="sup">
patrick@0
   993
    <element name="sup">
patrick@0
   994
      <ref name="inlines"/>
patrick@0
   995
    </element>
patrick@0
   996
  </define>
patrick@0
   997
  <define name="sub">
patrick@0
   998
    <element name="sub">
patrick@0
   999
      <ref name="inlines"/>
patrick@0
  1000
    </element>
patrick@0
  1001
  </define>
patrick@12
  1002
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ number ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@12
  1003
  <define name="number">
patrick@12
  1004
    <element name="number">
patrick@12
  1005
      <choice>
patrick@12
  1006
        <group>
patrick@12
  1007
          <attribute name="type">
patrick@12
  1008
            <value>roman</value>
patrick@12
  1009
          </attribute>
patrick@12
  1010
          <ref name="number.attributes"/>
patrick@12
  1011
          <ref name="number.roman.content"/>
patrick@12
  1012
        </group>
patrick@12
  1013
        <group>
patrick@12
  1014
          <ref name="number.attributes"/>
patrick@12
  1015
          <ref name="number.content"/>
patrick@12
  1016
        </group>
patrick@12
  1017
      </choice>
patrick@0
  1018
    </element>
patrick@0
  1019
  </define>
patrick@12
  1020
  <define name="number.attributes">
patrick@12
  1021
    <optional>
patrick@12
  1022
      <ref name="number.value.attribute"/>
patrick@12
  1023
    </optional>
patrick@12
  1024
  </define>
patrick@12
  1025
  <define name="number.value.attribute">
patrick@12
  1026
    <attribute name="value">
patrick@12
  1027
      <choice>
patrick@12
  1028
        <data type="integer"/>
patrick@12
  1029
        <data type="decimal"/>
patrick@12
  1030
      </choice>
patrick@12
  1031
    </attribute>
patrick@12
  1032
  </define>
patrick@12
  1033
  <define name="number.content">
patrick@12
  1034
    <mixed>
patrick@12
  1035
      <zeroOrMore>
patrick@12
  1036
        <ref name="sup"/>
patrick@12
  1037
      </zeroOrMore>
patrick@12
  1038
    </mixed>
patrick@12
  1039
  </define>
patrick@12
  1040
  <define name="number.roman.content">
patrick@12
  1041
    <data type="token">
patrick@12
  1042
      <param name="pattern">[dlxvi]+</param>
patrick@12
  1043
    </data>
patrick@12
  1044
  </define>
patrick@0
  1045
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ date ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@0
  1046
  <define name="date">
patrick@0
  1047
    <element name="date">
patrick@0
  1048
      <ref name="date.attributes"/>
patrick@0
  1049
      <ref name="date.content"/>
patrick@0
  1050
    </element>
patrick@0
  1051
  </define>
patrick@0
  1052
  <define name="date.attributes">
patrick@12
  1053
    <interleave>
patrick@12
  1054
      <ref name="date.value.attribute"/>
patrick@12
  1055
      <optional>
patrick@12
  1056
        <ref name="date.of.attribute"/>
patrick@12
  1057
      </optional>
patrick@12
  1058
    </interleave>
patrick@12
  1059
  </define>
patrick@12
  1060
  <define name="date.value.attribute">
patrick@12
  1061
    <attribute name="value">
patrick@12
  1062
      <choice>
patrick@12
  1063
        <data type="date"/>
patrick@12
  1064
        <data type="gYearMonth"/>
patrick@12
  1065
        <data type="gYear"/>
patrick@12
  1066
      </choice>
patrick@12
  1067
    </attribute>
patrick@0
  1068
  </define>
patrick@0
  1069
  <define name="date.of.attribute">
patrick@0
  1070
    <attribute name="of">
patrick@33
  1071
      <choice>
patrick@33
  1072
        <value>birth</value>
patrick@33
  1073
        <value>death</value>
patrick@33
  1074
      </choice>
patrick@0
  1075
    </attribute>
patrick@0
  1076
  </define>
patrick@0
  1077
  <define name="date.content">
patrick@12
  1078
    <mixed>
patrick@12
  1079
      <zeroOrMore>
patrick@12
  1080
        <ref name="sup"/>
patrick@12
  1081
      </zeroOrMore>
patrick@12
  1082
    </mixed>
patrick@0
  1083
  </define>
patrick@2
  1084
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ name ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@0
  1085
  <define name="name">
patrick@0
  1086
    <element name="name">
patrick@0
  1087
      <ref name="name.attributes"/>
patrick@0
  1088
      <ref name="name.content"/>
patrick@0
  1089
    </element>
patrick@0
  1090
  </define>
patrick@0
  1091
  <define name="name.attributes">
patrick@0
  1092
    <optional>
patrick@0
  1093
      <ref name="name.of.attribute"/>
patrick@0
  1094
    </optional>
patrick@0
  1095
  </define>
patrick@0
  1096
  <define name="name.of.attribute">
patrick@0
  1097
    <attribute name="of">
patrick@33
  1098
      <choice>
patrick@33
  1099
        <value>person</value>
patrick@33
  1100
        <value>company</value>
patrick@33
  1101
        <value>book</value>
patrick@33
  1102
        <value>newspaper</value>
patrick@33
  1103
        <value>party</value>
patrick@33
  1104
      </choice>
patrick@0
  1105
    </attribute>
patrick@0
  1106
  </define>
patrick@2
  1107
  <define name="name.content">
patrick@2
  1108
    <ref name="inlines"/>
patrick@2
  1109
  </define>
patrick@5
  1110
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ note ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@5
  1111
  <define name="note">
patrick@5
  1112
    <element name="note">
patrick@5
  1113
      <ref name="note.attributes"/>
patrick@5
  1114
      <ref name="note.content"/>
patrick@0
  1115
    </element>
patrick@0
  1116
  </define>
patrick@5
  1117
  <define name="note.attributes">
patrick@0
  1118
    <optional>
patrick@5
  1119
      <ref name="note.label.attribute"/>
patrick@0
  1120
    </optional>
patrick@0
  1121
  </define>
patrick@5
  1122
  <define name="note.label.attribute">
patrick@0
  1123
    <attribute name="label"/>
patrick@0
  1124
  </define>
patrick@5
  1125
  <define name="note.content">
patrick@17
  1126
    <choice>
patrick@17
  1127
      <ref name="inlines"/>
patrick@17
  1128
      <oneOrMore>
patrick@20
  1129
        <ref name="p"/>
patrick@17
  1130
      </oneOrMore>
patrick@17
  1131
    </choice>
patrick@0
  1132
  </define>
patrick@12
  1133
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ foreign ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@0
  1134
  <define name="foreign">
patrick@0
  1135
    <element name="foreign">
patrick@0
  1136
      <ref name="foreign.attributes"/>
patrick@0
  1137
      <ref name="foreign.content"/>
patrick@0
  1138
    </element>
patrick@0
  1139
  </define>
patrick@0
  1140
  <define name="foreign.attributes">
patrick@0
  1141
    <optional>
patrick@0
  1142
      <ref name="lang.attribute"/>
patrick@0
  1143
    </optional>
patrick@0
  1144
  </define>
patrick@0
  1145
  <define name="foreign.content">
patrick@0
  1146
    <ref name="inlines"/>
patrick@0
  1147
  </define>
patrick@0
  1148
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ highlight ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@0
  1149
  <define name="highlight">
patrick@0
  1150
    <element name="highlight">
patrick@0
  1151
      <ref name="highlight.content"/>
patrick@0
  1152
    </element>
patrick@0
  1153
  </define>
patrick@0
  1154
  <define name="highlight.content">
patrick@0
  1155
    <ref name="inlines"/>
patrick@0
  1156
  </define>
patrick@5
  1157
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mentioned ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@5
  1158
  <define name="mentioned">
patrick@5
  1159
    <element name="mentioned">
patrick@5
  1160
      <ref name="mentioned.content"/>
patrick@5
  1161
    </element>
patrick@5
  1162
  </define>
patrick@5
  1163
  <define name="mentioned.content">
patrick@5
  1164
    <ref name="inlines"/>
patrick@5
  1165
  </define>
patrick@5
  1166
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ quote ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@5
  1167
  <define name="quote">
patrick@5
  1168
    <element name="quote">
patrick@5
  1169
      <ref name="quote.content"/>
patrick@5
  1170
    </element>
patrick@5
  1171
  </define>
patrick@5
  1172
  <define name="quote.content">
patrick@5
  1173
    <ref name="inlines"/>
patrick@5
  1174
  </define>
patrick@8
  1175
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ acronym ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@8
  1176
  <define name="acronym">
patrick@8
  1177
    <element name="acronym">
patrick@8
  1178
      <ref name="acronym.content"/>
patrick@8
  1179
    </element>
patrick@8
  1180
  </define>
patrick@8
  1181
  <define name="acronym.content">
patrick@8
  1182
    <ref name="inlines"/>
patrick@8
  1183
  </define>
patrick@10
  1184
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ term ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@10
  1185
  <define name="term">
patrick@10
  1186
    <element name="term">
patrick@10
  1187
      <ref name="term.content"/>
patrick@10
  1188
    </element>
patrick@10
  1189
  </define>
patrick@10
  1190
  <define name="term.content">
patrick@10
  1191
    <ref name="inlines"/>
patrick@10
  1192
  </define>
patrick@0
  1193
  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ link ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
patrick@0
  1194
  <define name="link">
patrick@0
  1195
    <element name="link">
patrick@0
  1196
      <ref name="link.attributes"/>
patrick@0
  1197
      <ref name="link.content"/>
patrick@0
  1198
    </element>
patrick@0
  1199
  </define>
patrick@0
  1200
  <define name="link.attributes">
patrick@10
  1201
    <optional>
patrick@10
  1202
      <choice>
patrick@10
  1203
        <ref name="uri.attribute"/>
patrick@10
  1204
        <ref name="idref.attribute"/>
patrick@10
  1205
      </choice>
patrick@10
  1206
    </optional>
patrick@10
  1207
  </define>
patrick@10
  1208
  <define name="uri.attribute">
patrick@10
  1209
    <attribute name="uri">
patrick@10
  1210
      <data type="anyURI"/>
patrick@10
  1211
    </attribute>
patrick@10
  1212
  </define>
patrick@10
  1213
  <define name="idref.attribute">
patrick@10
  1214
    <attribute name="idref">
patrick@10
  1215
      <data type="IDREF"/>
patrick@10
  1216
    </attribute>
patrick@0
  1217
  </define>
patrick@0
  1218
  <define name="link.content">
patrick@0
  1219
    <ref name="inlines"/>
patrick@0
  1220
  </define>
patrick@0
  1221
</grammar>