论文部分内容阅读
现在,浏览器已经不再是一个简单的浏览引擎,它已经发展成了一个完备的程序平台。在几种不同的在浏览器中嵌入程序的方法中,最流行的一个要数JavaScript。其他的方法包括Flash,Java Applets,Google Web Toolkit等。在这里,我们继续这种使用服务器端编程语言进行客户端编程的意图,不过我们不再讨论使用Java,而是使用XQuery家族。XQuery是专门针对XML的查询和控制语句,同时它也适用于HTML。
对XQuery语言标准的定义工作已经于2007年初完成,XQuery = XML Query,是W3C所制定的一套标准,用来从类XML文档中提取信息,类XML文档可以理解成一切符合XML数据模型和接口的实体。工业界不断的致力于将XQuery用于数据库查询控制以及商务逻辑程序。我在这里想说明XQuery同样可以用于客户端,并且可以将其运行在客户端:它为编程者提供了高度抽象的,灵活而强大的声明式的语法。只用少量几行的代码就可以对HTML文档进行显著的操作。另外,将XQuery用作一种客户端语言可以解决几个重要的问题:① Xquery可以引进模块化,允许客户端运行更大的应用程序;② 由于XML在本地进行处理,因此它消除了XML查询和控制的不匹配的阻碍;③ XQuery代码可以在不同的浏览器之间以及客户端和服务器端之间移植。现在,在服务器上的一个文件中可以包含多达五种的编程语言(例如:Java,JSP,HTML,SQL,JavaScript)。有了XQuery家族,就只剩下一种单一的语言来处理数据库查询,业务逻辑,网页服务器端的生成和客户端的控制。目前的XQuery标准之缺少一点功能来允许进行客户端编程和支持AJAX应用程序开发。我在这里提出了方案来弥补这一空白,是XQuery成为一个全功能的客户端编程语言。
如下图,我为微软浏览器建立一个扩展。首先,浏览器接收并解析一个XHTML文档,然后它生成了文档对象模型(DOM),呈现在网页中并初始化我们的扩展。XQuery引擎接收XQuery代码。在这里我们适用开源的Zorba做XQuery引擎。XQuery引擎在DOM上实施XML数据模型(XDM):由此,Zorba修改了XDM,同时也修改了浏览器的DOM。
我们扩展了XQuery的语法以注册事件监听器来处理网络服务调用以及访问HTML元素的风格。
下面这个例子表现了DOM是如何被查询和控制,以及在浏览器中XQuery是怎样进行时间处理的。下面的HTML网页包含了一个XQuery脚本,动态生成了加减乘除表。
Table Generation:
Demonstration
该网页的body最初含有两个允许用户输入输出表的行数和列数的文本框,以及用户可以点击的加减乘除四个按钮。
网页的头包含一个含有XQuery代码的脚本标签,其类型属性被设置为
“Text/xquery”。XQuery代码首先定义了一个新的时间监听器generateTable。
另外,脚本注册了点击事件的监听器。监听器用事件节点作参数。这个事件节点就是一个XML所谓节点,包含事件信息。例如如果用户点击+按钮:
...
这个函数首先使用事件节点去访问被点击的按钮的值并将他存储位参数$operation的值。然后网页中的表就被动态的替换成新的表格。首先根据文本框中读入的数字生成行,然后对每一行重复生成列,从而生成了每一格。在每一格中,根据参数$operation的值,进行性应的运算得到数据。最后,函数generateTable与事件网页中的按钮点击事件“onClick”绑定。
对XQuery语言标准的定义工作已经于2007年初完成,XQuery = XML Query,是W3C所制定的一套标准,用来从类XML文档中提取信息,类XML文档可以理解成一切符合XML数据模型和接口的实体。工业界不断的致力于将XQuery用于数据库查询控制以及商务逻辑程序。我在这里想说明XQuery同样可以用于客户端,并且可以将其运行在客户端:它为编程者提供了高度抽象的,灵活而强大的声明式的语法。只用少量几行的代码就可以对HTML文档进行显著的操作。另外,将XQuery用作一种客户端语言可以解决几个重要的问题:① Xquery可以引进模块化,允许客户端运行更大的应用程序;② 由于XML在本地进行处理,因此它消除了XML查询和控制的不匹配的阻碍;③ XQuery代码可以在不同的浏览器之间以及客户端和服务器端之间移植。现在,在服务器上的一个文件中可以包含多达五种的编程语言(例如:Java,JSP,HTML,SQL,JavaScript)。有了XQuery家族,就只剩下一种单一的语言来处理数据库查询,业务逻辑,网页服务器端的生成和客户端的控制。目前的XQuery标准之缺少一点功能来允许进行客户端编程和支持AJAX应用程序开发。我在这里提出了方案来弥补这一空白,是XQuery成为一个全功能的客户端编程语言。
如下图,我为微软浏览器建立一个扩展。首先,浏览器接收并解析一个XHTML文档,然后它生成了文档对象模型(DOM),呈现在网页中并初始化我们的扩展。XQuery引擎接收XQuery代码。在这里我们适用开源的Zorba做XQuery引擎。XQuery引擎在DOM上实施XML数据模型(XDM):由此,Zorba修改了XDM,同时也修改了浏览器的DOM。
我们扩展了XQuery的语法以注册事件监听器来处理网络服务调用以及访问HTML元素的风格。
下面这个例子表现了DOM是如何被查询和控制,以及在浏览器中XQuery是怎样进行时间处理的。下面的HTML网页包含了一个XQuery脚本,动态生成了加减乘除表。
Demonstration
XQuery Table Generator
Number of rows:
name="nbrows" value="0"/> |
Number of columns:
name="nbcolumns" value="0"/> |
|
该网页的body最初含有两个允许用户输入输出表的行数和列数的文本框,以及用户可以点击的加减乘除四个按钮。
网页的头包含一个含有XQuery代码的脚本标签,其类型属性被设置为
“Text/xquery”。XQuery代码首先定义了一个新的时间监听器generateTable。
另外,脚本注册了点击事件的监听器。监听器用事件节点作参数。这个事件节点就是一个XML所谓节点,包含事件信息。例如如果用户点击+按钮:
...
这个函数首先使用事件节点去访问被点击的按钮的值并将他存储位参数$operation的值。然后网页中的表就被动态的替换成新的表格。首先根据文本框中读入的数字生成行,然后对每一行重复生成列,从而生成了每一格。在每一格中,根据参数$operation的值,进行性应的运算得到数据。最后,函数generateTable与事件网页中的按钮点击事件“onClick”绑定。