XForms/Bind
外观
< XForms
在构建 XForms 应用程序时,您将学习三个核心概念
- 模型是数据元素的树
- 演示是数据元素的树
- 为了构建您的表单,这两棵树需要连接在一起 - 这称为“绑定”
本食谱中的许多练习都提供了此绑定的示例。此过程是这种工作方式的一个小例子。在实践中,有很多方法可以将用户界面绑定到模型。
屏幕图像类似于之前示例中的输入程序。此示例有两个输入字段用于输入人员的姓和名,以及两个输出控件。
<html
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xf="http://www.w3.org/2002/xforms"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<title>Your Title Here</title>
<xf:model>
<xf:instance xmlns="">
<data>
<PersonGivenName/>
<PersonSurName/>
</data>
</xf:instance>
<xf:bind id="PersonGivenName" nodeset="/data/PersonGivenName"/>
<xf:bind id="PersonSurName" nodeset="/data/PersonSurName"/>
</xf:model>
</head>
<body>
<xf:input bind="PersonGivenName" incremental="true">
<xf:label>Input First Name:</xf:label>
</xf:input>
<br/>
<xf:input bind="PersonSurName" incremental="true">
<xf:label>Input Last Name:</xf:label>
</xf:input>
<br/>
<xf:output bind="PersonGivenName">
<xf:label>Output First Name:</xf:label>
</xf:output>
<br/>
<xf:output bind="PersonSurName">
<xf:label>Output Last Name:</xf:label>
</xf:output>
</body>
</html>
以下是模型中绑定数据元素路径到标识符的两行
<xf:bind id="PersonGivenName" nodeset="/data/PersonGivenName"/>
<xf:bind id="PersonSurName" nodeset="/data/PersonSurName"/>
请注意,bind 使用 nodeset,而不是 ref 来指定实例文档中叶元素的路径名。
完成此操作后,每个输入或输出数据元素的用户界面元素只需添加 bind 属性
<xf:input <b>bind="PersonGivenName"</b>>
我们还应该注意到,在本例中,每个数据元素只有一个输入和一个输出。这并不一定是必须的。一个输入可以绑定到多个输出,一个输出也可以依赖于多个输入。一个例子就是使用 bind 语句的“calculate”属性。
以下是 bind 元素的属性及其使用说明
类型
- 将实例变量与特定的 XML 架构数据类型关联
- 扩展或限制架构类型定义
相关
- 根据模型中数据元素的值启用或禁用控件
必需
- 根据模型中数据元素的值有条件地使字段必填
只读
- 根据模型数据元素(例如角色)禁用字段编辑
约束
- 在两个或多个数据元素之间创建复杂的架构约束
- 设置节点集的最小值或最大值的限制
计算
- 在数据元素之间创建计算依赖关系
- 根据其他数据元素计算新数据元素的值
- 在 XForms 中启用类似电子表格的计算