Making the Connection—Binding

The remaining detail is how to associate model item properties with particular instance data nodes. The answer is binding, but it’s worth being extra clear with terminology: a bind has two ends, one side in the XForms Model, and the other side at a form control. On the bind element within the XForms Model, the nodeset attribute holds the Model Binding Expression. On the other end, in the user interface, is the UI Binding Expression. This end may be bound two ways, using either IDREFs or XPath.

With IDREFs

The recommended way to perform binding is to put an id attribute on each bind element, and refer back to this with a bind attribute on each form control:

<!-- in the XForms Model -->
<xforms:bind nodeset="email" id="mybind" required="true()"/>
...
<!-- later in the document -->
<xforms:input bind="mybind"...>

This approach is distinguished by the use of the bind attribute on form controls. The main advantage of this approach is that it maintains separation between the model and the view. If the structure of the instance data were to change, only the attributes on the bind elements would need to be updated. In large organizations, form authoring often involves separate teams: a graphic design team to lay out the form, and a systems team to handle the data integration. In such scenarios, IDREF binding provides a perfect interface between content and presentation.

With XPath

Another way to bind is with XPath expressions on the form controls:

<!-- in ...

Get XForms Essentials now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.