XML远程事件规范为文档对象模式(DOM)事件的传输定义了xml语法,此方式与流协议兼容。它允许端点之间通过发送DOM事件保持DOM请求而发生相互通讯,此时如同在一个端点上作用一样。Rex在很多情况下非常有用,包括设置XML元素的属性、插入元素或移除元素、移除树、取代元素或整个文档等等。
Rex消息结构
Rex信息的根容器元素是<Rex>,它是必须的,即使只有一个元素也需要根容器。Rex语言的命名空间在http://www.w3.org/2006/rex网址。<Rex>是Rex规范处理消息的最小版本。如果版本号没有用户代理所支持版本序列,用户代理则完全拒绝消息,或者忽略其全部消息内容。
另一个可选属性是ns。它允许在活动范围内申请DOM事件名字所应用的命名空间。对于任何给定的DOM事件名字,如果其父元素没有任何ns属性,则事件名字的IRI组件是http://www.w3.org/2001/xml-events。否则,事件名字的IRI组件是文档内容中反序找到的第一个ns属性的命名空间组件。
本例中,树结构插入到HTML表格的第7个位置(表A - example1.xml):
表A - example1.xml
<Rexxmlns='http://www.w3.org/2006/Rex'>
<event target='/html/body/table[2]' name='DOMNodeInserted' position='7'>
<trxmlns='http://www.w3.org/1999/xhtml'>
<td>Cell 1</td>
<td>Cell 2</td>
<td>Cell 3</td>
</tr>
</event>
</Rex>
<event>元素用于编码能被Rex捕获的任何类型的事件。同时指定“name”“target”属性,其他的内容则依赖于被捕获的事件。每一个<event>元素将产生一个相应的DOM事件(有时候是DOM树的修改)。
“name”属性包含由<event>元素表征事件的本地名组件。事件名字的命名空间IRI组件必须基于“ns”属性。“target”属性包含目标路径,其语义将在下面进行讨论。同时还有“timeStamp”属性,它包含以毫秒为单位的时间整数,记录指派事件的时间(定义为1970年一月一日的00:00:00)。
如何进行工作
使用XPath的简单子集时,其目标节点被引用,满足大多数需要,同时执行方便。不需要解析相对路径,因为他们被指定在根处(绝对路径)或与元素ID绑定。目标路径和目标文档的评判结果是节点集。
如果节点集的大小超过一个,则事件将按照节点集中节点的次序进行指派,即相当于<event>元素在Rex消息中被拷贝多次,并且每一个都有目标路径,并且与对应的节点集中的节点相匹配。
Xpath入门中介绍了几个方法。目标路径可能在根或id()函数处开始。id()函数有一个单字符串参数,此参数必须包含一个标志符。其语法支持缩写轴。路径开始后,下面紧跟很多子轴,这些子轴使用元素名字测试。