XForms Compliance

1. Scope

PresentationServer's form handling is based on the XForms 1.0 W3C Recommendation. This section describes in details the current level of compliance of each XForms 1.0 feature. Please visit the XForms reference documentation for more information about using XForms with PresentationServer.

2. Compliance Matrix

XForms Specification Section Comment Conformance
2. Introduction to XForms 2.1 An Example Fully supported
2.2 Providing XML Instance Data Fully supported
2.3 Constraining Values Data entered by the end-user can be validated with a schema referenced from the the XForms model, or with model item properties (relevant, constraint, or type) defined in the XForms model. However, it is not yet possible to have an inline schema in the XForms model. It is also not possible to reference a type declared in a schema from the type model item property.

[RFE 1076200]
[RFE 1076207]

Partially supported
2.4 Multiple Forms per Document You can have multiple forms in a given page; however you can only have one XForms model per page. If you have multiple forms on the same page, all the controls on the page will be bound to the nodes in the same XForms instance.

[RFE 1076212]
[RFE 1076217]

Partially supported
3. Document Structure 3.1 The XForms Namespace Fully supported
3.2 XForms Core Attribute Collections 3.2.1 Common Attributes Fully supported
3.2.2 Linking Attributes [RFE 1076243] Not supported yet
3.2.3 Single-Node Binding Attributes The ref and bind attributes are supported. The model attribute is not supported.

[RFE 1076212]

Partially supported
3.2.4 Node-Set Binding Attributes The nodeset and bind attributes are supported. The model attribute is not supported.

[RFE 1076212]

Partially supported
3.2.5 Model Item Property Attributes Model item properties are supported on the <xforms:bind> elements but not on XForms controls. For details on support for individual model item properties, see section 6.1.

[RFE 1076359]

