diff -r 562ba8e81a86 -r a90d62ed3016 RelaxNG/publianim.rnc --- /dev/null jeu. janv. 01 00:00:00 1970 +0000 +++ b/RelaxNG/publianim.rnc jeu. avril 21 12:02:56 2016 +0200 @@ -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