XForms 和 XPath
XForms 使用 XPath 对数据急性寻址。这个过程被称为绑定。
XForms 绑定
XForms 使用两个部分来定义数据:XForms 模型和 XForms 用户界面。
XForms 模型是针对数据的一个 XML 模板(实例),而 XForms 用户界面是对数据输入和显示的描述。
XForms 使用 XPath 来定义这个两个部分的连接。这被称为绑定(binding)。
XPath
XPath 用于定义 XML 文档的各部分的 W3C 标准语法。
XPath 使用路径表达式来标示 XML 文档中的节点。这些表达式与您在计算机系统中看到的文件路径表达式非常类似。
XPath 表达式:
- /person/fname
对 XML 文档中的 fname 节点进行寻址:
- <person>
- <fname>David</fname>
- <lname>Smith</lname>
- </person>
在我们的 XPath 教程 中学习更多有关 XPath 的知识。
使用 Ref 进行绑定
XForms 模型是这样的:
- <instance>
- <person>
- <name>
<fname/>
<lname/>
- </name>
- </person>
- </instance>
XForms 用户界面可使用 ref 属性来捆绑 <input> 元素:
- <input ref=
"name/fname"
>- <label>First Name</label>
- </input>
- <input ref=
"name/lname"
>- <label>Last Name</label>
- </input>
上面例子中的 ref="name/fname" 属性是一个指向实例模型中 <fname> 元素的 XPath 表达式。它可将输入域捆绑到正从表单收集数据的 XML 文档(实例)中的 <fname> 元素。
XForms 用户界面也可以使用引用:
- <input ref=
"/person/name/fname"
>- <label>First Name</label>
- </input>
- <input ref=
"/person/name/lname"
>- <label>Last Name</label>
- </input>
在上面的例子中,XPath 表达式起始部位的正斜杠 (/) 指示 XML 文档的根。
使用 Bind 进行绑定
XForms 模型是这样的:
- <model>
- <instance>
- <person>
- <name>
<fname/>
<lname/>
- </name>
- </person>
- </instance>
- <bind nodeset="/person/name/fname" id="firstname"/>
- <bind nodeset="/person/name/lname" id="lastname"/>
- </model>
XForms 用户界面可使用 bind 属性来捆绑 <input> 元素:
- <input bind=
"firstname"
>- <label>First Name</label>
- </input>
- <input bind="
lastname"
>- <label>Last Name</label>
- </input>
为什么会有两种将输入控件元素捆绑到实例数据的方法呢?
怎么说呢,当您在复杂的应用程序中开始使用 XForms 时,您会发现,使用 bind 进行绑定是一种更灵活的处理多重表单和多重实例模型的方法。