Partially supported
3.3 The XForms Core Module 3.3.1 The model Element The <xforms:model> element cannot be used in a view. The functions attribute is not supported. It is not possible to reference multiple schemas with the schema attribute (only one schema is supported.

[RFE 1076217]
[RFE 1076372]
[RFE 1076373]

Partially supported
3.3.2 The instance Element Fully supported
3.3.3 The submission Element Only the method, action, and encoding attributes are supported. See section 11 for more details on the submission mechanism.

[RFE 1076217]
[RFE 1076380]
[RFE 1076381]

Partially supported
3.3.4 The bind Element The id attribute on <xforms:bind> is not supported.

[RFE 1059115]

Partially supported
3.4 The XForms MustUnderstand Module

[RFE 1076389]

Not supported yet
3.5 The XForms Extension Module 3.5.1 The extension Element The <extension> element can be used by a host language. PresentationServer does not have any constraint on the host language and since no language leverages this element, its use is forbidden at this point. To adhere more closely to specification, the <extension> element should be authorized and just ignored.

[RFE 1076393]

Partially supported
4 Processing Model

Events are not supported. This means that it is not possible to trigger the execution of an action (e.g. display a message dialog, or set the value of a node in the instance to a certain value) when a certain event occurs (e.g. the user changes the selected item in a combo box, or enters an invalid value in a text field).

Even though events are not supported, it is still possible to implement the same functionality on the server-side with Presentation Server.

Consider for example a page with 2 controls: a combo box and a text field. You want to display or hide a text field depending on the value selected by the end-user in the combo box. When the end-user changes the selection through the combo box, the instance gets updated with the newly selected value. A relevant model item property determines if the text field is to be displayed based the value selected in the combo box.

With events, you can generate an xforms-refresh event when the combo box selected value changes, which will reevaluate the relevant model item property and appropriately hide or display the text field.

Without events (in the current version of PresentationServer), you attach to the combo box JavaScript that submits the form when the selected value changes. On the server-side the instance gets updated, the relevant model item property evaluated and accordingly the text field is displayed or hidden. The two drawbacks in this case are:

  • a round-trip to the server is required
  • the solution is not portable to other XForms implementations
Not supported yet
5 Datatypes 5.1 XML Schema Built-in Datatypes The specification indicates that an XForms engine must support all XML Schema datatypes except for xsd:duration, xsd:ENTITY, xsd:ENTITIES, and xsd:NOTATION. PresentationServer supports all XML Schema datatypes, including those.

[RFE 1078077]

Partially supported
5.2 XForms Datatypes 5.2.1 xforms:listItem XForms-specific datatypes are not supported. However you can use all the XML Schema built-in datatypes.

[RFE 1078089]

Not supported yet
5.2.2 xforms:listItems Not supported yet
5.2.3 xforms:dayTimeDuration Not supported yet
5.2.4 xforms:yearMonthDuration Not supported yet
6 Model Item Properties 6.1 Model Item Property Definitions 6.1.1 The type Property In PresentationServer no error is triggered if the same model item property is set twice on the same node. Also the inheritance rules for model item properties are not supported. This applies to all the model item properties (section 6.1).

[RFE 1078088]
[RFE 1078545]

Partially supported
6.1.2 The readonly Property The default value for the readonly property is always false (it should be true when a calculate property is specified).

[RFE 1078092]

Partially supported
6.1.3 The required Property PresentationServer does check that required elements do not have a xsi:nil="true" attribute.

[RFE 1078528]

Partially supported
6.1.4 The relevant Property When required="true()" and relevant="false()" for a given node, and the node is empty, the engine should not report this as an error.

[RFE 1078552]

Partially supported
6.1.5 The calculate Property Partially supported
6.1.6 The constraint Property Partially supported
6.1.7 The p3ptype Property The model item property is not supported.

[RFE 1078562]

Not supported yet
6.2 Schema Constraints 6.2.1 Atomic Datatype Checking the type of an element based on the xsi:type attribute on that element in the instance is not supported.

[RFE 1078567]

Partially supported
7 XPath Expressions in XForms 7.1 XPath Datatypes Fully supported
7.2 Feature string for the hasFeature method call

Exposing the instance with the DOM interface is not mandated by the specification. In PresentationServer the instance is not exposed through the DOM API, consequently the hasFeature method and all the instance data methods cannot be used.

In PresentationServer, the model item properties computed by the XForms engine (validity, type, ...) for the content of an element are exposed to the user through attributes in the http://orbeon.org/oxf/xml/xforms namespace, usually using the prefix xxforms.

[RFE 1008413]

Fully supported
7.3 Instance Data Fully supported
7.4 Evaluation Context Fully supported
7.5 Binding Expressions 7.5.1 Dynamic Dependencies According to the specification XPath expressions that create dynamic dependencies should not be allowed as binding expression. Presentation Server does not enforce this restriction, and any valid XPath expression can be used as a binding expression.

[RFE 1078655]

Partially supported
7.5.2 Model Binding Expressions Fully supported
7.5.3 UI Binding Expressions Fully supported
7.5.4 UI Binding in other XML vocabularies Fully supported
7.5.5 Binding Examples Fully supported
7.6 XForms Core Function Library Fully supported
7.7 Boolean Functions 7.7.1 The boolean-from-string() Function Fully supported
7.7.2 The if() Function The if function defined by XForms clashes with the if keyword of XPath 2.0. We recommend you use the XPath 2.0 if statement instead of the function. In case you want to use the XForms function, it is available under the name xfif. We are not planning to support the XForms if function in future versions of PresentationServer, as the future versions of the XForms specification are expected to use XPath 2.0 and consequently to deprecate the if function. Partially supported
7.8 Number Functions 7.8.1 The avg() Function Fully supported
7.8.2 The min() Function Fully supported
7.8.3 The max() Function Fully supported
7.8.4 The count-non-empty() Function Fully supported
7.8.5 The index() Function The argument of the index function references and id defined on a <xforms:repeat> element. With PresentationServer, it is only valid to call the index function with an id referencing a <xforms:repeat> element that is an ancestor of the element from where the index function is called.

[RFE 1078684]

Partially supported
7.9 String Functions 7.9.1 The property() Function Fully supported
7.10 Date and Time Functions 7.10.1 The now() Function Fully supported
7.10.2 The days-from-date() Function Fully supported
7.10.3 The seconds-from-dateTime() Function Fully supported
7.10.4 The seconds() Function Fully supported
7.10.5 The months() Function Fully supported
7.11 Node-set Functions 7.11.1 The instance() Function The instance() function is not supported as multiple instances per document are not supported. Not supported yet
7.12 Extension Functions Extension functions are not supported.

[RFE 1078684]

Not supported yet
8 Form Controls 8.1 The XForms Form Controls Module 8.1.1 Implementation Requirements Common to All Form Controls The inputmode and incremental attributes are not supported.

[RFE 1078708]
[RFE 1078709]

Partially supported
8.1.2 The input Element Fully supported
8.1.3 The secret Element Fully supported
8.1.4 The textarea Element Fully supported
8.1.5 The output Element The value attribute is not supported. The element cannot be embedded inside a <xforms:label>, <xforms:hint>, <xforms:help>, <xforms:alert>, and <xforms:message>. Instead, use the single node binding attributes available on those elements.

[RFE 1078702]
[RFE 1078703]

Partially supported
8.1.6 The upload Element The mediatype attribute is not supported. According to the specification, you should only bind this control to datatypes xs:anyURI, xs:base64Binary, or xs:hexBinay, or types derived by restriction from them. PresentationServer does not enforce this constraint.

[RFE 1078715]
[RFE 1078721]

Partially supported
8.1.7 The range Element This control is not supported at this point.

[RFE 1078723]

Not supported yet
8.1.8 The trigger Element This control is not supported at this point.

[RFE 1078725]

Not supported yet
8.1.9 The submit Element PresentationServer does not mandate the presence of the submission attribute.

[RFE 1078726]

Partially supported
8.1.10 The select Element The control does not indicate an out-of-range condition if the value in the instance have no corresponding choice item.

[RFE 1078733]

Partially supported
8.1.11 The select1 Element Fully supported
8.2 Common Markup for Selection Controls 8.2.1 The choices Element Fully supported
8.2.2 The item Element Fully supported
8.2.3 The value Element PresentationServer does not enforce that the value is valid according to the datatype bound to the selection control.

[RFE 1080092]

Partially supported
8.3 Additional Elements 8.3.1 The filename Element Fully supported
8.3.2 The mediatype Element Fully supported
8.3.3 The label Element Fully supported
8.3.4 The help Element Fully supported
8.3.5 The hint Element Fully supported
8.3.6 The alert Element Fully supported
9 XForms User Interface 9.1 The XForms Group Module 9.1.1 The group Element Labels on groups are ignored (i.e. no special rendering is provided).

[RFE 1080099]

Fully supported
9.2 The XForms Switch Module 9.2.1 The switch Element [RFE 1056474] Not supported yet
9.2.2 The case Element Not supported yet
9.2.3 The toggle Element Not supported yet
9.3 The XForms Repeat Module 9.3.1 The repeat Element Fully supported
9.3.2 Creating Repeating Structures Via Attributes Using attributes instead of elements to create repeating structures is not supported. Note that this is useful only when the host language does not permit XForms elements, which does not happen in PresentationServer.

[RFE 1080102]

Not supported yet
9.3.3 The itemset Element Fully supported
9.3.4 The copy Element The <xforms:copy> only copies simple content, not subtree of data

[RFE 1080107]

Partially supported
9.3.5 The insert Element Nodes of type xs:ID are not modified to remain unique values in the instance after the insertion.

[RFE 1080113]

Partially supported
9.3.6 The delete Element Fully supported
9.3.7 The setindex Element The setindex action is not supported.

[RFE 1080117]

Not supported yet
9.3.8 Repeat Processing Fully supported
9.3.9 Nested Repeats Fully supported
9.3.10 User Interface Interaction Fully supported
10 XForms Actions 10.1 The XForms Action Module 10.1.1 The action Element [RFE 1080124] Not supported yet
10.1.2 The dispatch Element [RFE 1080125] Not supported yet
10.1.3 The rebuild Element [RFE 1080126] Not supported yet
10.1.4 The recalculate Element [RFE 1080128] Not supported yet
10.1.5 The revalidate Element [RFE 1080129] Not supported yet
10.1.6 The refresh Element [RFE 1080130] Not supported yet
10.1.7 The setfocus Element [RFE 1080131] Not supported yet
10.1.8 The load Element [RFE 1080132] Not supported yet
10.1.9 The setvalue Element Fully supported
10.1.10 The send Element [RFE 1080133] Not supported yet
10.1.11 The reset Element [RFE 1080134] Not supported yet
10.1.12 The message Element Only modal level is supported. [RFE 1080143] Partially supported
10.1.13 Actions insert, delete and setindex Fully supported
11 Submit 11.1 The xforms-submit Event [RFE 1080151] Not supported yet
11.2 Submission Options Fully supported
11.3 Serialization as application/xml

The serialization and method attributes are supported in PresentationServer but their semantic is different than the one described in the specification. In PresentationServer your back end code always receives the instance data as XML (in general as the input to a pipeline), regardless of the encoding or method used between the Web browser and the server. However you might want to set one or both of those attributes to get around the limitations of a particular serialization/method or use a particular serialization/method that is best suited in your case.

By default the method is get and the serialization is application/x-www.form-urlencoded. In general, you might want to change the method to post to bypass URL length limitation of certain browsers, and you have to use the multipart/form-data if your form contains an upload control.

Partially supported
11.4 Serialization as multipart/related Partially supported
11.5 Serialization as multipart/form-data Partially supported
11.6 Serialization as application/x-www-form-urlencoded Partially supported
11.7 The post, multipart-post, form-data-post, and urlencoded-post Submit Methods Partially supported
11.8 The put Submit Method Partially supported
11.9 The get Submit Method Partially supported