RelaxNG/publiset.rng
changeset 5 69310bc35b63
parent 2 417bb62f2a77
child 20 79713ffae179
--- a/RelaxNG/publiset.rng	dim. juin 05 23:51:15 2011 +0200
+++ b/RelaxNG/publiset.rng	lun. juin 06 21:51:00 2011 +0200
@@ -117,15 +117,26 @@
     <ref name="remap.attributes"/>
   </define>
   <define name="metadata.content">
-    <optional>
-      <ref name="title"/>
-    </optional>
-    <optional>
-      <ref name="subtitle"/>
-    </optional>
-    <optional>
-      <ref name="source"/>
-    </optional>
+    <interleave>
+      <optional>
+        <ref name="title"/>
+      </optional>
+      <optional>
+        <ref name="subtitle"/>
+      </optional>
+      <zeroOrMore>
+        <ref name="author"/>
+      </zeroOrMore>
+      <optional>
+        <ref name="publisher"/>
+      </optional>
+      <optional>
+        <ref name="language"/>
+      </optional>
+      <optional>
+        <ref name="source"/>
+      </optional>
+    </interleave>
   </define>
   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ title, subtitle ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   <define name="title">
@@ -141,6 +152,60 @@
       <ref name="title.content"/>
     </element>
   </define>
+  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ author, publisher ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+  <!-- ~~~~~~ author -->
+  <define name="author">
+    <element name="author">
+      <ref name="author.content"/>
+    </element>
+  </define>
+  <define name="author.content">
+    <optional>
+      <ref name="firstname"/>
+    </optional>
+    <ref name="lastname"/>
+  </define>
+  <!-- ~~~~~~ publisher -->
+  <define name="publisher">
+    <element name="publisher">
+      <ref name="publisher.content"/>
+    </element>
+  </define>
+  <define name="publisher.content">
+    <ref name="inlines"/>
+  </define>
+  <!-- ~~~~~~ firstname -->
+  <define name="firstname">
+    <element name="firstname">
+      <ref name="firstname.content"/>
+    </element>
+  </define>
+  <define name="firstname.content">
+    <ref name="inlines"/>
+  </define>
+  <!-- ~~~~~~ lastname -->
+  <define name="lastname">
+    <element name="lastname">
+      <ref name="lastname.content"/>
+    </element>
+  </define>
+  <define name="lastname.content">
+    <ref name="inlines"/>
+  </define>
+  <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Language ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+  <define name="language">
+    <element name="language">
+      <ref name="language.attributes"/>
+    </element>
+  </define>
+  <define name="language.attributes">
+    <ref name="lang.attribute"/>
+  </define>
+  <define name="lang.attribute">
+    <attribute name="xml:lang">
+      <data type="language"/>
+    </attribute>
+  </define>
   <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ source ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
   <!-- ~~~~~~ source -->
   <define name="source">