Comments? Feedback?

This wiki does not yet support public comments (a limitation of Google Sites), so we encourage you to post your comments either:

On Twitter by responding to @orbeon.

On our community mailing list: subscribe sending an email to ops-users-subscribe@ow2.org (content of subject/body doesn't matter), you'll get a response with the email to use to send your message to the community mailing list.

Recent site activity

Form Builder - Data Format

Rationale

Not every possible XHTML+XForms document can be loaded by Form Builder and Form Runner. This document describe the constraints on the XHTML+XForms so that they can run smoothly.

Main idea

Instead of relying on special configuration files, Form Runner expects to gather as much information as possible from the XHTML+XForms to run. This is done in two ways:

  • The structure of the form must follow a certain pattern.
  • Annotation a la microformat, by using special classes on some elements.

Form Structure

[TODO]

Form Metadata

TODO

Form Data

TODO

Validation, Types, and Calculated Values

[TODO]

All controls and sections have associated xforms:bind (NOTE: this was not the case in earlier versions). This allows easily controlling:
  • Controls
    • visibility (@relevant)
    • read-only-ness (@readonly)
    • type (@type)
    • required-ness (@required)
    • calculated values (@calculate)
  • Sections
    • visibility (@relevant)
    • read-only-ness (@readonly)
The code builds a binds hierarchy as follows:

<xforms:bind id="fr-form-binds" nodeset="instance('fr-form-instance')">
    <xforms:bind id="section-1-bind" nodeset="section-1">
        <xforms:bind id="control-1-bind" nodeset="control-1" type="xforms:date"/>
        <xforms:bind id="control-2-bind" nodeset="control-2" type="xs:time"/>
        <xforms:bind id="control-3-bind" nodeset="control-3" type="xs:dateTime"/>
    </xforms:bind>
    <xforms:bind id="section-2-bind" nodeset="section-2" relevant="true()"/>
</xforms:bind>

Operations:
  • insert control -> insert bind and parent section bind
  • delete control -> delete bind if found
  • insert section -> insert bind
  • delete section -> delete bind if found

Localized Resources

TODO

Services and Actions

TODO

Form Runner Summary Page

Introduction

The Form Runner Summary page must obtain some information about the form to run in order to:

  • Display form metadata such as form title
  • Display column headers in the document list
  • Display structured search fields

More metadata information may be needed in the future, so a generic approach is needed.

Column Headers and Structured Search

This is controlled through class annotations. See below.

Form Title and Form Description

The form title and description are obtained from the form metadata section.

CSS Classes

Some CSS classes are added by Form Builder to XForms elements as annotations:

A form control (xforms:input, etc.) that needs to appear as a column in the summary page is marked with the fr-summary class. E.g.:

<xforms:input class="fr-summary" ...>

A form control that must be part of the structured search is marked with the fr-search class. E.g.:

<xforms:input class="fr-summary fr-search" ...>

A form control that contains an email address to be used for sending confirmation emails is marked with the fr-email-recipient class. E.g.:

<xforms:select1 class="fr-email-recipient" ...>

Form Runner Detail Page

TODO