XForms 1.2 Modularization

From W3C XForms Group Wiki (Public)

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)?
  • 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
  • The validation 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, ...)
  • 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