RelaxNG/publiset.rng
changeset 20 79713ffae179
parent 5 69310bc35b63
child 21 7c09024d5634
equal deleted inserted replaced
19:7141fd097b97 20:79713ffae179
    26       </choice>
    26       </choice>
    27     </oneOrMore>
    27     </oneOrMore>
    28   </define>
    28   </define>
    29   <!--
    29   <!--
    30     =============================================================================
    30     =============================================================================
    31                                      Top level
    31                                      TOP LEVEL
    32     =============================================================================
    32     =============================================================================
    33   -->
    33   -->
    34   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ composition ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    34   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ composition ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    35   <define name="composition">
    35   <define name="composition">
    36     <element name="composition">
    36     <element name="composition">
    57       <data type="anyURI"/>
    57       <data type="anyURI"/>
    58     </attribute>
    58     </attribute>
    59   </define>
    59   </define>
    60   <define name="composition.content">
    60   <define name="composition.content">
    61     <optional>
    61     <optional>
    62       <ref name="composition.metadata"/>
    62       <ref name="composition.head"/>
    63     </optional>
    63     </optional>
    64     <oneOrMore>
    64     <oneOrMore>
    65       <choice>
    65       <choice>
    66         <ref name="composition.file"/>
    66         <ref name="composition.file"/>
    67         <ref name="composition.division"/>
    67         <ref name="composition.division"/>
    85       <data type="ID"/>
    85       <data type="ID"/>
    86     </attribute>
    86     </attribute>
    87   </define>
    87   </define>
    88   <define name="selection.content">
    88   <define name="selection.content">
    89     <optional>
    89     <optional>
    90       <ref name="selection.metadata"/>
    90       <ref name="selection.head"/>
    91     </optional>
    91     </optional>
    92     <oneOrMore>
    92     <oneOrMore>
    93       <choice>
    93       <choice>
    94         <ref name="selection.file"/>
    94         <ref name="selection.file"/>
    95         <ref name="selection.division"/>
    95         <ref name="selection.division"/>
    96       </choice>
    96       </choice>
    97     </oneOrMore>
    97     </oneOrMore>
    98   </define>
    98   </define>
    99   <!--
    99   <!--
   100     =============================================================================
   100     =============================================================================
   101                                     Metadata level
   101                                      HEAD LEVEL
   102     =============================================================================
   102     =============================================================================
   103   -->
   103   -->
   104   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ metadata ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   104   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ head ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   105   <define name="composition.metadata">
   105   <define name="composition.head">
   106     <element name="metadata">
   106     <element name="head">
   107       <ref name="metadata.attributes"/>
   107       <ref name="head.attributes"/>
   108       <ref name="metadata.content"/>
   108       <ref name="top.head.content"/>
   109     </element>
   109     </element>
   110   </define>
   110   </define>
   111   <define name="selection.metadata">
   111   <define name="selection.head">
   112     <element name="metadata">
   112     <element name="head">
   113       <ref name="metadata.content"/>
   113       <ref name="top.head.content"/>
   114     </element>
   114     </element>
   115   </define>
   115   </define>
   116   <define name="metadata.attributes">
   116   <define name="division.head">
       
   117     <element name="head">
       
   118       <ref name="division.head.content"/>
       
   119     </element>
       
   120   </define>
       
   121   <define name="head.attributes">
   117     <ref name="remap.attributes"/>
   122     <ref name="remap.attributes"/>
   118   </define>
   123   </define>
   119   <define name="metadata.content">
   124   <define name="top.head.content">
   120     <interleave>
   125     <interleave>
   121       <optional>
   126       <optional>
   122         <ref name="title"/>
   127         <ref name="title"/>
   123       </optional>
   128         <optional>
   124       <optional>
   129           <ref name="subtitle"/>
   125         <ref name="subtitle"/>
   130         </optional>
       
   131       </optional>
       
   132       <optional>
       
   133         <ref name="language"/>
   126       </optional>
   134       </optional>
   127       <zeroOrMore>
   135       <zeroOrMore>
   128         <ref name="author"/>
   136         <ref name="author"/>
   129       </zeroOrMore>
   137       </zeroOrMore>
   130       <optional>
   138       <optional>
   131         <ref name="publisher"/>
   139         <ref name="publisher"/>
   132       </optional>
   140       </optional>
   133       <optional>
   141       <optional>
       
   142         <ref name="source"/>
       
   143       </optional>
       
   144     </interleave>
       
   145   </define>
       
   146   <define name="division.head.content">
       
   147     <interleave>
       
   148       <optional>
       
   149         <ref name="title"/>
       
   150         <optional>
       
   151           <ref name="subtitle"/>
       
   152         </optional>
       
   153       </optional>
       
   154       <optional>
   134         <ref name="language"/>
   155         <ref name="language"/>
   135       </optional>
   156       </optional>
   136       <optional>
   157       <zeroOrMore>
   137         <ref name="source"/>
   158         <ref name="annotation"/>
   138       </optional>
   159       </zeroOrMore>
   139     </interleave>
   160     </interleave>
   140   </define>
   161   </define>
   141   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ title, subtitle ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   162   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ title, subtitle ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   142   <define name="title">
   163   <define name="title">
   143     <element name="title">
   164     <element name="title">
   144       <ref name="title.content"/>
   165       <ref name="title.content"/>
   145     </element>
   166     </element>
   146   </define>
   167   </define>
   147   <define name="title.content">
       
   148     <ref name="inlines"/>
       
   149   </define>
       
   150   <define name="subtitle">
   168   <define name="subtitle">
   151     <element name="subtitle">
   169     <element name="subtitle">
   152       <ref name="title.content"/>
   170       <ref name="title.content"/>
   153     </element>
   171     </element>
       
   172   </define>
       
   173   <define name="title.content">
       
   174     <ref name="inlines"/>
       
   175   </define>
       
   176   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ language ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
       
   177   <define name="language">
       
   178     <element name="language">
       
   179       <ref name="language.attributes"/>
       
   180     </element>
       
   181   </define>
       
   182   <define name="language.attributes">
       
   183     <ref name="lang.attribute"/>
       
   184   </define>
       
   185   <define name="lang.attribute">
       
   186     <attribute name="xml:lang">
       
   187       <data type="language"/>
       
   188     </attribute>
   154   </define>
   189   </define>
   155   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ author, publisher ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   190   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ author, publisher ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   156   <!-- ~~~~~~ author -->
   191   <!-- ~~~~~~ author -->
   157   <define name="author">
   192   <define name="author">
   158     <element name="author">
   193     <element name="author">
   189       <ref name="lastname.content"/>
   224       <ref name="lastname.content"/>
   190     </element>
   225     </element>
   191   </define>
   226   </define>
   192   <define name="lastname.content">
   227   <define name="lastname.content">
   193     <ref name="inlines"/>
   228     <ref name="inlines"/>
   194   </define>
       
   195   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Language ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
       
   196   <define name="language">
       
   197     <element name="language">
       
   198       <ref name="language.attributes"/>
       
   199     </element>
       
   200   </define>
       
   201   <define name="language.attributes">
       
   202     <ref name="lang.attribute"/>
       
   203   </define>
       
   204   <define name="lang.attribute">
       
   205     <attribute name="xml:lang">
       
   206       <data type="language"/>
       
   207     </attribute>
       
   208   </define>
   229   </define>
   209   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ source ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   230   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ source ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   210   <!-- ~~~~~~ source -->
   231   <!-- ~~~~~~ source -->
   211   <define name="source">
   232   <define name="source">
   212     <element name="source">
   233     <element name="source">
   262   <define name="pagenumber.value.enumeration">
   283   <define name="pagenumber.value.enumeration">
   263     <data type="positiveInteger"/>
   284     <data type="positiveInteger"/>
   264   </define>
   285   </define>
   265   <!--
   286   <!--
   266     =============================================================================
   287     =============================================================================
   267                                    Division level
   288                                    DIVISION LEVEL
   268     =============================================================================
   289     =============================================================================
   269   -->
   290   -->
   270   <define name="composition.division">
   291   <define name="composition.division">
   271     <element name="division">
   292     <element name="division">
   272       <ref name="composition.division.attributes"/>
   293       <ref name="composition.division.attributes"/>
   292       <ref name="base.attribute"/>
   313       <ref name="base.attribute"/>
   293     </optional>
   314     </optional>
   294   </define>
   315   </define>
   295   <define name="composition.division.content">
   316   <define name="composition.division.content">
   296     <optional>
   317     <optional>
   297       <ref name="composition.metadata"/>
   318       <ref name="composition.head"/>
   298     </optional>
   319     </optional>
   299     <oneOrMore>
   320     <oneOrMore>
   300       <choice>
   321       <choice>
       
   322         <ref name="composition.division"/>
   301         <ref name="composition.file"/>
   323         <ref name="composition.file"/>
   302         <ref name="composition.division"/>
       
   303       </choice>
   324       </choice>
   304     </oneOrMore>
   325     </oneOrMore>
   305   </define>
   326   </define>
   306   <define name="selection.division.content">
   327   <define name="selection.division.content">
   307     <optional>
   328     <optional>
   308       <ref name="selection.metadata"/>
   329       <ref name="selection.head"/>
   309     </optional>
   330     </optional>
   310     <oneOrMore>
   331     <oneOrMore>
   311       <choice>
   332       <choice>
       
   333         <ref name="selection.division"/>
   312         <ref name="selection.file"/>
   334         <ref name="selection.file"/>
   313         <ref name="selection.division"/>
       
   314       </choice>
   335       </choice>
   315     </oneOrMore>
   336     </oneOrMore>
   316   </define>
   337   </define>
   317   <!--
   338   <!--
   318     =============================================================================
   339     =============================================================================
   319                                      File level
   340                                      FILE LEVEL
   320     =============================================================================
   341     =============================================================================
   321   -->
   342   -->
   322   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   343   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ file ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   323   <define name="composition.file">
   344   <define name="composition.file">
   324     <element name="file">
   345     <element name="file">
   335   <define name="composition.file.attributes">
   356   <define name="composition.file.attributes">
   336     <interleave>
   357     <interleave>
   337       <optional>
   358       <optional>
   338         <ref name="xpath.attribute"/>
   359         <ref name="xpath.attribute"/>
   339       </optional>
   360       </optional>
       
   361       <optional>
       
   362         <ref name="transform.attribute"/>
       
   363       </optional>
   340       <ref name="remap.attributes"/>
   364       <ref name="remap.attributes"/>
   341     </interleave>
   365     </interleave>
   342   </define>
   366   </define>
   343   <define name="selection.file.attributes">
   367   <define name="selection.file.attributes">
   344     <optional>
   368     <interleave>
   345       <ref name="xpath.attribute"/>
   369       <optional>
   346     </optional>
   370         <ref name="xpath.attribute"/>
       
   371       </optional>
       
   372       <optional>
       
   373         <ref name="transform.attribute"/>
       
   374       </optional>
       
   375     </interleave>
   347   </define>
   376   </define>
   348   <define name="xpath.attribute">
   377   <define name="xpath.attribute">
   349     <attribute name="xpath"/>
   378     <attribute name="xpath"/>
   350   </define>
   379   </define>
       
   380   <define name="transform.attribute">
       
   381     <attribute name="transform">
       
   382       <list>
       
   383         <oneOrMore>
       
   384           <data type="token">
       
   385             <param name="pattern">(xsl|regex):\S+</param>
       
   386           </data>
       
   387         </oneOrMore>
       
   388       </list>
       
   389     </attribute>
       
   390   </define>
   351   <define name="file.content">
   391   <define name="file.content">
   352     <data type="anyURI"/>
   392     <data type="anyURI"/>
   353   </define>
   393   </define>
   354   <!--
   394   <!--
   355     =============================================================================
   395     =============================================================================
   356                                     Inline level
   396                                     INLINE LEVEL
   357     =============================================================================
   397     =============================================================================
   358   -->
   398   -->
   359   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   399   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ inlines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   360   <define name="inlines">
   400   <define name="inlines">
   361     <mixed>
   401     <mixed>
   380       <ref name="inlines"/>
   420       <ref name="inlines"/>
   381     </element>
   421     </element>
   382   </define>
   422   </define>
   383   <!--
   423   <!--
   384     =============================================================================
   424     =============================================================================
   385                                   Remap attributes
   425                                   REMAP ATTRIBUTES
   386     =============================================================================
   426     =============================================================================
   387   -->
   427   -->
   388   <define name="remap.attributes">
   428   <define name="remap.attributes">
   389     <interleave>
   429     <interleave>
   390       <optional>
   430       <optional>