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>اسم الأول</label>
</input>
<input ref="name/lname">
<label>اسم العائلة</label>
</input>

上面例子中的 ref="name/fname" 属性是一个指向实例模型中 <fname> 元素的 XPath 表达式。它可将输入域ربط到正从表单收集数据的 XML 文档(实例)中的 <fname> 元素。

XForms 用户界面也可以使用引用:

<input ref="/person/name/fname">
<label>اسم الأول</label>
</input>
<input ref="/person/name/lname">
<label>اسم العائلة</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>اسم الأول</label>
</input>
<input bind="lastname">
<label>اسم العائلة</label>
</input>

لماذا هناك طريقتان لربط عنصر مكعبات الإدخال بالبيانات الخاصة بالمثال؟

ماذا يمكن أن نقول، عندما تبدأ في استخدام XForms في تطبيقات معقدة، ستجد أن bind يُمثل طريقة أكثر مرونة للتعامل مع نماذج متعددة وإدخالات متعددة.