RelaxNG/publiset.rng
changeset 38 3c8b406be906
parent 36 d23cfb7be79e
child 39 7faa356bad3e
equal deleted inserted replaced
37:83b7ec3c3132 38:3c8b406be906
   193   </define>
   193   </define>
   194   <define name="title.content">
   194   <define name="title.content">
   195     <ref name="inlines"/>
   195     <ref name="inlines"/>
   196   </define>
   196   </define>
   197   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ identifier ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   197   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ identifier ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
       
   198   <define name="identifier.uri">
       
   199     <element name="identifier">
       
   200       <attribute name="type">
       
   201         <value>uri</value>
       
   202       </attribute>
       
   203       <data type="anyURI"/>
       
   204     </element>
       
   205   </define>
       
   206   <define name="identifier.ean">
       
   207     <element name="identifier">
       
   208       <attribute name="type">
       
   209         <value>ean</value>
       
   210       </attribute>
       
   211       <data type="token">
       
   212         <param name="pattern">\d{13}</param>
       
   213       </data>
       
   214     </element>
       
   215   </define>
   198   <define name="identifier">
   216   <define name="identifier">
   199     <element name="identifier">
       
   200       <ref name="identifier.content"/>
       
   201       <ref name="identifier.attributes"/>
       
   202     </element>
       
   203   </define>
       
   204   <define name="identifier.attributes">
       
   205     <ref name="class.attribute"/>
       
   206   </define>
       
   207   <define name="class.attribute">
       
   208     <attribute name="class">
       
   209       <choice>
       
   210         <value>uri</value>
       
   211         <value>ean</value>
       
   212       </choice>
       
   213     </attribute>
       
   214   </define>
       
   215   <define name="identifier.content">
       
   216     <choice>
   217     <choice>
   217       <data type="anyURI"/>
   218       <ref name="identifier.uri"/>
   218       <data type="NMTOKEN"/>
   219       <ref name="identifier.ean"/>
   219     </choice>
   220     </choice>
   220   </define>
   221   </define>
   221   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ language ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   222   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ language ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   222   <define name="language">
   223   <define name="language">
   223     <element name="language">
   224     <element name="language">
   289     </element>
   290     </element>
   290   </define>
   291   </define>
   291   <define name="lastname.content">
   292   <define name="lastname.content">
   292     <ref name="inlines"/>
   293     <ref name="inlines"/>
   293   </define>
   294   </define>
       
   295   <!-- ~~~~~~ role -->
       
   296   <define name="role">
       
   297     <element name="role">
       
   298       <ref name="role.attributes"/>
       
   299     </element>
       
   300   </define>
       
   301   <define name="role.attributes">
       
   302     <ref name="role.of.attribute"/>
       
   303   </define>
       
   304   <define name="role.of.attribute">
       
   305     <attribute name="of">
       
   306       <choice>
       
   307         <value>author</value>
       
   308         <value>illustrator</value>
       
   309       </choice>
       
   310     </attribute>
       
   311   </define>
   294   <!-- ~~~~~~ label -->
   312   <!-- ~~~~~~ label -->
   295   <define name="label">
   313   <define name="label">
   296     <element name="label">
   314     <element name="label">
   297       <ref name="label.content"/>
   315       <ref name="label.content"/>
   298     </element>
   316     </element>
   299   </define>
   317   </define>
   300   <define name="label.content">
   318   <define name="label.content">
   301     <ref name="inlines"/>
   319     <ref name="inlines"/>
   302   </define>
   320   </define>
   303   <!-- ~~~~~~ role -->
       
   304   <define name="role">
       
   305     <element name="role">
       
   306       <ref name="role.attributes"/>
       
   307     </element>
       
   308   </define>
       
   309   <define name="role.attributes">
       
   310     <ref name="role.of.attribute"/>
       
   311   </define>
       
   312   <define name="role.of.attribute">
       
   313     <attribute name="of">
       
   314       <choice>
       
   315         <value>author</value>
       
   316         <value>illustrator</value>
       
   317       </choice>
       
   318     </attribute>
       
   319   </define>
       
   320   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ source ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   321   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ source ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   321   <!-- ~~~~~~ source -->
   322   <!-- ~~~~~~ source -->
   322   <define name="source">
   323   <define name="source">
   323     <element name="source">
   324     <element name="source">
   324       <ref name="source.attributes"/>
       
   325       <choice>
   325       <choice>
   326         <group>
   326         <group>
   327           <attribute name="type">
   327           <attribute name="type">
   328             <value>book</value>
   328             <value>book</value>
   329           </attribute>
   329           </attribute>
   330           <ref name="source.content.book"/>
   330           <ref name="source.content.book"/>
   331         </group>
   331         </group>
   332         <attribute name="type">
   332         <group>
   333           <value>file</value>
   333           <attribute name="type">
   334         </attribute>
   334             <value>file</value>
   335       </choice>
   335           </attribute>
   336     </element>
   336           <ref name="source.content.file"/>
   337   </define>
   337         </group>
   338   <define name="source.attributes">
   338       </choice>
   339     <interleave>
   339     </element>
   340       <optional>
       
   341         <ref name="source.id.attribute"/>
       
   342       </optional>
       
   343       <ref name="remap.attributes"/>
       
   344     </interleave>
       
   345   </define>
       
   346   <define name="source.id.attribute">
       
   347     <attribute name="id">
       
   348       <data type="NMTOKEN"/>
       
   349     </attribute>
       
   350   </define>
   340   </define>
   351   <define name="source.content.book">
   341   <define name="source.content.book">
       
   342     <ref name="identifier.ean"/>
   352     <optional>
   343     <optional>
   353       <ref name="title"/>
   344       <ref name="title"/>
   354     </optional>
   345     </optional>
   355     <optional>
   346     <zeroOrMore>
   356       <ref name="pagenumber"/>
   347       <ref name="pagenumber"/>
   357     </optional>
   348     </zeroOrMore>
       
   349   </define>
       
   350   <define name="source.content.file">
       
   351     <ref name="identifier.uri"/>
   358   </define>
   352   </define>
   359   <!-- ~~~~~~ pagenumber -->
   353   <!-- ~~~~~~ pagenumber -->
   360   <define name="pagenumber">
   354   <define name="pagenumber">
   361     <element name="pagenumber">
   355     <element name="pagenumber">
   362       <ref name="pagenumber.attributes"/>
   356       <ref name="pagenumber.attributes"/>