Steven Pemberton, W3C/CWI
Version date: 2010-11-29
Name | Namespace |
---|---|
XForms | http://www.w3.org/2002/xforms |
Events (ev) | http://www.w3.org/2001/xml-events |
Schema (xsd) |
http://www.w3.org/2001/XMLSchema |
Schema for instances (xsi) | http://www.w3.org/2001/XMLSchema-instance |
XHTML | http://www.w3.org/1999/xhtml |
Element | Attributes | Content Model |
---|---|---|
model | Events?, functions(QNameList)?, schema(list of anyURI)?, version (versionList)? | (instance | schema | submission | bind | Action)* |
instance | src(anyURI)?, resource (anyURI)? | (ANY) |
bind | nodeset(XPath), relevant(XPath)?, required(XPath)?, readonly(XPath)?, constraint(XPath)?, calculate(XPath)?, type(QName)?, p3ptype(string)? | (bind)* |
submission | Events?, (ref(XPath) | bind(IDREF))?, resource (anyURI), action(anyURI)?, mode ("asynchronous"|"synchronous")?, method("post"|"get"|"put"|"delete"|"multipart-post"|"form-data-post"|"urlencoded-post"|Any other NCName|QNameButNotNCName)?, validate (boolean)?, relevant (boolean)?, serialization ("application/xml"|"application/x-www-form-urlencoded"|"multipart/related"|"multipart/form-data"|"none")?, version(NMTOKEN)?, indent(boolean)?, mediatype(string)?, encoding(string)?, omit-xml-declaration(boolean)?, standalone(boolean)?, cdata-section-elements(QNameList)?, replace("all"|"instance"|"text"|"none"|qname-but-not-ncname)?, instance(IDREF)?, separator(';' | '&')?, includenamespaceprefixes(NMTOKENS)? |
(resource | method | header)*, Action* |
resource | value(XPath)? | PCDATA |
method | value(XPath)? | PCDATA |
header | nodeset(XPath)?, combine("append"|"prepend"|"replace")? | name, value+ |
name | value(XPath)? | PCDATA |
value | value(XPath)? | PCDATA |
Method | Serialization | Schemes |
---|---|---|
post | xml | http(s) mailto |
put | xml | http(s) file |
get | url encoded | http(s) file |
delete | url encoded | http(s) file |
urlencoded-post | url encoded | http(s) mailto |
form-data-post | multipart form data | http(s) mailto |
multipart-post | multipart related | http(s) mailto |
Element | Attributes | Content Model |
---|---|---|
input | Appearance?, Binding, inputmode(string)?, incremental(boolean)? | label, (UI Common)* |
secret | Appearance?, Binding, inputmode(string)?, incremental(boolean)? | label, (UI Common)* |
textarea | Appearance?, Binding, inputmode(string)?, incremental(boolean)? | label, (UI Common)* |
output | Appearance?, (Binding | value(XPath)), mediatype(string)? | label?, mediatype?, (UI Common)* |
upload | Appearance?, Binding, mediatype(string)?, incremental(boolean)? | label, filename?, mediatype?, (UI Common)* |
range | Appearance?, Binding, start(string)?, end(string)?, step(string)?, incremental(boolean)? | label, (UI Common)* |
trigger | Appearance, Binding? | label, (UI Common)* |
submit | Appearance, Binding?, submission(IDREF)? | label, (UI Common)* |
select | Appearance, Binding, selection("open" | "closed")?, incremental(boolean)? | label, (List UI Common)+, (UI Common)* |
select1 | Appearance, Binding, selection("open" | "closed")?, incremental(boolean)? | label, (List UI Common)+, (UI Common)* |
Element | Attributes | Content Model |
---|---|---|
switch | Appearance?, Binding? | case+ |
repeat | Appearance?, Multibinding, startindex(positiveInteger)?, number(nonNegativeInteger)? | ((Form Controls) | group | switch | repeat | Action)* |
group | Appearance, Binding? | label?, ((Form Controls) | group | switch | repeat | (UI Common))* |
(various) | repeat-nodeset(XPath), repeat-model(IDREF), repeat-bind(IDREF), repeat-startindex(positiveInteger), repeat-number(nonNegativeInteger) | N/A |
Content Set | Attributes | Content Model |
---|---|---|
UI Common | - | help | hint | alert | Action |
List UI Common | - | choices | item | itemset |
UI Content | - | output |
case | selected(boolean)? | label?, ((Form Controls) | group | switch | repeat |Action)* |
choices | - | label?, (List UI Common)+ |
item | - | label, value, (UI Common)* |
itemset | Multibinding | label, (value|copy), (UI Common)* |
filename | Binding | - |
mediatype | Binding, value(XPath){value only when parent is <output>} | - |
value | Binding? | (PCDATA | ANY)* |
copy | Binding? | - |
label | Binding? | (PCDATA | output)* |
help | Binding? | (PCDATA | output)* |
hint | Binding? | (PCDATA | output)* |
alert | Binding? | (PCDATA | output)* |
Attribute set | Attributes |
---|---|
Appearance | appearance("full" | "compact" |
"minimal") |
Binding | (ref(XPath), model(IDREF)?) | bind(IDREF) |
Multibinding | (nodeset(XPath), model(IDREF)?) | bind(IDREF) |
Element | Attributes | Content Model |
---|---|---|
action | Events, Conditional | (Action)* |
delete | Events,Conditional, Multibinding, context (XPath), at(XPath) | EMPTY |
dispatch | Events, Conditional, name(NMTOKEN), targetid(IDREF), delay(nonNegativeInteger)?, bubbles(boolean)?, cancelable(boolean)? | name?, targetid?, delay? [in any order] |
insert | Events,Conditional, Multibinding, context(XPath)?, at(XPath)?, position("before"|"after")?, origin(XPath)? | EMPTY |
load | Events, Conditional, Binding?, resource(anyURI), show("new" | "replace")? | resource? |
message | Events, Conditional, Binding?, level("ephemeral" | "modeless" | "modal") | (PCDATA | output)* |
rebuild | Events, Conditional, model(IDREF) | EMPTY |
recalculate | Events, Conditional, model(IDREF) | EMPTY |
refresh | Events, Conditional, model(IDREF) | EMPTY |
reset | Events, Conditional, model(IDREF) | EMPTY |
revalidate | Events, Conditional, model(IDREF) | EMPTY |
send | Events, Conditional, submission(IDREF) | EMPTY |
setfocus | Events, Conditional, control(IDREF) | control? |
setindex | Events, Conditional, repeat(IDREF), index(XPath) | EMPTY |
setvalue | Events, Conditional, Binding, value(XPath)? | PCDATA |
toggle | Events, Conditional, case(IDREF)? | case? |
case | value(string)? | PCDATA |
control | value(XPath)? | PCDATA |
resource | value(XPath)? | PCDATA |
delay | value(XPath)? | PCDATA |
targetid | value(XPath)? | PCDATA |
name | value(XPath)? | PCDATA |
Attribute set | Attributes |
---|---|
Conditional | if(XPath) | while(XPath) |
Type (all in the XForms namespace, derived as necessary from XSD types, in which case they also allow empty content) | Description |
---|---|
dateTime time date gYearMonth gYear gMonthDay gDay gMonth | Dates and times |
string | |
boolean | |
base64Binary hexBinary | |
float decimal double | |
anyURI | |
QName | |
normalizedString | Multiple whitespace replaced with a single space |
token | |
language | Language code |
Name NCName | |
ID IDREF IDREFS NMTOKEN NMTOKENS | |
integer nonPositiveInteger negativeInteger long int short byte nonNegativeInteger unsignedLong unsignedInt unsignedShort unsignedByte positiveInteger | |
dayTimeDuration yearMonthDuration | Durations |
listItem listItems | |
Email address | |
card-number | Credit card (etc) number |
See XPath Axes
Axis | Shortcut |
---|---|
child |
(empty) |
parent | .. |
self | . |
attribute | @ |
ancestor | |
ancestor-or-self | |
descendant | |
descendant-or-self | // |
preceding-sibling | |
following-sibling | |
preceding | |
following | |
namespace |
| | Union |
* | Wildcard |
[] | Predicate |
+ - * div mod | Arithmetic |
= < <= > >= != and or | Boolean |
Function | Arguments | Returns | Description |
---|---|---|---|
adjust-dateTime-to-timezone | string | string | Date and time converted to the local time zone |
avg | node-set | number | Average |
boolean-from-string | string | boolean | Type conversion |
choose | boolean, object, object | object | The first object if the boolean is true, and otherwise the second |
compare | string, string | number | Whether the first argument is lexicographically less than, equal, or greater than the second |
context | - | nodeset | The context node of the nearest ancestor element of the node containing the XPath expression |
count-non-empty | nodeset | number | How many non-empty nodes there are in the nodeset. |
current | - | nodeset | The context node used for this evaluation |
days-from-date | string | number | Days since epoch (1970) |
days-to-date | number | string | The date so many days after the epoch (1970) |
digest | string, string, string? | string | The first argument encrypted according to the algorithm named in the second, and encoded according to the third. |
event | string | object | A property of the current event of an action |
hmac | string, string, string, string? | The second argument encrypted according to the algorithm named in the second using the key in the first argument, and encodes according to the third. | |
id | object, nodeset? | nodeset | The set of nodes in the second argument that have the IDREFs in the first. |
if | boolean, string, string | string | Conditional |
index | string | number | Repeat index |
instance | string | node-set | Locate instance |
is-card-number | string | boolean | Whether the card number is a valid card number |
local-date | - | string | Date in current time zone |
local-dateTime | - | string | Date and time in current time zone |
max | node-set | number | Maximum |
min | node-set | number | Minimum |
months | string | number | Months in period |
now | - | string | Current date and time |
power | number, number | number | The first argument raised to the power of the second argument |
property | string | string | Feature value |
random | boolean | number | A random number |
seconds | string | number | Seconds in period |
seconds-from-dateTime | string | number | Seconds since epoch |
seconds-to-dateTime | number | string | The date and time so many seconds since the epoch (1970) |
Function | Arguments | Returns | Description |
---|---|---|---|
last | - | number | |
position | - | number | |
count | nodeset | number | |
id | object | nodeset | |
local-name | nodeset? | string | |
namespace-uri | nodeset? | string | |
name | nodeset? | string | |
string | object? | string | Type conversion |
concat | string, string, string* | string | Concatenate strings |
starts-with | string, string | boolean | Whether the first argument starts with the second argument |
contains | string, string | boolean | Whether the first argument contains the second argument |
substring-before | string, string | string | substring-before("1999/04/01","/") returns "1999" |
substring-after | string, string | string | substring-after("1999/04/01","/") returns "04/01" |
substring | string, number, number? | string | substring("abcdef", 2, 3)="bcd"; substring("abcdef", 4)="def" |
string-length | string? | number | |
normalize-space | string? | string | |
translate |
string, string, string | string | translate("bar","abc","ABC")="BAr" |
boolean | object | boolean | Type conversion |
not | boolean | boolean | |
true | - | boolean | |
false | - | boolean | |
lang | string | boolean | Whether the context node has been declared to be of the given language. |
number | object? | number | Type conversion |
sum | nodeset | number | |
floor | number | number | |
ceiling | number | number | |
round | number | number |
Attribute | Type |
---|---|
ev:observer |
IDREF |
ev:target | IDREF |
ev:event | NMTOKEN |
ev:handler | IDREF |
ev:phase | ("capture" | "default") |
ev:propagate | ("stop" | "continue") |
ev:defaultAction | ("cancel" | "perform") |
Event | Cancel | Bubbles | Target |
---|---|---|---|
Initialization Events | |||
xforms-model-construct | N | Y | <model> |
xforms-model-construct-done | N | Y | <model> |
xforms-ready | N | Y | <model> |
xforms-model-destruct | N | N | <model> |
Processing Events | |||
xforms-rebuild | Y | Y | <model> |
xforms-recalculate | Y | Y | <model> |
xforms-revalidate | Y | Y | <model> |
xforms-refresh | Y | Y | <model> |
xforms-reset | Y | Y | <model> |
Interaction Events | |||
xforms-previous | Y | N | control |
xforms-next | Y | N | control |
xforms-focus | Y | N | control |
xforms-help | Y | Y | control |
xforms-hint | Y | Y | control |
xforms-submit | Y | Y | <submission> |
xforms-submit-serialize | N | Y | <submission> |
Notification Events | |||
DOMActivate | Y | Y | control |
DOMFocusIn | N | Y | control |
DOMFocusOut | N | Y | control |
xforms-value-changed | N | Y | control |
xforms-select | N | Y | <item>, <case> or <itemset> |
xforms-deselect | N | Y | <item>, <case> or <itemset> |
xforms-scroll-first | N | Y | <repeat> |
xforms-scroll-last | N | Y | <repeat> |
xforms-insert | N | Y | <instance> |
xforms-delete | N | Y | <instance> |
xforms-valid | N | Y | control |
xforms-invalid | N | Y | control |
xforms-in-range | N | Y | control |
xforms-out-of-range | N | Y | control |
xforms-readonly | N | Y | control |
xforms-readwrite | N | Y | control |
xforms-required | N | Y | control |
xforms-optional | N | Y | control |
xforms-enabled | N | Y | control |
xforms-disabled | N | Y | control |
xforms-submit-done | N | Y | <submission> |
Error Notifications | |||
xforms-binding-exception | N | Y | element with the binding |
xforms-link-exception | N | Y | <model> |
xforms-compute-exception | N | Y | <model> |
xforms-version-exception | N | Y | default <model> |
xforms-output-error | N | Y | <output> |
xforms-submit-error | N | Y | <submission> |
Selector | Matches |
---|---|
:valid and :invalid | datatype validity and 'constraint' bindings |
:in-range and :out-of-range | range, select1 and select controls, whether value matches |
:required and :optional | 'required' bindings |
:read-only and :read-write | 'read-only' bindings |
:enabled and :disabled | 'relevant' bindings |
::value | The part of a control where the value is displayed/typed in |
::choices | The items part of a select1 or select |
::repeat-item | Any row in a repeat |
::repeat-index | The 'current' repeat row |
Construct |
---|
getInstanceDocument() |
rebuild() |
recalculate() |
rebuild() |
refresh() |