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