`
netcome
  • 浏览: 485433 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

XForms 1.1 中文翻译—第2章 XForms 导论

阅读更多

2 XForms导论

     XForms是在多年HTML表单经验的基础上设计的。HTML表单组成了电子商务革命的支柱,表现了它们的价值,也显示了许多值得改进的地方。

     对比XForms与HTML表单,除了XForms是XML格式之外,其主要区别是分离了收集的数据和收集这些值的控件标记(markup)。通过这样,不仅使得XForms更加容易管理(什么数据提交到哪里一目了然),也更易于表单的重用,因为表单的底层基础部分(数据部分)不再与使用它的页面强制性的绑定。

     第二个重要的区别是XForms虽然设计成与XHTML集成,但不再局限与仅是XHTML语言的一部分,而可以集成进其他合适的标记语言。

XForms努力改进了表单的创建、重用、国际化、易用性、可用性和设备无关性。下面对使用XForms的主要优点进行了总结:

强数据类型

提交的数据是强数据类型的,可以使用现有的工具进行检查。这减少了对往返于服务器间的确认的需求而加速了表单填充。

XML提交

这消除了通过定制服务器端逻辑来整合提交的数据到后台应用的需求。接收到的XML实例文档可以被后台应用直接验证和处理。

重用已有的模式(schema

这消除了重复,并且保证是底层的业务逻辑改变导致的验证(validation)规则更新,不需要在XForms应用中重新创建验证约束

增加外部规则

这使得XForms表单设计者可以超出后台提供的基本约束集。提供额外的约束作为XForms模型的一部分增强了生成的Web应用的整体可用性。

国际化

实例数据使用XML1.0从而确保提交的数据是国际化的。

增强的易用性

XForms分离了内容和表现。用户界面控件包装了所有相关的元数据(例如标签),因此增强了使用不同表现形式(modalities)时应用的易用性。XForms用户界面控件是通用的和设备无关的。

多设备支持

用户界面控件的高层次本质和随之产生的基于目的的用户界面创建方式使得可以是用户交互应用到不同的设备。

脚本的更少使用

通过定义基于XML声明的事件处理器(event handlers)(覆盖了普通用例),大部分XForms文档的大部分可以静态分析,减少了事件处理器对必要的脚本的需求。

2.1 例子

在XForms方式中,表单由两部分组成:一部分描述了表单做什么,称为XForms Model,另一部分描述了如何显示表单。

一个简单的电子商务表单可能显示如下:

图例

很明显,我们要收集代表使用现金或信用卡的一个值,以及如果使用信用卡,卡号和过期日期的值。

这可以在XForms model元素中表示,它通常被包含在XHTML中的head部分。

 

<xforms:model>

  <xforms:instance>

    <ecommerce xmlns=”">

      <method/>

      <number/>

      <expiry/>

    </ecommerce>

  </xforms:instance>

  <xforms:submission action=”http://example.com/submit” method=”post” id=”submit” includenamespaceprefixes=”"/>

</xforms:model>

这只是说明了我们要收集三部分信息(注意,我们还没有谈及他们的类型),并使用action属性中的URL提交这些信息。

XForms定义了一个设备无关、平台无关的表单控件集合,这个集合适用于通用的目的。这些控件通过XForms绑定机制绑定到XForms Model上。在这个简单的例子中是使用控件的ref属性。在XHTML中,这个标记通常出现在body部分(注意,我们在这故意漏掉XForms的名称空间前缀):

<select1 ref=”method”>

  <label>Select Payment Method:</label>

  <item>

    <label>Cash</label>

    <value>cash</value>

  </item>

  <item>

    <label>Credit</label>

    <value>cc</value>

  </item>

</select1>

<input ref=”number”>

  <label>Credit Card Number:</label>

</input>

<input ref=”expiry”>

  <label>Expiration Date:</label>

</input>

<submit submission=”submit”>

  <label>Submit</label>

</submit>

 

注意这个设计的如下特征:

  • l 用户界面没有硬编码要求使用单选按钮。不同的设备(如语音浏览器)可以以合适的方式显示”单选”的概念。
  • l 核心表单控件总是含有直接与它们关联的标签作为子元素—-这个关键特性用来增强易用性。
  • l 没有必要存在一个form元素来包含这些标记,这与HTML不一样。(参见2.4 多表单文档 获得如何在一个文档中创建多个表单的细节)
  • l 表示表单控件的标记与HTML表单相比要简单。

可以绑定表单控件到模型的能力使得把XForms集成到其他宿主语言(host language)简单化了,因为可以使用任何表单控件的标记绑定到模型。

2.2 提供XML实例数据

XForms Processor可以直接提交XML格式的数据,在这个例子中,提交的数据如下所示:

 

<ecommerce>

  <method>cc</method>

  <number>1235467789012345</number>

  <expiry>2001-08</expiry>

</ecommerce>

 

XForms处理器通过这个实例数据跟踪部分完成的表单的状态。如例子所示,实例数据的初始值可以提供或为空。instance元素本质上保存了当用户填写表单时更新的XML文档。这使得表单设计者可以完全控制提交的XML数据的结构,包括名字空间信息。当表单被提交时,实例数据被序列化成XML文档。下面是前面的例子的另一个版本:

Model

<xforms:model>

  <xforms:instance>

    <payment method=”cc” xmlns=”http://commerce.example.com/payment”>

      <number/>

      <expiry/>

    </payment>

  </xforms:instance>

  <xforms:submission action=”http://example.com/submit” method=”post” includenamespaceprefixes=”#default”/>

</xforms:model>

 

在这个例子中,提交的数据如下所示:

Submitted Data

<payment method=”cc” xmlns=”http://commerce.example.com/payment”>

  <number>1235467789012345</number>

  <expiry>2001-08</expiry>

</payment>

 

这个设计有如下特性:

  • l XML实例数据的结构是非常灵活的,包括使用属性。注意,使用了XML名字空间,表单设计者选择的包装元素(应该指payment)包含了实例数据。
  • l 在XML结构中,空元素number和expiry充当占位符,将被用户提供的表单数据填充。
  • l 通过实例数据提供了表单控件的初始值(”cc”),在这个例子中,是method属性。在提交的XML中,如果用户改变了显示数据的表单控件,初始值将会被用户输入取代。

为了连接实例数据和表单控件,需要改变表单控件的ref属性来指向实例数据中的正确部分,使用如下绑定表达式(binding expression):

Binding Form Controls to Instance Nodes with ref

… xmlns:my=”http://commerce.example.com/payment”

  …

  <xforms:select1 ref=”@method”>…</xforms:select1>

  …

  <xforms:input ref=”my:number”>…</xforms:input>

  …

  <xforms:input ref=”/my:payment/my:expiry”>…</xforms:input>

 

绑定表达式是基于Xpath[XPath1.0]的,包括使用@符号来指向属性,如上所示。注意,为了展示的目的,前两个表达式使用了XPath上下文节点,这个节点默认是最高层元素(在这是my:payment)。第三个表达式显示了绝对路径。

2.3 值约束

XForms允许在表单填充时检查数据的有效性。在没有明确指定收集到的数据的类型信息的情况下,所有的值都以字符串形式返回,但是,可以在实例数据中设置值的类型。在这个例子中,number应该只接受14到18位之间的数字,expiry只接受有效的月/日期组合。

另外,number和expiry的信用卡信息表单控件只有在method中的”cc”选项被选中时是相关的(relevant),而且在这种情况下是必需的。

通过指定一个另外的XForms组成部分—模型条目特性(model item properties),表达设计者可以在表单中包含丰富的的有效性验证信息。这些信息可以从XML Schemas或者另外的XForms专有的补充(specific additions),如relevant中获得。这些特性(应该指relevant)出现在bind元素中,而Schema约束(应该指type)在XML Schema段中表达,可以在内部或外部,例如:

 

Declarative Validation with Model Item Properties

… xmlns:my=”http://commerce.example.com/payment”…

 

  <xforms:model>

    …

    <xforms:bind nodeset=”/my:payment/my:number”

                relevant=”/my:payment/@method = ‘cc’”

                required=”true()”

                type=”my:ccnumber”/>

 

    <xforms:bind nodeset=”/my:payment/my:expiry”

                relevant=”/my:payment/@method = ‘cc’”

                required=”true()”

                type=”xsd:gYearMonth”/>

 

    <xs:schema …>

      …

      <xs:simpleType name=”ccnumber”>

        <xs:restriction base=”xsd:string”>

          <xs:pattern value=”\d{14,18}”/>

        </xs:restriction>

      </xs:simpleType>

      …

    </xs:schema>

  </xforms:model>

 

注意:

在上面的例子中,因为计算表达式(computed expression)的求值上下文节点是通过绑定表达式(参见 7.2求值上下文)决定的,所以relevant表达式使用了绝对路径XPath符号(以/开始),因此,在上面的第一个bind relevant中的相对节点路径应该是相对于/my:payment/my:number的。

 

2.4 一个文档中包含多个表单

XForms处理对一个单独的文档中可以包含的独立表单的数量没有限制。当一个单独的文档包含多个表单时,每个表单需要一个独立的model元素,并有一个id属性,以此可以在包含它的文档中的别处引用它。

另外,表单控件应该指定哪个model元素包含了它们绑定的实例数据。这通过作为绑定属性一部分的model属性来实现。如果没有对绑定元素指定model属性,则使用最近祖先绑定元素的model属性,如果没有,则使用文档中的第一个XForms Model。这个技术叫做’范围解析’(scoped resolution),在XForms中频繁的使用。

下面的例子对电子商务表单添加了一个民意测验。

Adding a poll model

<xforms:model>

  <xforms:instance>

    …payment instance data…

  </xforms:instance>

  <xforms:submission action=”http://example.com/submit” method=”post”/>

</xforms:model>

 

<xforms:model id=”poll”>

  <xforms:instance>

    <helpful/>

  </xforms:instance>

  <xforms:submission id=”pollsubmit” …/>

</xforms:model>

 

另外,下面的标记将在出现在文档的body部分:

Form Controls for poll model

<xforms:select1 ref=”/helpful” model=”poll”>

  <xforms:label>How useful is this page to you?</xforms:label>

  <xforms:item>

    <xforms:label>Not at all helpful</xforms:label>

    <xforms:value>0</xforms:value>

  </xforms:item>

  <xforms:item>

    <xforms:label>Barely helpful</xforms:label>

    <xforms:value>1</xforms:value>

  </xforms:item>

  <xforms:item>

    <xforms:label>Somewhat helpful</xforms:label>

    <xforms:value>2</xforms:value>

  </xforms:item>

  <xforms:item>

    <xforms:label>Very helpful</xforms:label>

    <xforms:value>3</xforms:value>

  </xforms:item>

</xforms:select1>

 

<xforms:submit submission=”pollsubmit”>

  <xforms:label>Submit</xforms:label>

</xforms:submit>

这里的主要区别是使用了model=”poll”来指定实例。注意,submit通过ID指向了submission元素,不需要绑定属性。

更多的Xforms的例子可以在 附录完整的XForms例子中找到。

  • 大小: 2.6 KB
分享到:
评论
1 楼 ghpaas 2014-06-12  
orbeon作为xforms标准的实现,不论其设计器还是运行时度存在很多问题:
设计器:仅仅是提供一个简单的工具,其实更加复杂的功能还需要开发人员手动编码。
并且需要花费大量的时间去熟悉、学习orbeon自身的功能。
运行时:提供的运行时开发人员几乎不能随便修改,造成不够灵活,譬如需要提供一个进度条、定制展现样式、定制对话框等,非常的复杂。
在此向博主及各位推荐使用GForms开发平台http://blog.csdn.net/ghpaas/article/details/30222989,GForms开发平台让开发人员甚至非技术人员在短短几分钟内创建全功能的展现服务,让开发团队更加适应客户和市场的需求,从而提高客户服务和速度实现收益。该开发平台提供可视化的设计器、运行时,设计器基于eclipse开发,非常的简单,完全实现xforms1.1标准,并且支持开发人员编写样式、javascript处理函数等。

GForms开发平台百度上有大量资料,且有iaas云管理平台Demo例子: http://yun.baidu.com/s/1bnznec3#dir/path=%2Fghorse

相关推荐

    XForms入门-官方文档

    二、XForms 的优点 XForms 的出现解决了 HTML 表单的缺陷,提供了更加灵活和强大的解决方案。XForms 的优点包括: * 分离了表单数据模型和表示元素,提供了更加灵活的解决方案。 * 支持 XML 数据模型,提供了更加...

    XForms XML Powered Web Forms

    **XForms:XML驱动的Web表单技术** XForms是一种基于XML的表单设计语言,它为构建交互式、数据驱动的Web应用程序提供了强大的框架。XForms的核心目标是改进传统HTML表单的功能,提高用户体验,简化开发过程,并促进...

    使用 XForms 和 Ajax 创建自动建议表单字段(有BUG)

    在本文中,我们将深入探讨如何使用XForms和Ajax技术创建具有自动建议功能的表单字段。XForms是一种基于XML的表单表示语言,它增强了传统HTML表单的功能,提供了更强大的数据验证和处理能力。而Ajax(Asynchronous ...

    XForms用schema(xsd)验证的一个简单的例子

    XForms是一种基于XML的表单技术,用于创建交互式、数据驱动的Web应用程序。它将传统的HTML表单提升到一个新的水平,提供了更强大、更灵活的数据验证和处理能力。在这个例子中,我们将深入探讨如何使用XForms结合XML ...

    XPath-Next:XPath信息的主要站点下一页

    欢迎使用XPath下一页 这是W3C XPath Next Community Group的github项目: : XPath Next是一个收集来自以下方面的XPath标准演进需求的地方: ... XForms: XForms 1.0 , XForms 1.1 , XForms 2.0 XProc: XProc

    xforms&ria

    ### XForms技术在RIA中的应用及其重要特性 #### 概述 随着互联网技术的发展和XML的广泛应用,RIA(Rich Internet Applications,富互联网应用)已成为现代网络应用的重要组成部分。RIA不仅提升了用户体验,还优化了...

    XForms客户端处理器的研究与实现.pdf

    2. **事件处理**:处理器需要能够识别和响应各种XForms事件,如`xforms-submit`、`xforms-validate`等,这些事件控制着表单的行为。 3. **数据验证**:处理器需内置一套强大的数据验证机制,根据表单定义的约束条件...

    XForms 基础知识

    XForms 是一种基于 XML 的表单标准,旨在增强 Web 表单的功能,提供更丰富的交互性和数据处理能力。与传统的 HTML 表单相比,XForms 保持了一定的相似性,但增加了许多新特性,使得表单设计更加灵活且易于维护。 在...

    使用 XForms 和 Ajax 创建自动建议表单字段(Eclipse下开发)

    XForms和Ajax(Asynchronous JavaScript and XML)是两种强大的技术,可以帮助开发者创建出具备动态功能和实时交互的表单。本文将深入探讨如何在Eclipse环境中利用XForms和Ajax来实现自动建议的表单字段。 XForms是...

    XForms 教程

    XForms 是下一代的 HTML 表单。 在我们的 XForms 教程中,您将学习如何在应用程序中开始应用 XForms。

    xforms-service:RESTful XForms 处理器服务

    Praekelt XForms 服务 使用和构建的 RESTful XForms 处理服务。配置该服务的配置当前位于example_conf.yml 。 要将其替换为您自己的,只需将文件路径指定为运行时参数(见下文) Dropwizard 还提供有效应用程序配置...

    Addison.Wesley.XForms.XML.Powered.Web.Forms.eBook-LiB.chm

    Addison.Wesley.XForms.XML.Powered.Web.Forms.eBook-LiB.chm Addison.Wesley.XForms.XML.Powered.Web.Forms.eBook-LiB.chm

    QCodo XForms Classes-开源

    **QCodo XForms Classes 开源项目详解** QCodo XForms Classes 是一个专为PHP框架QCodo设计的开源组件,旨在让开发者能够在框架内部方便地实现XFORMS功能。XFORMS是一种基于XML的表单创建标准,它为构建富交互式、...

    WSDL2XForms-开源

    **WSDL2XForms:将Web服务描述语言转化为XForms** **一、WSDL简介** Web Service Description Language(WSDL)是一种XML格式的规范,用于定义网络服务的接口。它详细描述了服务的位置、提供的操作以及如何调用这些...

    XForms for UBL-开源

    **XForms for UBL 开源项目详解** XForms for UBL 是一个专注于通用业务语言 (UBL) 的开源项目,它的核心目标是利用 XForms 技术来创建、处理和编辑基于 XML 的 UBL 文档。XForms 是一种 W3C 标准,专门用于构建富...

    xEAC:xEAC是基于XForms的开源应用程序,用于创建和管理EAC-CPF集合

    XForms后端允许编辑Web表单中的XML文档,并且自动维护源实体和目标实体之间的关系。 也就是说,当CPF关系被添加到指向同一系统内另一个实体的源文档中时,目标文档将被更新以将CPF关系插入回源中。 这些CPF关系的...

    betterform:用于快速XML和Web应用程序开发的工具包-开源

    用于快速XML和Web应用程序开发的工具包,包括完整的XForms 1.1实现以及丰富的小部件和布局容器集。 用于集成自定义控件,功能和数据连接器的可扩展接口。

    XSLT For XForms-开源

    2. **应用XSLT转换**:将项目提供的XSLT样式表应用到你的XML文件上,这将生成一个XForms文档,该文档可以被浏览器解析并显示为交互式的表单。 3. **自定义和扩展**:虽然提供的XSLT样式表提供了一个起点,但你可以...

    XHTML to XForms converter-开源

    这个转换器的出现是为了解决一个问题:随着Web技术的发展,XForms作为一种更强大、更结构化的表单表示方式,已经得到了广泛的认可。然而,许多现有的网站和应用程序仍然使用HTML来构建他们的表单,这可能不支持...

Global site tag (gtag.js) - Google Analytics