RelaxNG/publiset.rnc
changeset 34 c51d5097d065
parent 30 c0f9e813c039
child 35 de4114d12ef1
--- a/RelaxNG/publiset.rnc	lun. juil. 18 19:10:28 2011 +0200
+++ b/RelaxNG/publiset.rnc	lun. juil. 18 23:35:32 2011 +0200
@@ -74,6 +74,7 @@
 
 top.head.content =
    (title, subtitle?)?
+ & identifier*
  & language?
  & author*
  & publisher?
@@ -89,6 +90,16 @@
 
 title.content = inlines
 
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ identifier ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+identifier = element identifier { identifier.content, identifier.attributes }
+
+identifier.attributes =
+   class.attribute
+class.attribute = attribute class { "uri" | "ean" }
+
+identifier.content =  xsd:anyURI | xsd:NMTOKEN
+
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ language ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 language = element language { language.attributes }
@@ -101,14 +112,21 @@
 # ~~~~~~ author
 author = element author { author.content }
 
+author.attributes =
+   role.attribute?
+role.attribute = attribute role { "author" | "illustrator" }
+
 author.content =
    firstname?,
-   lastname
+   lastname,
+   role*
 
 # ~~~~~~ publisher
 publisher = element publisher { publisher.content }
 
-publisher.content = inlines
+publisher.content =
+   label,
+   url?
 
 # ~~~~~~ firstname
 firstname = element firstname { firstname.content }
@@ -120,6 +138,23 @@
 
 lastname.content = inlines
 
+# ~~~~~~ label
+label = element label { label.content }
+
+label.content = inlines
+
+# ~~~~~~ role
+role = element role { role.attributes }
+
+role.attributes =
+   role.of.attribute
+role.of.attribute = attribute of { "author" | "illustrator" }
+
+# ~~~~~~ url
+url = element url { url.content }
+
+url.content = xsd:anyURI
+
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ source ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 # ~~~~~~ source