RelaxNG/publidoc.rng
changeset 12 2885b2c3ff59
parent 11 2b32b535705c
child 17 ca367d4d080b
--- a/RelaxNG/publidoc.rng	sam. juin 11 01:26:31 2011 +0200
+++ b/RelaxNG/publidoc.rng	sam. juin 11 12:43:52 2011 +0200
@@ -438,7 +438,7 @@
       <group>
         <optional>
           <attribute name="type">
-            <value>itemized</value>
+            <value>ordered</value>
           </attribute>
         </optional>
         <ref name="item"/>
@@ -448,15 +448,6 @@
       </group>
       <group>
         <attribute name="type">
-          <value>ordered</value>
-        </attribute>
-        <ref name="item"/>
-        <oneOrMore>
-          <ref name="item"/>
-        </oneOrMore>
-      </group>
-      <group>
-        <attribute name="type">
           <value>glossary</value>
         </attribute>
         <oneOrMore>
@@ -497,7 +488,7 @@
   <define name="label.content">
     <ref name="inlines"/>
   </define>
-  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ speech ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ speech ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   <!-- ~~~~~~ speech -->
   <define name="speech">
     <element name="speech">
@@ -604,7 +595,7 @@
           <ref name="sub"/>
         </zeroOrMore>
         <zeroOrMore>
-          <ref name="romannum"/>
+          <ref name="number"/>
         </zeroOrMore>
         <zeroOrMore>
           <ref name="date"/>
@@ -647,14 +638,49 @@
       <ref name="inlines"/>
     </element>
   </define>
-  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ romannum ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
-  <define name="romannum">
-    <element name="romannum">
-      <data type="token">
-        <param name="pattern">([dlxvi]+)</param>
-      </data>
+  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ number ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+  <define name="number">
+    <element name="number">
+      <choice>
+        <group>
+          <attribute name="type">
+            <value>roman</value>
+          </attribute>
+          <ref name="number.attributes"/>
+          <ref name="number.roman.content"/>
+        </group>
+        <group>
+          <ref name="number.attributes"/>
+          <ref name="number.content"/>
+        </group>
+      </choice>
     </element>
   </define>
+  <define name="number.attributes">
+    <optional>
+      <ref name="number.value.attribute"/>
+    </optional>
+  </define>
+  <define name="number.value.attribute">
+    <attribute name="value">
+      <choice>
+        <data type="integer"/>
+        <data type="decimal"/>
+      </choice>
+    </attribute>
+  </define>
+  <define name="number.content">
+    <mixed>
+      <zeroOrMore>
+        <ref name="sup"/>
+      </zeroOrMore>
+    </mixed>
+  </define>
+  <define name="number.roman.content">
+    <data type="token">
+      <param name="pattern">[dlxvi]+</param>
+    </data>
+  </define>
   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ date ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   <define name="date">
     <element name="date">
@@ -663,9 +689,21 @@
     </element>
   </define>
   <define name="date.attributes">
-    <optional>
-      <ref name="date.of.attribute"/>
-    </optional>
+    <interleave>
+      <ref name="date.value.attribute"/>
+      <optional>
+        <ref name="date.of.attribute"/>
+      </optional>
+    </interleave>
+  </define>
+  <define name="date.value.attribute">
+    <attribute name="value">
+      <choice>
+        <data type="date"/>
+        <data type="gYearMonth"/>
+        <data type="gYear"/>
+      </choice>
+    </attribute>
   </define>
   <define name="date.of.attribute">
     <attribute name="of">
@@ -674,17 +712,16 @@
   </define>
   <define name="date.of.enumeration">
     <choice>
-      <value>event</value>
       <value>birth</value>
       <value>death</value>
     </choice>
   </define>
   <define name="date.content">
-    <choice>
-      <data type="date"/>
-      <data type="gYearMonth"/>
-      <data type="gYear"/>
-    </choice>
+    <mixed>
+      <zeroOrMore>
+        <ref name="sup"/>
+      </zeroOrMore>
+    </mixed>
   </define>
   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ name ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   <define name="name">
@@ -735,7 +772,7 @@
       <ref name="parag"/>
     </oneOrMore>
   </define>
-  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ foreign ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ foreign ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   <define name="foreign">
     <element name="foreign">
       <ref name="foreign.attributes"/>