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