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