RelaxNG/publidoc.rng
changeset 66 29c53c3d676e
parent 64 2d6627e9d3d6
child 69 52c72abcc57d
equal deleted inserted replaced
65:2aad27159a33 66:29c53c3d676e
    35       <ref name="document.attributes"/>
    35       <ref name="document.attributes"/>
    36       <ref name="document.content"/>
    36       <ref name="document.content"/>
    37     </element>
    37     </element>
    38   </define>
    38   </define>
    39   <define name="document.attributes">
    39   <define name="document.attributes">
    40     <ref name="document.id.attribute"/>
    40     <interleave>
       
    41       <ref name="document.id.attribute"/>
       
    42       <optional>
       
    43         <ref name="lang.attribute"/>
       
    44       </optional>
       
    45     </interleave>
    41   </define>
    46   </define>
    42   <define name="document.id.attribute">
    47   <define name="document.id.attribute">
    43     <attribute name="xml:id">
    48     <attribute name="xml:id">
    44       <data type="ID"/>
    49       <data type="ID"/>
       
    50     </attribute>
       
    51   </define>
       
    52   <define name="lang.attribute">
       
    53     <attribute name="xml:lang">
       
    54       <data type="language"/>
    45     </attribute>
    55     </attribute>
    46   </define>
    56   </define>
    47   <define name="document.content">
    57   <define name="document.content">
    48     <optional>
    58     <optional>
    49       <ref name="top.head"/>
    59       <ref name="top.head"/>
    65   <define name="top.topic.attributes">
    75   <define name="top.topic.attributes">
    66     <interleave>
    76     <interleave>
    67       <ref name="topic.id.attribute"/>
    77       <ref name="topic.id.attribute"/>
    68       <optional>
    78       <optional>
    69         <ref name="topic.type.attribute"/>
    79         <ref name="topic.type.attribute"/>
       
    80       </optional>
       
    81       <optional>
       
    82         <ref name="lang.attribute"/>
    70       </optional>
    83       </optional>
    71     </interleave>
    84     </interleave>
    72   </define>
    85   </define>
    73   <define name="topic.id.attribute">
    86   <define name="topic.id.attribute">
    74     <attribute name="xml:id">
    87     <attribute name="xml:id">
   129       </optional>
   142       </optional>
   130       <zeroOrMore>
   143       <zeroOrMore>
   131         <ref name="identifier"/>
   144         <ref name="identifier"/>
   132       </zeroOrMore>
   145       </zeroOrMore>
   133       <optional>
   146       <optional>
   134         <ref name="language"/>
       
   135       </optional>
       
   136       <optional>
       
   137         <ref name="copyright"/>
   147         <ref name="copyright"/>
   138       </optional>
   148       </optional>
   139       <zeroOrMore>
   149       <optional>
   140         <ref name="author"/>
   150         <ref name="contributors"/>
   141       </zeroOrMore>
       
   142       <optional>
       
   143         <ref name="publisher"/>
       
   144       </optional>
   151       </optional>
   145       <optional>
   152       <optional>
   146         <ref name="date"/>
   153         <ref name="date"/>
   147       </optional>
   154       </optional>
   148       <optional>
   155       <optional>
   191         <optional>
   198         <optional>
   192           <ref name="subtitle"/>
   199           <ref name="subtitle"/>
   193         </optional>
   200         </optional>
   194       </optional>
   201       </optional>
   195       <optional>
   202       <optional>
   196         <ref name="language"/>
   203         <ref name="contributors"/>
   197       </optional>
   204       </optional>
   198       <zeroOrMore>
       
   199         <ref name="author"/>
       
   200       </zeroOrMore>
       
   201       <optional>
   205       <optional>
   202         <ref name="abstract"/>
   206         <ref name="abstract"/>
   203       </optional>
   207       </optional>
   204       <zeroOrMore>
   208       <zeroOrMore>
   205         <ref name="annotation"/>
   209         <ref name="annotation"/>
   267     <choice>
   271     <choice>
   268       <ref name="identifier.uri"/>
   272       <ref name="identifier.uri"/>
   269       <ref name="identifier.ean"/>
   273       <ref name="identifier.ean"/>
   270     </choice>
   274     </choice>
   271   </define>
   275   </define>
   272   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ language ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
       
   273   <define name="language">
       
   274     <element name="language">
       
   275       <ref name="language.attributes"/>
       
   276     </element>
       
   277   </define>
       
   278   <define name="language.attributes">
       
   279     <ref name="lang.attribute"/>
       
   280   </define>
       
   281   <define name="lang.attribute">
       
   282     <attribute name="xml:lang">
       
   283       <data type="language"/>
       
   284     </attribute>
       
   285   </define>
       
   286   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ copyright ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   276   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ copyright ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   287   <define name="copyright">
   277   <define name="copyright">
   288     <element name="copyright">
   278     <element name="copyright">
   289       <ref name="copyright.content"/>
   279       <ref name="copyright.content"/>
   290     </element>
   280     </element>
   291   </define>
   281   </define>
   292   <define name="copyright.content">
   282   <define name="copyright.content">
   293     <ref name="inlines"/>
   283     <ref name="inlines"/>
   294   </define>
   284   </define>
   295   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ author, publisher ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   285   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ contributors ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   296   <!-- ~~~~~~ author -->
   286   <!-- ~~~~~~ contributors -->
   297   <define name="author">
   287   <define name="contributors">
   298     <element name="author">
   288     <element name="contributors">
   299       <ref name="author.content"/>
   289       <ref name="contributors.content"/>
   300     </element>
   290     </element>
   301   </define>
   291   </define>
   302   <define name="author.content">
   292   <define name="contributors.content">
   303     <optional>
   293     <oneOrMore>
   304       <ref name="firstname"/>
   294       <ref name="contributor"/>
   305     </optional>
   295     </oneOrMore>
   306     <ref name="lastname"/>
   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>
   307     <zeroOrMore>
   322     <zeroOrMore>
   308       <ref name="role"/>
   323       <ref name="role"/>
   309     </zeroOrMore>
   324     </zeroOrMore>
   310   </define>
   325   </define>
   311   <!-- ~~~~~~ publisher -->
   326   <!-- ~~~~~~ firstname, secondname, lastname, label -->
   312   <define name="publisher">
       
   313     <element name="publisher">
       
   314       <ref name="publisher.content"/>
       
   315     </element>
       
   316   </define>
       
   317   <define name="publisher.content">
       
   318     <ref name="label"/>
       
   319     <optional>
       
   320       <ref name="link"/>
       
   321     </optional>
       
   322   </define>
       
   323   <!-- ~~~~~~ firstname -->
       
   324   <define name="firstname">
   327   <define name="firstname">
   325     <element name="firstname">
   328     <element name="firstname">
   326       <ref name="firstname.content"/>
   329       <ref name="firstname.content"/>
   327     </element>
   330     </element>
   328   </define>
   331   </define>
   329   <define name="firstname.content">
   332   <define name="secondname">
   330     <ref name="inlines"/>
   333     <element name="secondname">
   331   </define>
   334       <ref name="secondname.content"/>
   332   <!-- ~~~~~~ lastname -->
   335     </element>
       
   336   </define>
   333   <define name="lastname">
   337   <define name="lastname">
   334     <element name="lastname">
   338     <element name="lastname">
   335       <ref name="lastname.content"/>
   339       <ref name="lastname.content"/>
   336     </element>
   340     </element>
   337   </define>
   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>
   338   <define name="lastname.content">
   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">
   339     <ref name="inlines"/>
   366     <ref name="inlines"/>
   340   </define>
   367   </define>
   341   <!-- ~~~~~~ role -->
   368   <!-- ~~~~~~ role -->
   342   <define name="role">
   369   <define name="role">
   343     <element name="role">
   370     <element name="role">
   344       <ref name="role.attributes"/>
   371       <ref name="role.content"/>
   345     </element>
   372     </element>
   346   </define>
   373   </define>
   347   <define name="role.attributes">
   374   <define name="role.content">
   348     <ref name="role.of.attribute"/>
   375     <choice>
   349   </define>
   376       <value>author</value>
   350   <define name="role.of.attribute">
   377       <value>illustrator</value>
   351     <attribute name="of">
   378       <value>publisher</value>
   352       <choice>
   379     </choice>
   353         <value>author</value>
       
   354         <value>illustrator</value>
       
   355       </choice>
       
   356     </attribute>
       
   357   </define>
       
   358   <!-- ~~~~~~ label -->
       
   359   <define name="label">
       
   360     <element name="label">
       
   361       <ref name="label.content"/>
       
   362     </element>
       
   363   </define>
       
   364   <define name="label.content">
       
   365     <ref name="inlines"/>
       
   366   </define>
   380   </define>
   367   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ place ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   381   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ place ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   368   <define name="place">
   382   <define name="place">
   369     <element name="place">
   383     <element name="place">
   370       <ref name="place.content"/>
   384       <ref name="place.content"/>
   712       <ref name="item.content"/>
   726       <ref name="item.content"/>
   713     </element>
   727     </element>
   714   </define>
   728   </define>
   715   <define name="item.content">
   729   <define name="item.content">
   716     <choice>
   730     <choice>
   717       <ref name="inlines"/>
       
   718       <oneOrMore>
   731       <oneOrMore>
   719         <ref name="block"/>
   732         <ref name="block"/>
   720       </oneOrMore>
   733       </oneOrMore>
       
   734       <ref name="inlines"/>
   721     </choice>
   735     </choice>
   722   </define>
   736   </define>
   723   <!-- ~~~~~~ glossary.item -->
   737   <!-- ~~~~~~ glossary.item -->
   724   <define name="glossary.item">
   738   <define name="glossary.item">
   725     <element name="item">
   739     <element name="item">