RelaxNG/publiset.rnc
changeset 189 951f1a25efc5
parent 181 cc8a32283e9d
child 215 c9959ed4ba48
--- a/RelaxNG/publiset.rnc	sam. avril 06 14:17:18 2013 +0200
+++ b/RelaxNG/publiset.rnc	dim. avril 07 17:05:34 2013 +0200
@@ -53,11 +53,13 @@
 
 composition.head.content =
    (title, shorttitle?, subtitle?)?
- & identifier*
+ & (identifier, identifier?)?
  & copyright*
  & collection?
  & contributors?
+ & date?
  & keywordset?
+ & subjectset?
  & abstract?
  & cover?
 
@@ -224,7 +226,7 @@
 
 role.content = "author" | "illustrator" | "publisher" | "packager"
 
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ keyword ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ keyword & subject ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 # ~~~~~~ keywordset
 keywordset = element keywordset { keywordset.content }
@@ -236,6 +238,16 @@
 
 keyword.content = mixed { sup*, sub* }
 
+# ~~~~~~ subjectset
+subjectset = element subjectset { subjectset.content }
+
+subjectset.content = subject+
+
+# ~~~~~~ subject
+subject = element subject { subject.content }
+
+subject.content = xsd:NMTOKEN
+
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ abstract ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 abstract = element abstract { abstract.content }
@@ -266,8 +278,10 @@
 inlines = mixed {
    sup*
  & sub*
+ & date*
  & name*
  & highlight*
+ & link*
 }
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sub, sup ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -276,6 +290,16 @@
 
 sub = element sub { inlines }
 
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ date ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+date = element date { date.attributes, date.content }
+
+date.attributes =
+   date.value.attribute
+date.value.attribute = attribute value { xsd:date | xsd:gYearMonth | xsd:gYear }
+
+date.content = mixed { sup* }
+
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ name ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 name = element name { name.attributes, name.content }
@@ -283,7 +307,7 @@
 name.attributes =
    name.of.attribute?
 name.of.attribute = attribute of
-   { "person" | "company" | "book" | "newspaper" | "party" }
+   { "person" | "company" | "book" | "newspaper" | "party" | "painting" }
 
 name.content = inlines