Orbeon Forms 3.8

Historical note: Orbeon Forms 3.8 was released on May 17, 2010.


Orbeon Forms 3.8 features over 350 improvements since Orbeon Forms 3.7.1.

This document describes changes made between Orbeon Forms 3.7.1 and Orbeon Forms 3.8.

Orbeon Forms 3.8 was released on May 14, 2010 and is available from the downloads page.

Community Edition and Professional Edition

Orbeon Forms 3.8 is the first release of Orbeon Forms with two separate editions:
  • Orbeon Forms 3.8 CE (Community Edition)
  • Orbeon Forms 3.8 PE (Professional Edition)
For more information on these two editions, please visit the FAQ.

Browser requirements

This release of Orbeon Forms has been tested with the following browsers:
  • Firefox 3.6
  • Safari 4
  • Google Chrome 5
  • Opera 10
  • Internet Explorer 6, 7 and 8
Note that Form Builder requires a recent web browser, including:
  • Firefox 3 or greater
  • Safari 3 or greater
  • Google Chrome
  • Opera 10 or greater
  • Internet Explorer 7 (not recommended) or greater

Noteworthy changes in version 3.8

Form Builder improvements

  • Better test mode. The test mode no longer triggers pop-up blockers and runs the form in the same window/tab as the editor.
  • Improved look. There is now a clear difference between what belongs to the builder vs. the edited form.
  • Form Builder metadata. Form Builder now shows a more user-friendly and better looking dialog when you create a new form.
  • Form Builder usability. You can now save a form right after you create it. All mandatory field have a default value.
  • Documentation. The Form Builder user documentation is now available in English and in French.
  • Screencast. Don't miss the Form Builder screencast.

Form Runner Improvements

  • A better search interface. Easily switch between free-text and structure search.
  • An improved table view. The view uses the new datatable XBL component.
  • MySQL support. Store forms and attachments into the open source MySQL database.

Better demos landing page and demo forms

The online demos landing page has been updated to better present the major Orbeon Forms forms and samples. The following forms are now available:

Improved XForms Controls example

The XForms Controls example:
  • features more controls organized by types
  • is internationalized
  • is automatically produced from the Controls Form designed with Form Builder

Improved XBL components support

The XBL implementation has matured, allowing for new XBL components like the tabview and accordion.

For more information on XBL support, see XBL - Guide to Using and Writing XBL Components.

New built-in XBL controls

New components include:

See XBL - Existing XBL Components for a list of all the components.

Improvements to UI / refresh events

Events such as xforms-value-changed, xforms-enabled, etc. have been revisited for more consistency and reliability.

Improved HTML layout for XForms controls

The new "span" HTML layout is available and can be used to facilitate CSS styling in particular. This layout is not enabled by default in this release.

Other XForms improvements

  • Asynchronous submissions.
  • Id resolution algorithm.
  • Control focus algorithm
  • Support for keypress events
  • Deprecation of the nodeset attribute
    • XForms 1.2 proposes to deprecate the nodeset attribute. You can now instead use the ref attribute everywhere.
  • NTLM support
    • Submissions and instances can specify a domain used for HTLM authentication.
  • And much more!

Other non-XForms improvements

  • Themes.
    • We now have easy per-application themes! Just put the theme stylesheet under an app's folder and it will be picked up.
  • Secure Copy support.
    • The oxf:file XPL processor now supports copying files with scp.
    • This feature was kindly sponsored by Teleflex.

On the side

  • GitHub. The Orbeon Forms source has just migrated to github! Please do not use the old CVS repository anymore.
  • TeamCity. Our automatic build system now uses TeamCity. It pushes the automatic builds to the same place as before.
  • New hosting. The Orbeon web site and online demos are now hosted on a much better server, and we have made a bunch of improvements to the web site. Please let us know if you have any issues!

Complete list of issues addressed in this release

Compatibility notes

Properties files

In this version, the standard properties files including properties-base.xml, etc. are stored within orbeon-resources-private.jar instead of being available under WEB-INF/resources/config. This change has been made to make it clearer that these files should not be changed and that properties-local.xml should be used instead.

See Configuration Properties for more details.

Old-style widgets support

In this version, XBL-based UI components are now considered the standard mechanism to create custom UI components. The old-style XSLT stylesheet-based mechanism has now been removed:
  • xforms-widgets.xsl is now stored into orbeon-resources-private.jar and should not be considered a form author's feature anymore
  • xforms-widgets.css has been removed
  • the <widget:tabs> tabview control is replaced with the new <fr:tabview> XBL control
  • for backward compatibility, xforms-widgets.xsl converts <widget:tabs> into <fr:tabview> 
  • instead of <widget:xforms-instance-inspector>, use <fr:xforms-inspector> 

