{data 'name'} ... {/data} reads its content as data and keeps it
under that name; it prints nothing. A later {name} ... {/name}
iterates it like any page array - fields, properties, the handling options
(sort, where, first ...) - and so do
data='name' on another tag, {data:name}, {tree}
and the lookup pipe.
The format is recognised from the content itself:
[ or {. An array of objects
gives rows with fields; a plain array gives values, read with {$name}.<. The elements under the root are the
rows, their attributes and child elements the fields.---, or with a - item or
key: value line. It needs PHP's yaml extension.('a', 'b', 2 * 3) in parentheses: every element is
evaluated as an expression.1..10 or a..z.When the start does not tell, type='csv' (or another format) says it. A one-line
name of a file in the application's _data/ directory reads that file.
Without content, a second parameter is the source: {data 'steps', '1..5'}. A
value from a field there is data, never template: a field holding a parenthesised list is
refused, since its elements would run as expressions. With the name on the closing tag -
{data} ... {/data 'name'} - the content is rendered first and the
result read as data, so fields and tags inside it are resolved.
Content with braces - JSON objects - is read as written: a JSON object in the content is
not taken for a tag. Under the strict syntax check a {data} without a name is an
error, and so is a name that is already a built-in or application tag, since
{name} would never reach the store.