Attribute Value Templates (AVTs)
Introduction
Certain attributes in XForms are literal values defined by the form author at the time the form is written, as opposed to being evaluated at runtime. Examples include the resource
attribute on <xf:submission>
or <xf:load>
.
To improve this, Orbeon Forms supports a notation called Attribute Value Templates (AVTs) which allows including XPath expressions within attributes. You include XPath expressions in attributes by enclosing them within curly brackets ({
and }
).
NOTE: AVTs were first introduced in XSLT.
Example
Consider this example:
When <xf:load>
is executed, the resource
attribute is evaluated. The results is the concatenation of /forms/detail/
and of the result of the expression within brackets:
If the id
element pointed to contains the string C728595E0E43A8BF50D8DED9F196A582
, the resource
attribute takes the value:
Note the following:
If you need curly brackets as literal values instead of enclosing an XPath expression, escape them using double brackets (
{{
and}}
).You can use as many XPath expressions as you want within a single attributes, each of them enclosed by curly brackets.
AVTs on XForms elements
Model
method
action
andresource
serialization
mediatype
version
encoding
separator
indent
omit-xml-declaration
standalone
validate
relevant
mode
xxf:target
xxf:username
xxf:password
xxf:readonly
xxf:shared
xxf:xinclude
xxf:calculate
Actions
name
target
bubbles
cancelable
delay
xxf:show-progress
xxf:progress-message
dialog
position
resource
replace
target
xxf:target
xxf:show-progress
f:url-type
control
xxf:deferred-updates
xxf:deferred-updates
dialog
neighbor
constrain
case
xxf:deferred-updates
Controls
All controls
style
: equivalent to the HTMLstyle
attributeclass
: equivalent to the HTMLclass
attribute
and
xxf:size
: equivalent to the HTMLsize
attributexxf:maxlength
: equivalent to the HTMLmaxlength
attributexxf:autocomplete
: equivalent to the HTMLautocomplete
attribute
<xf:textarea>
<xf:textarea>
xxf:cols
: equivalent to the HTMLcols
attribute (prefer using CSS for this)xxf:rows
: equivalent to the HTMLrows
attribute (prefer using CSS for this)xxf:maxlength
: equivalent to the HTML 5maxlength
attribute
AVTs on XHTML Elements
AVTs are also supported on XHTML elements.
For example:
In the above example, the value of the class
attribute on <xh:tr>
is determined dynamically through XPath and XForms. Even table rows get the class zebra-row-even
and odd table rows get the class zebra-row-odd
.
The values of XHTML attributes built using AVTs update as you interact with the XForms page. In the example above, inserting or deleting table rows after the page is loaded will still correctly update the class
attribute.
It is also possible to use AVTs outside <xh:body>
, for example:
AVTs are also usable on HTML elements within <xf:label>
, <xf:hint>
, <xf:help>
, <xf:alert>
:
NOTE: It is not possible to use AVTs within the id attribute of XHTML elements.
Last updated