Migration to Saxon 9.1

Orbeon Form relies on the Saxon XSLT transformer and XPath engine. In this version, Orbeon Forms uses Saxon 9.1 (previously it used Saxon 8.8). Since the upgrade is a major change, some incompatibilities in XSLT handling may arise in some corner cases.

HTML elements used to represent help, hint, and alert XForms elements

HTML elements used to represent help, hints and alerts have changed from <label> to <span>. The reason is that in HTML, it is expected that only one <label> element is used for a control, and multiple <label> elements confuse screen readers. See also this bug.

You can override this with properties:

<property as="xs:string" name="oxf.xforms.label-element" value="label"/>
<property as="xs:string" name="oxf.xforms.hint-element" value="span"/>
<property as="xs:string" name="oxf.xforms.help-element" value="span"/>
<property as="xs:string" name="oxf.xforms.alert-element" value="span"/>

Or on your XForms model:

<xforms:model xxforms:hint-element="label">

UI / refresh events

Due to the important UI events changes, note the following:
  • xforms-enabled / xforms-disabled events
    • these events are now sent only upon creation / destruction of controls
  • Other MIP events
    • the order of MIP events may have changed
    • when a control becomes relevant, not all MIP events are sent
    • when a control becomes non-relevant, not all MIP events are sent
    • when a control value changes, not all MIP events are sent

New HTML layout for XForms controls

If you enable the new "span" layout for XForms controls, note that your CSS rules might have to be modified, for example:

.xforms-layout-nospan .xforms-textarea,         // covers "nospan" layout
  .xforms-layout-span .xforms-textarea textarea // covers "span" layout
    width: 100%

XForms inspector

The XForms Inspector is now an XBL component. You use it as follows:


If the "fr" prefix is not defined in your page yet, you can write:

<fr:xforms-inspector xmlns:fr="http://orbeon.org/oxf/xml/form-runner"/>

The older <widget:xforms-instance-inspector/> is still supported for backward compatibility, but it is deprecated.

XSLT output location information

During development, the following XSLT transformer configuration helps with line number errors. The following values are allowed:
  • none: no XSLT output line number information provided. This is the default, and recommended for deployment.
  • dumb: minimal XSLT output line number information provided.
  • smart: maximal XSLT output line number information provided. This is recommended for development.

<property as="xs:string" processor-name="oxf:builtin-saxon" name="location-mode" value="none"/>
<property as="xs:string" processor-name="oxf:unsafe-builtin-saxon" name="location-mode" value="none"/>
<!-- This property was used prior to January 2010 builds -->
<property as="xs:string" processor-name="oxf:saxon8" name="location-mode" value="none"/>

Java 1.5 or greater is now required

Previous versions of Orbeon Forms worked with Java 1.4.x. With this version, Java 1.5 is now required, and Java 1.6 is recommended.

Autocomplete appearance on <xforms:select1> is deprecated

The new and improved <fr:autocomplete> control supersedes the xxforms:autocomplete appearance on <xforms:select1>, which is now deprecated.

If you encounter issues with the xxforms:autocomplete appearance, you should consider upgrading to the new autocomplete control.

Removal of Xalan and XSLTC from the distribution

These two older XSLT processors have been removed from the Orbeon Forms distribution. If you used them explicitly (with oxf:xalan and oxf:xsltc) and still require them, you can put your own JAR files into the Orbeon Forms WEB-INF/lib directory or into your servlet container classpath.

Configuration of XForms logging

Instead of configuring multiple log4j loggers for XForms, a single logger is now used, and properties configure the fine grain of logging.

See XForms - Logging.

Deprecation and removal of Java classes

The following classes, usually referenced from web.xml and portlet.xml, are still available but deprecated:
  • OPSServletContextListener and OPSServletContextListenerDelegate:
    • use OrbeonServletContextListener and OrbeonServletContextListenerDelegate instead.
  • OPSSessionListener and OPSSessionListenerDelegate:
    • use OrbeonSessionListener and OrbeonSessionListenerDelegate instead.
The following classes have been deprecated for a long time and are now removed:
  • OXFServletContextListener and OXFServletContextListenerDelegate:
    • use OrbeonServletContextListener and OrbeonServletContextListenerDelegate instead.
  • OXFSessionListener and OXFSessionListenerDelegate:
    • use OrbeonSessionListener and OrbeonSessionListenerDelegate instead.