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