

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
