This page provides a non-exclusive, unordered list of XForms future features. The intent of this list is to provide starting points for parallel development of spec-ready text for these features.
The features you find here may or may not be adopted into XForms in the future, or similar features may be adopted that solve use cases.
Here is an automatic list of CategoryXFormsFutureFeatures.
Here is a manual list of Future Features.
Contents
XForms 1.2: Streamlined for Web Application Authors
XForms 1.2 Modularization
Overview
The Data Layer Specifications
The Data Island Module
The Data Binding Attributes Module
The Data Accessors Module (setvalue, insert, delete)
The Submission Module
The XPath Functions Modules
The Model Layer Specifications
The Model Container Module
The Model Item Property Binding Module
The Validation Module (constraint, required, type, datatypes)
The XML Schema Validation Module
The Relevant Module
The Readonly Module
The Calculate Module
The User Interface Layer Specifications
The Form Controls module
The Input Form Controls (input, textarea, select1, select, range, ...)
The Output Form Control module
The trigger control and submit control modules
The Container Form Controls Modules (group, switch, repeat)
The Label , Hint , Help , Alert , and Message Modules
The XForms Module
More Detailed
Specifications for Data Layer
The Data Island module - Charlie
- Create instance element that provides data separately from the document
- instance element may have id attribute and may have child element
- Function for getInstanceDocument()
- Function for replaceInstanceDocument()
- Function to load instance, which dispatches event data-instance-load, cancelable and bubbles, the default processing of which loads the instance.
- Optional to implement src and resource attributes are added to the instance element
The "Data Binding Attributes" module - John
- Defines notion of inscope evaluation context
- Current default for outermost SNB or NSB is an instance data island, but should be defined generically so that consuming profile defines the root
- Create instance attribute with IDREF content to set starting instance, default to instance from starting inscope evaluation context
- Defines the Single Node Binding attribute group
- Defines the Nodeset Binding attribute group
- Put ref in SNB group
- Put nodeset in the NSB group
- Put context in SNB and NSB groups
- Add instance() function, included in the extension functions group
- Add two parameter id() function, included in the extension functions group
- Add context() function, included in the extension functions group
- This module needs to be able to answer the following questions:
- What is the initial inscope eval context of this element?
- What is the amended inscope eval context of this element?
- What is the result of the SNB or NSB?
- Was there an expresssed SNB or NSB (as opposed to the result being equal to the amended context)?
- Defines notion of inscope evaluation context
The Data Accessors module - Charlie
- Defines setvalue with SNB
- Defines insert with NSB
- Defines delete with NSB
- Defines xforms-insert and xforms-delete
- Current default is an instance data island, but should be targeted at a location defined by the consuming profile
- Adds setvalue, insert, delete to Actions group
The submission Module - Uli and John
Includes Need event for submission result received event
- xforms-submit, xforms-submit-done, xforms-submit-error, xforms-submit-serialize
- submission element and attributes
- submission module attributes: Common, resource, action, mode, method, serialization, version, indent, mediatype, encoding, omit-xml-declaration, standalone, cdata-section-elements, separator, includenamespaceprefixes
- XForms driver module would define attributes ref, bind, validate, relevant, replace, target, instance
- submission module child elements: header, method, resource, Actions element group
- submission module: send action element, load action element
Specifications for XPath Functions - John
- Define an extension functions group, identify by a URI for purpose of unique naming only
- Define that a host language can optionally import the extension functions group into the XPath function library as NCName functions
- Data Integrity functions module, included in the extension functions group
- Date and Time functions module, included in the extension functions group
- Conditional functions module, included in the extension functions group
- Math functions module, included in the extension functions group
The Model Layer Specifications
Model module (model element, functions attr, model events, add @model to SNB and NSB bindings)
- Defines model element as a container
- Define model content group, initially to contain zero or more instances; other modules able to add to the model content group
- The model provides scope limiting behavior to binding attributes and instance() function invocations in its subtree
- Defer the @functions attribute because it seems to be the small part of the notion of mustunderstand, which has been removed
- The property() function
- Adds @ model to SNB and NSB groups
- Define the reset action and initial instance storage
- Define a change list management facility (by listening for text data mutations, which may come from setvalue, calculate, or external DOM access)
The bind Module Nick
- Define the bind element
- Add bind element to model content group
- Add @bind to SNB and NSB attribute groups
- Change from nodeset attr to Node Set Binding attributes
- Note that this adds context attribute to the bind element, which is good
- The context attribute changes context for other attributes but does not, in and of itself, change the node to which MIPS are applied (e.g. if no nodeset is expressed)
- Note that a containing model restricts instance attribute to within itself
- Note that a containing model restricts model attr to be itself
- If a bind element has a bind attribute, then the bind element is ignored
Define rebuild action and xforms-rebuild event for model element (if we move xforms-rebuild event to model module this allows us not to refer the model module (it can use the rebuild action ))
- Need to define the generic MIP decoration mechanism
- Allow attributes but also a child element called property
- The property element should have name and calculable value attributes
- For static property values, use property element content
Property is re-evaluated on when rebuild action is called
Appendix that shows how infoset contributions should be implemented when using DOM
The calculate Module (calculate) John
- Define recalculate action and xforms-recalculate event for model
- Add master dependency graph notion to rebuild
- Consumer of change list from model module
- Attributes constraint, required, type (for datatype only)
The Core XForms Typelib Module (adds the 'must' datatypes in xsd and xforms namespaces)
- Define revalidate action and xforms-revalidate event for model element
The XML Schema Validation Module
- schema attr on model
- inline schema
- xsi:type
- full schema validation
- ability to refer to schema-defined datatypes in type
The relevant Module (relevant)
The readonly Module (readonly)
- This module needs to say that conformant implementations will not allow performing of mutations on readonly nodes (according to the rules XForms currently defines)
- This affects getInstanceDocument() so that it returns a DOM whose methods respect non-mutability of readonly nodes
- This affects the setvalue, insert and delete data accessors
- This affects submission instance replacement
The p3ptype Module (p3ptype) MarkB and Paul
The User Interface Layer specifications
The Form Controls module
- Defines the setfocus action
- Define the refresh action and the xforms-refresh event for model elements
- Define UI binding as extending from Single Node Binding to get behaviors of MIPs and notification events (xforms-valid, xforms-invalid, xforms-value-changed, etc.)
- Consumer of change list from model module
- This module allows custom form controls to use UI bindings
Input Form Controls module (input, textarea, select1, select, range, upload, ...)
Output Form Control module - Keith
The trigger control module - Keith
The submit control module - Keith
- Container Form Controls
- The group module
- The switch module
- Includes the toggle action
The Repeat Module
- repeat element
- setindex action
- Augment definition of references and dependencies based on index changes
The repeat attributes Module
The Label module
The Hint Module
The Help Module
The Alert Module
The Message Module - MarkB
The XForms Module - Steven
- Pull together various modules into a package
- Data Instance module
- XPath extension functions library module
- Actions module based on XML Events 2
- Data Accessors module
- Binding attributes
- The model and bind modules
- calculate, relevant, readonly
- Core validation module (constraint, required, type, core typelib)
- XML Schema validation module
- The submission module
- The UI module, UI binding attributes module
- The input controls module
- The output module
- The label module
- The container controls modules (group, switch and repeat modules)
- The message, hint, help, and alert modules
- Provide composition-level semantics for the modules
- Define binding attributes context based on instances
- Ability to use NCNames to invoke functions of the XPath extensions library
- Add label as required to various input controls and optional on other form controls (e.g. trigger, output, group)
- Add help, hint, alert to various form controls
- Define driver-level processing model
- Define xforms-model-construct, xforms-model-construct-done, xforms-ready, xforms-model-destruct
- Based on XML Events 2 as Actions module
- XForms defines an enhanced evaluation context for if and while
- Deferred update concept contributed to Actions module
- Pull together various modules into a package
Mandatory
Make model optional (Strawman - Charlie and Mark)
Allow submission elements without model element (Strawman - Charlie and Mark)
Allow instance elements without model element (Strawman - Charlie and Mark)
Add model item properties to UI level (Strawman - Nick)
Unified evaluation context (Strawman - Nick and John)
Add support for default values without the need of an instance element (Strawman - Nick)
Put @context everywhere (Strawman - John)
Supercedes Put ref or context on action element
Better DOM interface to expose all actions (Strawman - Uli and Nick)
Duplicate: More IDL functions to integrate with AJAX
Supplementary
Model-based switching with switch (Strawman - John)
Supercedes Model-driven switch with case attr
Externally defined models with src attribute (Strawman - Charlie, Mark, John)
Custom XPath functions, e.g sumover(), from host language (Strawman - John)
Same model item property on the same node (e.g. multiple constraints) (Strawman - Nick and Leigh)
XForms 2.0: Refactoring
Componentization
Nested models for convenient grouping and composition (Strawman - Charlie and Mark)
Duplicate Form App modularization
XBL integration (Erik's note: I would use the more general term "Components" to describe the high-level feature. We may or may not use XBL to support components.)
Model
Generalized Constraints in Document
Includes A document() function
- Should include a here() function
View
Repeat pattern (Strawman - Steven)
Default trigger (Strawman - John)
- UI Controls that can manipulate XML subtrees, which includes
- Arbitrary Attachment Capabilities, consisting of
Multiple cases active for some kind of UI switch (like a switch-many)
Should supercede: Indicating whether something is wrong with non-selected cases and non-relevant groups
New UI events (added by Erik)
Context information for UI events (added by Erik)
Consider data formatting in UI controls
Supercedes "Let @value override single node binding on output"
Controller
Create Node (Strawman - Nick)
Dynamic add and delete of form controls, binds, bindings instances, schema
Create a construct for actions that iterates over a nodeset (convenience for @while)
XForms Timer (capability available in 1.1 using delay on dispatch)
Submission
Need binary data support for submission data and submission result
Submission some kind of better filtering than relevance that affects only submission and not the UI
Foundations
Need ability to conditionally cancel events (integrate XML Events 2.0)
XForms 2.0 Modularization
This includes new modules and refinement of some existing modules from XForms 1.2. New modules include the XML Signatures Module and the SCXML module. Refinements include updates to the Model module to allow pluggable schema engines and updates to the Instance module to allow pluggable reference engines and possibly data formats.
The XForms message module MarkB and Steven
- message, help, hint, alert
The XForms instance data module Charlie, Uli and John
- Include insert/delete/setvalue and "get (string) value"
- Parse, serialize
- Pluggable reference engine
Includes Add support for multiple expression languages
Supercedes Alignment with XPath 2.0
- May include pluggable data format, e.g. JSON data
Data Properties module Uli and John
- MIP values/inheritance, overall validity, user-defined
Model module (understands bind module, deferred updates, etc.)
Bind Module (constraint, type, calculate, relevance, readonly, p3ptype, user-defined)
Validation Module (includes pluggable schema engines)
May include Schema attr on instance
May include Validation attr on instance to control strict/lax/skip
XForms actions module (include user-defined actions, deferred update)
User Interface module (combines Container and Atomic form control modules)
Container Form Controls module (group, switch, repeat, user-defined)
Input Form Controls module (input, textarea, select1, ..., user-defined)
- May include or rely on user-defined actions
Unassigned (post 2.0, or possibly not version-specific)
Multiple step undo (e.g. undo to last state)
multiple schemas targeting same namespace (e.g. allow inline schema to augment external schema; similar to having the internal one import the external one).
Wiki Markup for XForms (Creation of interactive content)