688 lines
20 KiB
XML
688 lines
20 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://whattf.org/datatype-draft">
|
|
<!-- ##################################################################### -->
|
|
<define name="script.elem.embedded">
|
|
<a:documentation> RELAX NG Schema for HTML 5: Core Scripting #</a:documentation>
|
|
<!-- ##################################################################### -->
|
|
<!-- ##################################################################### -->
|
|
<a:documentation>Scripting Elements</a:documentation>
|
|
<a:documentation>Inline Scripts: <script></a:documentation>
|
|
<element name="script">
|
|
<interleave>
|
|
<ref name="script.inner.embedded"/>
|
|
<ref name="script.attrs.embedded"/>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
<define name="script.attrs.embedded">
|
|
<interleave>
|
|
<ref name="common.attrs"/>
|
|
<optional>
|
|
<ref name="script.attrs.type"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="script.attrs.language"/>
|
|
</optional>
|
|
</interleave>
|
|
<!-- restricted in Schematron -->
|
|
</define>
|
|
<define name="script.elem.imported">
|
|
<element name="script">
|
|
<interleave>
|
|
<ref name="script.inner.imported"/>
|
|
<ref name="script.attrs.imported"/>
|
|
</interleave>
|
|
</element>
|
|
</define>
|
|
<define name="script.attrs.imported">
|
|
<interleave>
|
|
<ref name="common.attrs"/>
|
|
<ref name="script.attrs.src"/>
|
|
<optional>
|
|
<ref name="script.attrs.defer"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="script.attrs.async"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="script.attrs.type"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="script.attrs.charset"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="script.attrs.language"/>
|
|
</optional>
|
|
</interleave>
|
|
<!-- restricted in Schematron -->
|
|
</define>
|
|
<define name="script.attrs.src">
|
|
<attribute name="src">
|
|
<ref name="common.data.uri"/>
|
|
</attribute>
|
|
</define>
|
|
<define name="script.attrs.defer">
|
|
<attribute name="defer">
|
|
<choice>
|
|
<value type="string">defer</value>
|
|
<value type="string"/>
|
|
</choice>
|
|
</attribute>
|
|
</define>
|
|
<define name="script.attrs.async">
|
|
<interleave>
|
|
<attribute name="async">
|
|
<choice>
|
|
<value type="string">async</value>
|
|
<value type="string"/>
|
|
</choice>
|
|
</attribute>
|
|
<ref name="v5only"/>
|
|
</interleave>
|
|
</define>
|
|
<define name="script.attrs.type">
|
|
<attribute name="type">
|
|
<ref name="common.data.mimetype"/>
|
|
<!-- XXX without charset parameter! -->
|
|
</attribute>
|
|
</define>
|
|
<define name="script.attrs.charset">
|
|
<attribute name="charset">
|
|
<ref name="common.data.charset"/>
|
|
</attribute>
|
|
</define>
|
|
<define name="script.attrs.language">
|
|
<attribute name="language">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="script.inner.embedded">
|
|
<ref name="common.inner.anything"/>
|
|
</define>
|
|
<define name="script.inner.imported">
|
|
<ref name="common.inner.anything"/>
|
|
</define>
|
|
<define name="script.elem">
|
|
<choice>
|
|
<ref name="script.elem.embedded"/>
|
|
<ref name="script.elem.imported"/>
|
|
</choice>
|
|
</define>
|
|
<define name="common.elem.metadata" combine="choice">
|
|
<ref name="script.elem"/>
|
|
</define>
|
|
<define name="common.elem.phrasing" combine="choice">
|
|
<ref name="script.elem"/>
|
|
</define>
|
|
<define name="noscript.elem.head">
|
|
<a:documentation>Fallback Unscripted Content: <noscript></a:documentation>
|
|
<interleave>
|
|
<element name="noscript">
|
|
<interleave>
|
|
<ref name="noscript.inner.head"/>
|
|
<ref name="noscript.attrs"/>
|
|
</interleave>
|
|
</element>
|
|
<ref name="HTMLonly"/>
|
|
</interleave>
|
|
</define>
|
|
<define name="noscript.inner.head">
|
|
<zeroOrMore>
|
|
<choice>
|
|
<ref name="link.elem"/>
|
|
<ref name="meta.http-equiv.default-style.elem"/>
|
|
<ref name="meta.http-equiv.refresh.elem"/>
|
|
<ref name="style.elem"/>
|
|
</choice>
|
|
</zeroOrMore>
|
|
</define>
|
|
<define name="noscript.elem.phrasing">
|
|
<interleave>
|
|
<element name="noscript">
|
|
<interleave>
|
|
<ref name="noscript.inner.phrasing"/>
|
|
<ref name="noscript.attrs"/>
|
|
</interleave>
|
|
</element>
|
|
<ref name="HTMLonly"/>
|
|
</interleave>
|
|
</define>
|
|
<define name="noscript.inner.phrasing">
|
|
<ref name="common.inner.phrasing"/>
|
|
</define>
|
|
<define name="noscript.elem.flow">
|
|
<interleave>
|
|
<element name="noscript">
|
|
<interleave>
|
|
<ref name="noscript.inner.flow"/>
|
|
<ref name="noscript.attrs"/>
|
|
</interleave>
|
|
</element>
|
|
<ref name="HTMLonly"/>
|
|
</interleave>
|
|
</define>
|
|
<define name="noscript.inner.flow">
|
|
<ref name="common.inner.flow"/>
|
|
</define>
|
|
<define name="noscript.attrs">
|
|
<ref name="common.attrs"/>
|
|
</define>
|
|
<define name="common.elem.metadata" combine="choice">
|
|
<ref name="noscript.elem.head"/>
|
|
</define>
|
|
<define name="common.elem.phrasing" combine="choice">
|
|
<ref name="noscript.elem.phrasing"/>
|
|
</define>
|
|
<define name="common.elem.flow" combine="choice">
|
|
<ref name="noscript.elem.flow"/>
|
|
</define>
|
|
<!-- ##################################################################### -->
|
|
<define name="common.attrs.scripting" combine="interleave">
|
|
<a:documentation>Event Handler Attribute Definitions</a:documentation>
|
|
<interleave>
|
|
<optional>
|
|
<ref name="scripting.attr.onabort"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onblur"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.oncanplay"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.oncanplaythrough"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onchange"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onclick"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.oncontextmenu"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.ondblclick"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.ondrag"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.ondragend"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.ondragenter"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.ondragleave"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.ondragover"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.ondragstart"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.ondrop"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.ondurationchange"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onemptied"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onended"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onerror"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onfocus"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onformchange"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onforminput"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.oninput"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.oninvalid"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onkeydown"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onkeypress"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onkeyup"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onload"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onloadeddata"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onloadedmetadata"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onloadstart"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onmousedown"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onmousemove"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onmouseout"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onmouseover"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onmouseup"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onmousewheel"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onpause"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onplay"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onplaying"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onprogress"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onratechange"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onreadystatechange"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onscroll"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onseeked"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onseeking"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onselect"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onshow"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onstalled"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onsubmit"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onsuspend"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.ontimeupdate"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onvolumechange"/>
|
|
</optional>
|
|
<optional>
|
|
<ref name="scripting.attr.onwaiting"/>
|
|
</optional>
|
|
</interleave>
|
|
</define>
|
|
<define name="common.attrs.other" combine="interleave">
|
|
<ref name="common.attrs.scripting"/>
|
|
</define>
|
|
<define name="scripting.attr.onabort">
|
|
<attribute name="onabort">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onblur">
|
|
<attribute name="onblur">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.oncanplay">
|
|
<attribute name="oncanplay">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.oncanplaythrough">
|
|
<attribute name="oncanplaythrough">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onchange">
|
|
<attribute name="onchange">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onclick">
|
|
<attribute name="onclick">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.oncontextmenu">
|
|
<attribute name="oncontextmenu">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.ondblclick">
|
|
<attribute name="ondblclick">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.ondrag">
|
|
<attribute name="ondrag">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.ondragend">
|
|
<attribute name="ondragend">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.ondragenter">
|
|
<attribute name="ondragenter">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.ondragleave">
|
|
<attribute name="ondragleave">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.ondragover">
|
|
<attribute name="ondragover">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.ondragstart">
|
|
<attribute name="ondragstart">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.ondrop">
|
|
<attribute name="ondrop">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.ondurationchange">
|
|
<attribute name="ondurationchange">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onemptied">
|
|
<attribute name="onemptied">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onended">
|
|
<attribute name="onended">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onerror">
|
|
<attribute name="onerror">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onfocus">
|
|
<attribute name="onfocus">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onformchange">
|
|
<attribute name="onformchange">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onforminput">
|
|
<attribute name="onforminput">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.oninput">
|
|
<attribute name="oninput">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.oninvalid">
|
|
<attribute name="oninvalid">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onkeydown">
|
|
<attribute name="onkeydown">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onkeypress">
|
|
<attribute name="onkeypress">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onkeyup">
|
|
<attribute name="onkeyup">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onload">
|
|
<attribute name="onload">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onloadeddata">
|
|
<attribute name="onloadeddata">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onloadedmetadata">
|
|
<attribute name="onloadedmetadata">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onloadstart">
|
|
<attribute name="onloadstart">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onmousedown">
|
|
<attribute name="onmousedown">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onmousemove">
|
|
<attribute name="onmousemove">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onmouseout">
|
|
<attribute name="onmouseout">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onmouseover">
|
|
<attribute name="onmouseover">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onmouseup">
|
|
<attribute name="onmouseup">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onmousewheel">
|
|
<attribute name="onmousewheel">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onpause">
|
|
<attribute name="onpause">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onplay">
|
|
<attribute name="onplay">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onplaying">
|
|
<attribute name="onplaying">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onprogress">
|
|
<attribute name="onprogress">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onratechange">
|
|
<attribute name="onratechange">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onreadystatechange">
|
|
<attribute name="onreadystatechange">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onscroll">
|
|
<attribute name="onscroll">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onseeked">
|
|
<attribute name="onseeked">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onseeking">
|
|
<attribute name="onseeking">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onselect">
|
|
<attribute name="onselect">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onshow">
|
|
<attribute name="onshow">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onstalled">
|
|
<attribute name="onstalled">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onsubmit">
|
|
<attribute name="onsubmit">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onsuspend">
|
|
<attribute name="onsuspend">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.ontimeupdate">
|
|
<attribute name="ontimeupdate">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onvolumechange">
|
|
<attribute name="onvolumechange">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
<define name="scripting.attr.onwaiting">
|
|
<attribute name="onwaiting">
|
|
<data type="string" datatypeLibrary=""/>
|
|
</attribute>
|
|
</define>
|
|
</grammar>
|
|
<!--
|
|
scripting.attr.common =
|
|
( scripting.attr.mouse
|
|
& scripting.attr.keyboard
|
|
& scripting.attr.focus
|
|
)
|
|
|
|
scripting.attr.mouse =
|
|
( scripting.attr.mouse.click?
|
|
& scripting.attr.mouse.dblclick?
|
|
& scripting.attr.mouse.down?
|
|
& scripting.attr.mouse.up?
|
|
& scripting.attr.mouse.over?
|
|
& scripting.attr.mouse.move?
|
|
& scripting.attr.mouse.out?
|
|
)
|
|
scripting.attr.mouse.click =
|
|
attribute onclick { string }
|
|
scripting.attr.mouse.dblclick =
|
|
attribute ondblclick { string }
|
|
scripting.attr.mouse.down =
|
|
attribute onmousedown { string }
|
|
scripting.attr.mouse.up =
|
|
attribute onmouseup { string }
|
|
scripting.attr.mouse.over =
|
|
attribute onmouseover { string }
|
|
scripting.attr.mouse.move =
|
|
attribute onmousemove { string }
|
|
scripting.attr.mouse.out =
|
|
attribute onmouseout { string }
|
|
|
|
scripting.attr.keyboard =
|
|
( scripting.attr.keyboard.press?
|
|
& scripting.attr.keyboard.down?
|
|
& scripting.attr.keyboard.up?
|
|
)
|
|
scripting.attr.keyboard.press =
|
|
attribute onkeypress { string }
|
|
scripting.attr.keyboard.down =
|
|
attribute onkeydown { string }
|
|
scripting.attr.keyboard.up =
|
|
attribute onkeyup { string }
|
|
|
|
|
|
scripting.attr.focus =
|
|
( scripting.attr.focus.gain?
|
|
& scripting.attr.focus.lose?
|
|
)
|
|
scripting.attr.focus.gain =
|
|
attribute onfocus { string }
|
|
scripting.attr.focus.lose =
|
|
attribute onblur { string }
|
|
|
|
scripting.attr.loading =
|
|
( scripting.attr.loading.load?
|
|
& scripting.attr.loading.unload?
|
|
)
|
|
scripting.attr.loading.load =
|
|
attribute onload { string }
|
|
scripting.attr.loading.unload =
|
|
attribute onunload { string }
|
|
-->
|
|
<!--
|
|
#####################################################################
|
|
Event Handler Attribute Assignments
|
|
-->
|
|
<!-- body.attrs &= scripting.attr.loading -->
|