RelaxNG/publidoc.rnc
changeset 5 69310bc35b63
parent 3 59e42ac69f8f
child 8 1d4ee28efd68
--- a/RelaxNG/publidoc.rnc	dim. juin 05 23:51:15 2011 +0200
+++ b/RelaxNG/publidoc.rnc	lun. juin 06 21:51:00 2011 +0200
@@ -69,16 +69,28 @@
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ author, publisher ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
+# ~~~~~~ author
 author = element author { author.content }
 
 author.content =
    firstname?,
    lastname
 
+# ~~~~~~ publisher
 publisher = element publisher { publisher.content }
 
 publisher.content = inlines
 
+# ~~~~~~ firstname
+firstname = element firstname { firstname.content }
+
+firstname.content = inlines
+
+# ~~~~~~ lastname
+lastname = element lastname { lastname.content }
+
+lastname.content = inlines
+
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Language ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 language = element language { language.attributes }
@@ -134,7 +146,7 @@
    subject.id.attribute
 subject.id.attribute = attribute id { xsd:NMTOKEN }
 
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ abstract ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ abstract ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 abstract = element abstract { abstract.content }
 
@@ -194,7 +206,7 @@
 section.content =
    metadata?,
    (section+
-    | (parag | media)+)
+    | (parag | media | speech)+)
 
 section.attributes =
    status.attribute?
@@ -245,6 +257,27 @@
 copyright.content = inlines
 
 
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ speech ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+# ~~~~~~ speech
+speech = element speech { speech.content }
+
+speech.content =
+   speaker?,
+   stage?,
+   parag+
+
+# ~~~~~~ speaker
+speaker = element speaker { speaker.content }
+
+speaker.content = inlines
+
+# ~~~~~~ stage
+stage = element stage { stage.content }
+
+stage.content = inlines
+
+
 # =============================================================================
 #                                 Inline level
 # =============================================================================
@@ -257,9 +290,12 @@
  & romannum*
  & date*
  & name*
- & footnote*
+ & note*
  & foreign*
  & highlight*
+ & term*
+ & mentioned*
+ & quote*
 }
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ sub, sup ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -277,7 +313,7 @@
 date = element date { date.attributes, date.content }
 
 date.attributes =
-   date.of.attribute
+   date.of.attribute?
 date.of.attribute = attribute of { date.of.enumeration }
 date.of.enumeration = "event" | "birth" | "death"
 
@@ -285,10 +321,6 @@
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ name ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-firstname = element firstname { inlines }
-
-lastname = element lastname { inlines }
-
 name = element name { name.attributes, name.content }
 
 name.attributes =
@@ -298,15 +330,15 @@
 
 name.content = inlines
 
-# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ footnote ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ note ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-footnote = element footnote { footnote.attributes, footnote.content }
+note = element note { note.attributes, note.content }
 
-footnote.attributes =
-   footnote.label.attribute?
-footnote.label.attribute = attribute label { text }
+note.attributes =
+   note.label.attribute?
+note.label.attribute = attribute label { text }
 
-footnote.content =
+note.content =
    parag+
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ foreign ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -323,6 +355,24 @@
 
 highlight.content = inlines
 
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ term ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+term = element term { term.content }
+
+term.content = inlines
+
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ mentioned ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+mentioned = element mentioned { mentioned.content }
+
+mentioned.content = inlines
+
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ quote ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+quote = element quote { quote.content }
+
+quote.content = inlines
+
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ link ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 link = element link { link.attributes, link.content }