RelaxNG/publiset.rng
changeset 38 3c8b406be906
parent 36 d23cfb7be79e
child 39 7faa356bad3e
--- a/RelaxNG/publiset.rng	mar. juil. 19 18:16:50 2011 +0200
+++ b/RelaxNG/publiset.rng	mer. juil. 20 14:38:48 2011 +0200
@@ -195,27 +195,28 @@
     <ref name="inlines"/>
   </define>
   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ identifier ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
-  <define name="identifier">
+  <define name="identifier.uri">
     <element name="identifier">
-      <ref name="identifier.content"/>
-      <ref name="identifier.attributes"/>
+      <attribute name="type">
+        <value>uri</value>
+      </attribute>
+      <data type="anyURI"/>
     </element>
   </define>
-  <define name="identifier.attributes">
-    <ref name="class.attribute"/>
+  <define name="identifier.ean">
+    <element name="identifier">
+      <attribute name="type">
+        <value>ean</value>
+      </attribute>
+      <data type="token">
+        <param name="pattern">\d{13}</param>
+      </data>
+    </element>
   </define>
-  <define name="class.attribute">
-    <attribute name="class">
-      <choice>
-        <value>uri</value>
-        <value>ean</value>
-      </choice>
-    </attribute>
-  </define>
-  <define name="identifier.content">
+  <define name="identifier">
     <choice>
-      <data type="anyURI"/>
-      <data type="NMTOKEN"/>
+      <ref name="identifier.uri"/>
+      <ref name="identifier.ean"/>
     </choice>
   </define>
   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ language ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
@@ -291,15 +292,6 @@
   <define name="lastname.content">
     <ref name="inlines"/>
   </define>
-  <!-- ~~~~~~ label -->
-  <define name="label">
-    <element name="label">
-      <ref name="label.content"/>
-    </element>
-  </define>
-  <define name="label.content">
-    <ref name="inlines"/>
-  </define>
   <!-- ~~~~~~ role -->
   <define name="role">
     <element name="role">
@@ -317,11 +309,19 @@
       </choice>
     </attribute>
   </define>
+  <!-- ~~~~~~ label -->
+  <define name="label">
+    <element name="label">
+      <ref name="label.content"/>
+    </element>
+  </define>
+  <define name="label.content">
+    <ref name="inlines"/>
+  </define>
   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ source ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   <!-- ~~~~~~ source -->
   <define name="source">
     <element name="source">
-      <ref name="source.attributes"/>
       <choice>
         <group>
           <attribute name="type">
@@ -329,32 +329,26 @@
           </attribute>
           <ref name="source.content.book"/>
         </group>
-        <attribute name="type">
-          <value>file</value>
-        </attribute>
+        <group>
+          <attribute name="type">
+            <value>file</value>
+          </attribute>
+          <ref name="source.content.file"/>
+        </group>
       </choice>
     </element>
   </define>
-  <define name="source.attributes">
-    <interleave>
-      <optional>
-        <ref name="source.id.attribute"/>
-      </optional>
-      <ref name="remap.attributes"/>
-    </interleave>
-  </define>
-  <define name="source.id.attribute">
-    <attribute name="id">
-      <data type="NMTOKEN"/>
-    </attribute>
-  </define>
   <define name="source.content.book">
+    <ref name="identifier.ean"/>
     <optional>
       <ref name="title"/>
     </optional>
-    <optional>
+    <zeroOrMore>
       <ref name="pagenumber"/>
-    </optional>
+    </zeroOrMore>
+  </define>
+  <define name="source.content.file">
+    <ref name="identifier.uri"/>
   </define>
   <!-- ~~~~~~ pagenumber -->
   <define name="pagenumber">