--- /dev/null jeu. janv. 01 00:00:00 1970 +0000
+++ b/RelaxNG/publianim.rnc mar. mars 15 15:02:12 2016 +0100
@@ -0,0 +1,165 @@
+
+
+include "publidoc.rnc" {
+ start = publianim
+
+ image.attributes =
+ media.id.attribute
+ & image.type.attribute?
+ & image.zoom.attribute?
+ & alt.attribute?
+
+ image.zoom.attribute = attribute zoom {"true" | "false"}
+
+ media.image.content =
+ copyright?,
+ hotspot*
+
+ audio.attributes =
+ media.id.attribute
+ & audio.type?
+ audio.type = attribute type { "music" | "voice" | "fr" | "en"
+ | "background" | "smil" }
+
+
+ inlines = mixed {
+ sup*
+ & sub*
+ & var*
+ & number*
+ & acronym*
+ & warning*
+
+ & highlight*
+ & emphasis*
+ & mentioned*
+ & literal*
+ & term*
+ & stage*
+ & name*
+ & foreign*
+ & date*
+ & math*
+ & quote*
+ & initial*
+ & note*
+ & link*
+ & anchor*
+ & index*
+ & image*
+ & audio*
+ & smil*
+ }
+
+}
+
+publianim = element publianim {
+ publianim.attributes,
+ publianim.content
+}
+
+publianim.attributes =
+ version.attribute
+
+publianim.content =
+ document
+ | top.topic
+
+
+# =============================================================================
+# BLOCK LEVEL
+# =============================================================================
+
+
+# ~~~~~~ hotspot
+# hotspot = element hotspot { hotspot.attributes, hotspot.content }
+
+# hotspot.attributes =
+# x.attribute
+# & y.attribute
+# & w.attribute
+# & h.attribute?
+# & hotspot.display.attribute?
+# & hotspot.type.attribute?
+# & xmlid.attribute?
+# x.attribute = attribute x { xsd:token {pattern = "\d{1,2}(\.\d{1,2})?%"} }
+# y.attribute = attribute y { xsd:token {pattern = "\d{1,2}(\.\d{1,2})?%"} }
+# w.attribute = attribute w { xsd:token {pattern = "\d{1,2}(\.\d{1,2})?%"} }
+# h.attribute = attribute h { xsd:token {pattern = "\d{1,2}(\.\d{1,2})?%"} }
+# hotspot.display.attribute = attribute display { "normal" | "visible" | "pulse" }
+# hotspot.type.attribute = attribute type { xsd:NCName }
+
+# hotspot.content =
+# ((link | p+ | image | audio | video), (spot, scenario?)?)
+# | (spot, scenario?)
+# | empty
+
+# ~~~~~~ spot
+# spot = element spot { spot.attributes, spot.content }
+
+# spot.attributes =
+# dx.attribute?
+# & dy.attribute?
+# & dw.attribute?
+# & dh.attribute?
+# dx.attribute = attribute dx { xsd:token {pattern = "-?\d{1,2}(\.\d{1,2})?%"} }
+# dy.attribute = attribute dy { xsd:token {pattern = "-?\d{1,2}(\.\d{1,2})?%"} }
+# dw.attribute = attribute dw { xsd:token {pattern = "-?\d{1,2}(\.\d{1,2})?%"} }
+# dh.attribute = attribute dh { xsd:token {pattern = "-?\d{1,2}(\.\d{1,2})?%"} }
+
+# spot.content =
+# ((p+ | image), audio?)
+# | audio
+# | video
+
+# ~~~~~~ media.caption
+# media.caption = element caption { caption.attributes, caption.content }
+
+# caption.attributes =
+# x.attribute?
+# & y.attribute?
+
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ scenario ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+# ~~~~~~ scenario
+# scenario = element scenario { scenario.content }
+
+# scenario.content =
+# init*,
+# onclick*
+
+# ~~~~~~ init
+# init = element init { init.attributes }
+
+# init.attributes =
+# init.action.attribute
+# & target.attribute?
+# init.action.attribute = attribute action { "hide" }
+# target.attribute = attribute target { "hotspot" | "spot" }
+
+# ~~~~~~ onclick
+# onclick = element onclick { onclick.attributes }
+
+# onclick.attributes =
+# onclick.action.attribute
+# & target.attribute?
+# onclick.action.attribute = attribute action { "show" }
+
+
+# =============================================================================
+# INLINE LEVEL
+# =============================================================================
+
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ smil ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+# smil = element smil { smil.attributes, smil.content }
+
+# smil.attributes =
+# audio.attribute?
+# & begin.attribute?
+# & end.attribute?
+# audio.attribute = attribute audio { xsd:anyURI }
+# begin.attribute = attribute begin { xsd:decimal }
+# end.attribute = attribute end { xsd:decimal }
+
+# smil.content = inlines