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
| 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