374 |
374 |
375 hotspot.attributes = |
375 hotspot.attributes = |
376 x.attribute |
376 x.attribute |
377 & y.attribute |
377 & y.attribute |
378 & w.attribute |
378 & w.attribute |
379 & h.attribute |
379 & h.attribute? |
380 & (hotspot.type.attribute & dx.attribute? & dy.attribute?)? |
380 & (hotspot.type.attribute |
|
381 & dx.attribute? |
|
382 & dy.attribute? |
|
383 & dw.attribute? |
|
384 & dh.attribute?)? |
381 x.attribute = attribute x { xsd:token {pattern = "\d{1,2}(\.\d{1,2})?%"} } |
385 x.attribute = attribute x { xsd:token {pattern = "\d{1,2}(\.\d{1,2})?%"} } |
382 y.attribute = attribute y { xsd:token {pattern = "\d{1,2}(\.\d{1,2})?%"} } |
386 y.attribute = attribute y { xsd:token {pattern = "\d{1,2}(\.\d{1,2})?%"} } |
383 w.attribute = attribute w { xsd:token {pattern = "\d{1,2}(\.\d{1,2})?%"} } |
387 w.attribute = attribute w { xsd:token {pattern = "\d{1,2}(\.\d{1,2})?%"} } |
384 h.attribute = attribute h { xsd:token {pattern = "\d{1,2}(\.\d{1,2})?%"} } |
388 h.attribute = attribute h { xsd:token {pattern = "\d{1,2}(\.\d{1,2})?%"} } |
385 hotspot.type.attribute = attribute type { "pulse" | "border" } |
389 hotspot.type.attribute = attribute type { "normal" | "visible" | "pulse" } |
386 dx.attribute = attribute dx { xsd:token {pattern = "-?\d{1,2}(\.\d)?"} } |
390 dx.attribute = attribute dx { xsd:token {pattern = "-?\d{1,2}(\.\d{1,2})?"} } |
387 dy.attribute = attribute dy { xsd:token {pattern = "-?\d{1,2}(\.\d)?"} } |
391 dy.attribute = attribute dy { xsd:token {pattern = "-?\d{1,2}(\.\d{1,2})?"} } |
|
392 dw.attribute = attribute dw { xsd:token {pattern = "\d{1,2}(\.\d{1,2})?"} } |
|
393 dh.attribute = attribute dh { xsd:token {pattern = "\d{1,2}(\.\d{1,2})?"} } |
388 |
394 |
389 hotspot.content = |
395 hotspot.content = |
390 (p | link | image | audio | video) |
396 (p | link | image | audio | video), |
|
397 scenario? |
391 |
398 |
392 # ~~~~~~ media.caption |
399 # ~~~~~~ media.caption |
393 media.caption = element caption { caption.attributes, caption.content } |
400 media.caption = element caption { caption.attributes, caption.content } |
394 |
401 |
395 caption.attributes = |
402 caption.attributes = |
396 x.attribute? |
403 x.attribute? |
397 & y.attribute? |
404 & y.attribute? |
|
405 |
|
406 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ scenario ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
|
407 |
|
408 # ~~~~~~ scenario |
|
409 scenario = element scenario { scenario.content } |
|
410 |
|
411 scenario.content = |
|
412 init*, |
|
413 onclick* |
|
414 |
|
415 # ~~~~~~ init |
|
416 init = element init { init.attributes } |
|
417 |
|
418 init.attributes = |
|
419 init.action.attribute |
|
420 init.action.attribute = attribute action { "hide" } |
|
421 |
|
422 # ~~~~~~ onclick |
|
423 onclick = element onclick { onclick.attributes } |
|
424 |
|
425 onclick.attributes = |
|
426 onclick.action.attribute |
|
427 onclick.action.attribute = attribute action { "show" } |
398 |
428 |
399 |
429 |
400 # ============================================================================= |
430 # ============================================================================= |
401 # HEAD LEVEL |
431 # HEAD LEVEL |
402 # ============================================================================= |
432 # ============================================================================= |