--- a/RelaxNG/publiset.rng ven. déc. 30 09:44:50 2011 +0100
+++ b/RelaxNG/publiset.rng jeu. janv. 05 20:10:05 2012 +0100
@@ -51,6 +51,9 @@
<ref name="xslt.attribute"/>
</optional>
<ref name="remap.attributes"/>
+ <optional>
+ <ref name="lang.attribute"/>
+ </optional>
</interleave>
</define>
<define name="composition.id.attribute">
@@ -71,6 +74,11 @@
<define name="xpath.attribute">
<attribute name="xpath"/>
</define>
+ <define name="lang.attribute">
+ <attribute name="xml:lang">
+ <data type="language"/>
+ </attribute>
+ </define>
<define name="composition.content">
<optional>
<ref name="composition.head"/>
@@ -95,6 +103,9 @@
<optional>
<ref name="path.attribute"/>
</optional>
+ <optional>
+ <ref name="lang.attribute"/>
+ </optional>
</interleave>
</define>
<define name="selection.id.attribute">
@@ -151,16 +162,10 @@
<ref name="identifier"/>
</zeroOrMore>
<optional>
- <ref name="language"/>
+ <ref name="copyright"/>
</optional>
<optional>
- <ref name="copyright"/>
- </optional>
- <zeroOrMore>
- <ref name="author"/>
- </zeroOrMore>
- <optional>
- <ref name="publisher"/>
+ <ref name="contributors"/>
</optional>
<optional>
<ref name="abstract"/>
@@ -171,17 +176,12 @@
</interleave>
</define>
<define name="division.head.content">
- <interleave>
+ <optional>
+ <ref name="title"/>
<optional>
- <ref name="title"/>
- <optional>
- <ref name="subtitle"/>
- </optional>
+ <ref name="subtitle"/>
</optional>
- <optional>
- <ref name="language"/>
- </optional>
- </interleave>
+ </optional>
</define>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ title, subtitle ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<define name="title">
@@ -222,20 +222,6 @@
<ref name="identifier.ean"/>
</choice>
</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>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ copyright ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<define name="copyright">
<element name="copyright">
@@ -245,90 +231,101 @@
<define name="copyright.content">
<ref name="inlines"/>
</define>
- <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ author, publisher ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
- <!-- ~~~~~~ author -->
- <define name="author">
- <element name="author">
- <ref name="author.content"/>
+ <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ contributors ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <!-- ~~~~~~ contributors -->
+ <define name="contributors">
+ <element name="contributors">
+ <ref name="contributors.content"/>
</element>
</define>
- <define name="author.attributes">
+ <define name="contributors.content">
+ <oneOrMore>
+ <ref name="contributor"/>
+ </oneOrMore>
+ </define>
+ <!-- ~~~~~~ contributor -->
+ <define name="contributor">
+ <element name="contributor">
+ <ref name="contributor.content"/>
+ </element>
+ </define>
+ <define name="contributor.content">
+ <choice>
+ <group>
+ <optional>
+ <ref name="firstname"/>
+ <optional>
+ <ref name="secondname"/>
+ </optional>
+ </optional>
+ <ref name="lastname"/>
+ </group>
+ <ref name="label"/>
+ </choice>
<optional>
- <ref name="role.attribute"/>
+ <ref name="address"/>
</optional>
- </define>
- <define name="role.attribute">
- <attribute name="role">
- <choice>
- <value>author</value>
- <value>illustrator</value>
- </choice>
- </attribute>
- </define>
- <define name="author.content">
<optional>
- <ref name="firstname"/>
+ <ref name="link"/>
</optional>
- <ref name="lastname"/>
<zeroOrMore>
<ref name="role"/>
</zeroOrMore>
</define>
- <!-- ~~~~~~ publisher -->
- <define name="publisher">
- <element name="publisher">
- <ref name="publisher.content"/>
- </element>
- </define>
- <define name="publisher.content">
- <ref name="label"/>
- <optional>
- <ref name="link"/>
- </optional>
- </define>
- <!-- ~~~~~~ firstname -->
+ <!-- ~~~~~~ firstname, secondname, lastname, label -->
<define name="firstname">
<element name="firstname">
<ref name="firstname.content"/>
</element>
</define>
- <define name="firstname.content">
- <ref name="inlines"/>
+ <define name="secondname">
+ <element name="secondname">
+ <ref name="secondname.content"/>
+ </element>
</define>
- <!-- ~~~~~~ lastname -->
<define name="lastname">
<element name="lastname">
<ref name="lastname.content"/>
</element>
</define>
+ <define name="label">
+ <element name="label">
+ <ref name="label.content"/>
+ </element>
+ </define>
+ <define name="firstname.content">
+ <ref name="inlines"/>
+ </define>
+ <define name="secondname.content">
+ <ref name="inlines"/>
+ </define>
<define name="lastname.content">
<ref name="inlines"/>
</define>
+ <define name="label.content">
+ <ref name="inlines"/>
+ </define>
+ <!-- ~~~~~~ address -->
+ <define name="address">
+ <element name="address">
+ <ref name="address.content"/>
+ </element>
+ </define>
+ <define name="address.content">
+ <ref name="inlines"/>
+ </define>
<!-- ~~~~~~ role -->
<define name="role">
<element name="role">
- <ref name="role.attributes"/>
+ <ref name="role.content"/>
</element>
</define>
- <define name="role.attributes">
- <ref name="role.of.attribute"/>
- </define>
- <define name="role.of.attribute">
- <attribute name="of">
- <choice>
- <value>author</value>
- <value>illustrator</value>
- </choice>
- </attribute>
- </define>
- <!-- ~~~~~~ label -->
- <define name="label">
- <element name="label">
- <ref name="label.content"/>
- </element>
- </define>
- <define name="label.content">
- <ref name="inlines"/>
+ <define name="role.content">
+ <choice>
+ <value>author</value>
+ <value>illustrator</value>
+ <value>publisher</value>
+ </choice>
</define>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ abstract ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<define name="abstract">