$foo
where foo
is the control name. For example:$price
, the result is actually an XML node, as this is how Orbeon Forms stores data internally. Think of a node as a container for a value:string()
functionstring
$price/string()
or string($price)
data()
function$price/data(.)
or data($price)
string()
or data()
. For example when you perform a multiplication:data()
function explicitly:data()
function can be a little tricky because of this. Now say you'd like instead to concatenate the text of those nodes containing decimal values even if the don't contain valid decimal values. Then you have to explicitly use the string()
function:price
on each rowquantity
on each rowrow-total
on each rowtotal
below the gridrow-total
:row-total
calculated value applies to the closest price
and quantity
controls, that is, those on the same row, and each row gets its own row total.total
:total
calculation is outside the repeat, and when it refers to $row-total
, all row-total
values are returned. Therefore, the sum applies to all the row-total
values (assuming they can be cast as xs:decimal
, in this example).$foo
(where foo
is the control name) are automatically updated.true()
.true()
.false()
.new
mode.