XForms и XPath

XForms использует XPath для быстрого адресации данных. Этот процесс называется привязкой.

Привязка XForms

Два компонента используются для определения данных в XForms: модель XForms и интерфейс пользователя XForms.

Модель XForms - это XML-шаблон (например), предназначенный для данных, а интерфейс пользователя XForms - это описание ввода и отображения данных.

XForms использует XPath для определения соединения этих двух частей. Это называетсяПривязка (binding).

XPath

XPath используется для определения стандартной грамматики частей XML-документа по стандарту W3C.

XPath использует выражения путей для указания узлов в XML-документе. Эти выражения очень похожи на выражения путей, которые вы видите в вашей компьютерной системе.

Выражение XPath:

/person/fname

Адресация узла fname в XML-документе:

<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" в примере выше является XPath-выразием, указывающим на элемент <fname> в модели примера. Оно может指向привязкадо 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 для привязки - это более гибкий способ обработки множественных форм и множественных моделей инстансов.