为什么选择XForms?

理想主义者想象一个全球互联网:真实、公平、自由,任何人都可以通过它自由、公开地交换信息;实用主义者希望在下午五点前完成工作,然后回家陪家人。理想主义者推崇标准通用标记语言(SGML)、可扩展标记语言(XML)、可扩展矢量图形(SVG)、级联样式表(CSS)和可扩展超文本标记语言(XHTML)。实用主义者相信HTML,JavaScript?6?4.表单和Flash。理想主义者参加万维网联盟(W3C)和研讨会,如极限标记语言和WWW 2007。另一方面,实用主义者会参加HTML作者协会和网站设计世界这样的研讨会。理想主义者阅读像《编织网络》和《有效的XML》这样的书,而实用主义者阅读像《Ajax在行动中》和《设计黑仔网站》这样的书。最近,两大阵营争论的焦点是下一代表单技术:Web 2.0应用程序还是XForms。双方怒气冲冲,争论不休,因为双方都无法理解对方的目标,两人毫无共同之处。然而,两个阵营之间的差距并不是不可逾越的。许多理想主义的技术(如XHTML和CSS)被实用主义者广泛采用,因为它们给他们的工作带来了实实在在的好处。可以理解,实用主义者从来没有赶上任何W3C热潮。他们绝不会在工作草案的第一个版本一发布就急着去做,而是宁愿等几年,直到新技术在他们的用户群中变得真正可靠和可用。他们不是早期采用者,但是只要技术对他们有意义并且工具得到完全支持,他们就会是早期采用者。XForms是一种理想主义的努力,旨在解决当今困扰Web开发人员的许多实际问题。从目前的情况来看,基于逐渐改进传统HTML表单的务实解决方案还不错,但永远达不到XForms的高度。正因为XForms“爬得更高”,所以如果失败了,就会“摔得更重”,负面影响也会更大。因为XForms更有野心,所以希望和失望并存:希望在于不久的将来会成为现实的一切,失望在于今天还不能成为现实。尽管如此,有必要理解XForms试图实现什么,以便公平地判断其他替代方案。如果XForms的目标和你的不一致。那它就没有吸引力了。而如果XForms为之奋斗的目标正是你现在实际关心的,那么承受新技术诞生不可避免的痛苦也许是值得你努力的。关于XForms,首先需要理解的是,它不仅仅是面向Web或HTML的。当然不仅仅适用于经典的桌面浏览器,比如Firefox微软?0?3互联网浏览器.XForms被设计成可以在许多其他环境中很好地工作,比如手机浏览器、语音浏览器和一些根本不是浏览器的环境。例如,OpenOffice 2.0使用XForms作为底层表单技术。希望目前使用专利表单技术的其他产品,如Microsoft Word、Adobe Acrobat和通用商业语言(UBL)将来也能迁移到XForms。这些公司会不会这么做,还是未知数。此外,与上一代XML类似,XForms被设计成将目标与动作、意义与表达式分开。它被设计为表单需要收集的输入的一般描述。XForms对表单的表示和用户与表单的交互方式几乎没有干扰。同样的表格可以在浏览器中以一种方式呈现,在电话网络中以击键和语音识别输入以另一种方式呈现,在纸面上以第三种方式呈现,即手工填写,用光学字符识别技术扫描。Edsel还是传送带?我个人对这个目标持保留意见。我称之为技术的埃德塞尔难题。试图成为万灵丹的技术往往以失败告终。W3C的文档对象模型(DOM)就是一个经典的例子。该规范试图向过于一般化的方向发展,结果令人沮丧。有时,针对某个环境定制的解决方案远胜于过于笼统的方法。另一方面,有时候一般化会有回报。也许XForms并不是一个失败的Edsel。也许它更像一个传送带。你一定要问自己,你真的需要同一个形态在不同的环境下以不同的方式呈现吗?很多应用不需要这个。例如,如果你正在编写一个简单的网站投票程序,并且只是为了娱乐,那么浏览器中的HTML可能就足够了。然而,更大的系统可能会受益于更通用的方法。例如,收集股东投票的系统通常要求人们通过电话、书面和网络投票。在这种情况下,可以通过单个源文档支持所有三个选项的表单技术非常有用。也许你现在不需要这个功能,但将来你很可能会用到。比如,想象你用手机打电话给服务器,口述(而不是打字!)一个故事,用这种方式来实时更新你的博客。现在的语音识别技术还不足以支持这个功能,但是以后肯定会发展到这个程度。当那一天到来时,为基于XForms的博客添加语音输入支持只是小菜一碟,因为表单本身不需要重写。然而,基于HTML表单的系统不能提供类似的支持。也许我的眼光太长远了,也许我应该像科幻小说那样着眼于现在而不是未来的界面。但这些科幻问题正是XForms试图解决的。回到顶部许多设备都支持Web,这可能会促进许多计算机的销售,但它肯定不仅仅关注计算机-至少不仅仅是那些传统的台式机。在不久的将来,最常见的上网设备将是手机。也许下一个最受欢迎的设备将是人类的笔记本电脑,它使用低功耗处理器,运行定制版的Linux?0?3。许多人将继续使用文本模式浏览器,如Lynx。XForms被设计成在所有这些环境中都能很好地工作,而不仅仅是在30英寸显示器上显示的数百万种颜色的图形用户界面(GUI)。支持多种设备的技巧是将表单收集的内容与表单的外观分开。例如,在传统的Web浏览器(如Firefox)中,要求送货和收费地址的表单可能会显示在一个页面上。但是在手机这样的小设备上,也可以很容易的拆分成两个连续的屏幕。如果通过语音而不是打字来填写表单,它甚至可以是非可视表单。XForms不必对用于填写表单的设备类型做任何假设。回到顶部,机器使用和自动化表格不仅由人填写。它还可以用于不同进程之间的通信。比如一个办公室经理可以用微软的Windows?0?3.在计算机上运行的富客户端GUI程序中输入办公用品购买应用程序。随后,这个程序可以在OfficeMax、Staples、Office Depot和Laser Monks的网站上搜索每件商品的最优价格,然后下单。办公室经理在程序中填写一个本地表格,然后程序将相关信息复制到提供最佳价格的商店的表格中。也许这个过程不需要人工干预。智能打印机可以识别碳粉即将用完,并自动重新订购。为了实现这个场景,表单必须能够被其他程序访问,而不仅仅是人。字段必须用其他程序可以识别的名称来标记。标签必须清楚地附加到标记中的特定字段,而不仅仅是页面的可视表示。另外,如果表单可以指定一个要求输入内容为整数、小数、日期、未来日期、法定邮政编码等的字段,会非常有用。在这个用例中,表示不仅与标签分离,甚至可能根本不存在。人类非常聪明,可以利用隐含的线索(比如页面上字段的位置)来区分在哪里输入什么样的数据。但是电脑不行。他们需要更多的帮助。XForms就是为计算机提供这种帮助而设计的。可以输入到表单中的内容的信息越清晰,计算机就越容易与表单自动交互。非ASCII数据的国际化和本地化是表单编程和公共网关接口(CGI)中最令人头痛的问题之一。说到resumé这样的词如何编码提交(更不用说χ ν ο?0?9还是?9?6)、早期的HTML和URL规范给开发者留下了很大的想象空间。近十年来,这种情况得到了一定程度的改善,出现了一些新兴的标准。但毫无疑问,我们不能为了进步而后退。必须从一开始就启用Unicode。XForms使用XML作为底层序列化形式。当浏览器或其他客户机从服务器接收XForm时,它接收XML。当它将表单数据发送回服务器时,会将数据编码成XML文档。XML文档是Unicode的。当然,它也可以存储为其他编码,但这些编码与Unicode之间的转换是简单而确定的。在处理XML时,不再有任何编码问题。不可能一方用ISO-8859-1编码读取文档,而另一方用UTF-8编码读取文档。这将使用希腊语、汉语、法语、希伯来语和数百种其他语言填写表格成为可能。引用罗伯特·布林赫斯特(Robert Bringhurst)的话来说,你不必希望“没有人会提到法式蛋糕或A?0?7奥利;没有叫安东尼·德沃的人?0?0k、S?0?克尔凯郭尔,斯特芳·马拉美还是克洛伊?0?5琼斯;没人住进来吗?0?7bidos?0?3rhus、Kromì?0?3í?0?6、?0?1ster Vr?0?2、Pr?0?1honice、Nagyk?0?1r?0?2s、达拉斯?0?7sla、K?0?3rka?0?6a?0?4还是k?0?2ln,”(印刷风格的要素,哈特利& ampMarks Press,2002,第90页)当然,真正的国际化和本地化不仅仅是让人们用非ASCII字母输入姓名和地址。例如,还需要允许希伯来语和阿拉伯语形式从右向左排列,而不是从左向右。内容和表达的分离再一次拯救了我们。XForm中对字段布局没有要求,因此本地呈现器可以自由选择任何合理的方向。毫无疑问,提示有时是有用的,例如,它可以告诉渲染器它是在处理英语还是阿拉伯语。是时候让XML再次展示它的威力了。XForms完全允许使用xml:lang属性、双向Unicode标记、Ruby文本和其他一些与英语无关但对其他语言很重要的技巧。最后,表单本身需要本地化。同一个表单必须能够从翻译成不同语言的资源文件中加载自己的标签和其他人类可见的内容。就像编写富客户端GUI一样,您不希望将可翻译的字符串放在源代码中,因为翻译人员通常不是程序员。页面顶部的可访问性XForms最不明显但最重要的目标之一是可访问性。一个XForm表单不应该只考虑视力健全和灵巧的用户。它还需要对有暂时或永久视力、四肢或其他缺陷的人有效。这不仅涉及有明显视力障碍和身体残疾的用户,还涉及其他所有人。因为每个人都会有不方便的时候。很多人用手机的小屏幕和数字键上网。有些人会在开车时使用语音界面填写XForms。随着管辖权的进一步完善,无障碍不仅仅是一个好主意。这是法律。当输入验证并填写页面顶部的表格时出现错误并不奇怪。你总是会被要求输入你的电子邮件地址两次,以确保没有拼写错误。已经编写了许多复杂的JavaScript代码来检查基本的约束条件:例如,信用卡号码的位数应该是正确的,其到期日期应该是未来而不是过去。当然,您可以用JavaScript代码编写类似的检查。但是表达约束是什么比写代码检查要容易一百倍。XForms努力通过更直观的声明性方法来简化这种检查。因此,它们可能是先写的。一些约束可以在用户输入时检查。例如,如果输入字段表明输入内容应该是型号,浏览器可以忽略用户按下的任何非数字键。其他浏览器可能会在提交表单之前检查这些约束,并在发现违规时警告用户。当然,一个健壮的Web应用程序不能依赖客户端提交的任何东西。恶意用户可以在提交订单之前通过更改总价来试图破解系统。只有验证数据的人才能相信数据。客户端可以信任客户端验证过的数据,而服务器只能信任服务器验证过的数据。出于这个原因,XForms被设计成允许服务器端和客户端认证。信任,但必须验证。客户端提交的所有数据都可以(也应该)根据模式进行测试,以确保它符合模型。测试基于HTML表单的传统Web应用程序的输入是可能的,但是XForms尽力使它更简单、更健壮,几乎到了测试比不测试容易的程度。这将消除许多与网络相关的小安全漏洞。回到顶部以避免数据来回传输。一个系统的速度取决于它最慢的部分。在Web应用程序中,性能瓶颈通常不是服务器(如果它正在处理大量连接)或客户机和服务器之间的网络连接。重要的是尽量减少必须同时在两个方面完成的工作。性能瓶颈很少是客户端,所以如果你能把任何工作从服务器或网络转移到客户端,你无疑会得到一个性能的提升。当前HTML表单的一个严重限制是,每次通过计算改变表单值时,都需要与服务器来回传输数据。服务器必须接收输入,处理它,然后向客户机返回一个新的表单。有时这是必要的,例如当服务器从只有它才能访问的数据库返回信息时。但是有时没有理由说工作不能完全在客户机上执行。例如,客户机可以很容易地将购物车中所有商品的总价加起来,并在提交表单之前显示给用户。事实上,几乎所有购物车的详细信息都可以存储在客户端,只在结账时发送到服务器。目前这个过程是用JavaScript实现的,但是JavaScript很难阅读和维护。添加依赖于其他字段内容的计算字段可以实现更具声明性的方式。此外,这些字段可以是纯输出字段,只有客户端可以看到。服务器不必查看它们。出于安全考虑,它会根据客户输入的无关数据重新计算所有结果。相关数据保留在它所属的客户端上。这种方法巧妙地消除了服务器程序员依靠可破坏的客户端计算来打开安全漏洞的所有机会。XForms设计用于各种环境,适合不同能力的用户(技术和个人)。它将数据与表单呈现分离,使得同一个表单可以以多种不同的方式呈现,以满足各种用户的需求,从而达到这个目的。这需要你彻底改变看待和设计软件的方式。这类似于从Word中基于表示的标记转变为XML中基于语义的标记。在编程领域,像从Java?6?这种命令式语言转向SQL等描述性语言。设计XForms时,必须考虑希望从用户那里得到的信息,而不是表单的外观。我不确定这种风格的表单设计是否会比传统的视觉设计更难,但它不是那么直观,大多数网页设计师也不熟悉它。这当然需要一个适应过程。对于具有一次性交付机制的简单应用程序,这种更高级别的间接性可能不值得。但对于更复杂的应用来说,它带来了改善可访问性、本地化、安全性、健壮性等理想特性的真正希望。参考资料您可以参考developerWorks全球网站上这篇文章的英文原文。阅读“XForms简介,第1部分:表单的新Web标准”。XForms需求给出了XForms必要性的初步解释。XForms工作组章程介绍了XForms最初的官方目标。阅读Wikipedia: XForms:一个优秀的入门资源。Wikibooks有一个关于XForms:教程和食谱的部分,这里的信息经常更新。developerWorks中国网站的XML技术专区提供了数百篇关于XML开发各个方面的文章。DeveloperWorks技术活动和网络广播:时刻关注最新技术。获取产品和技术获取MozzIE,这是一个开源控件,可以在IE中呈现XForms。讨论developerWorks博客:加入developerWorks社区。关于作者Elliotte Harold出生在新奥尔良,现在他会定期回到家乡喝一碗美味的秋葵汤。但现在他和妻子贝丝,他们的狗夏娜,猫魅力和马乔里住在布鲁克林附近的展望高地。他是理工大学计算机科学的副教授,教授Java和面向对象编程。他的Cafe au Lait网站是互联网上最受欢迎的独立Java站点之一,其子站点Cafe con车乐是最受欢迎的XML站点之一。他的作品包括有效的XML、用Java处理XML、Java网络编程和XML 1.1圣经。他的最新著作是Java I/O,第二版。目前从事XOM API处理XML、Jaxen XPath引擎和Jester测试覆盖工具的研究。关闭关于举报虐待的[x]帮助。举报虐待。谢谢大家!此内容已被标记为引起管理员的注意。Close [x]关于举报滥用的帮助举报滥用举报滥用失败。请稍后再试。关闭[x]developerWorks:登录IBM ID:需要一个IBM ID?忘了IBM ID?密码:忘记密码了?更改您的密码并保持登录状态。通过单击submit,您同意developerWorks的条款和条件。使用条款当您第一次登录developerWorks时,会为您创建一个概要文件。您选择在developerWorks概要文件中公开的信息将向其他人公开显示,但是您可以随时修改这些信息的显示状态。您的姓名(除非您选择隐藏)和昵称将与您在developerWorks中发布的内容一起显示。所有提交的信息都是安全的。Close [x]请选择您的昵称:当您第一次登录developerWorks时,会为您创建一个概要文件,您需要指定一个昵称。您的昵称将与您在developerWorks上发布的内容一起显示。昵称长度介于3到31个字符之间。出于隐私保护的原因,您的昵称在developerWorks社区中必须是唯一的,并且不能是您的电子邮件地址。昵称:(长度在3到31个字符之间)单击Submit表示您同意developerWorks的条款和条件。使用条款。所有提交的信息都是安全的。给这篇文章打分,评论回顶。