Appearance
RFML schema
Every node, inline item and object an RFML document holds, with its properties, from the JSON Schema that describes RFML 0.2 (schema/rfml-0.2.json, made from the language's metamodel). The RFML specification says what each one does.
Nodes
barcode
node.barcode in the schema.
A barcode or 2D code
| Property | Type | Required | Description |
|---|---|---|---|
type | "barcode" | yes | |
id | string | yes | Unique among the document's nodes; component internals have their own scope. |
if | expression | Render the node only when this is true. | |
class | array of string | Named style classes, applied in order. | |
style | style | Inline style declarations. | |
rules | array of conditional style | Conditional styles. | |
symbology | qr, datamatrix, pdf417, code128, code39, ean13, ean8, upca, itf, aztec | yes | |
value | expression | yes | |
showText | boolean | Human-readable text under linear codes. Default false. | |
errorCorrection | L, M, Q, H | QR only. | |
alt | inline content | Alternate text; without it, the encoded value. | |
decorative | boolean | Marks the barcode as an artifact in tagged PDF and hides it from screen readers. Default false. | |
lang | string | BCP 47 language tag for this subtree. | |
running | map of expression | Running values set when the node is placed on a page, read with page.running(name). | |
export | export | Per-format hints. | |
actions | array of action | What happens when a viewer clicks or hovers. | |
meta | node-meta | Label, description, note and locks. |
block
node.block in the schema.
A block node (RFML §5.3); slot only inside component templates
| Property | Type | Required | Description |
|---|---|---|---|
type | one of box, text, heading, list, table, image, rule, pagebreak, frame, pagestamp, repeat, matrix, chart, barcode, use, subreport, toc, slot, string | yes |
box
node.box in the schema.
The general-purpose container. Layout comes from display: block | flex | grid
| Property | Type | Required | Description |
|---|---|---|---|
type | "box" | yes | |
id | string | yes | Unique among the document's nodes; component internals have their own scope. |
if | expression | Render the node only when this is true. | |
class | array of string | Named style classes, applied in order. | |
style | style | Inline style declarations. | |
rules | array of conditional style | Conditional styles. | |
children | array of nodes | ||
lang | string | BCP 47 language tag for this subtree. | |
running | map of expression | Running values set when the node is placed on a page, read with page.running(name). | |
export | export | Per-format hints. | |
actions | array of action | What happens when a viewer clicks or hovers. | |
meta | node-meta | Label, description, note and locks. |
chart
node.chart in the schema.
A chart drawn from a list. Width and height come from style; charts never break across pages
| Property | Type | Required | Description |
|---|---|---|---|
type | "chart" | yes | |
id | string | yes | Unique among the document's nodes; component internals have their own scope. |
if | expression | Render the node only when this is true. | |
class | array of string | Named style classes, applied in order. | |
style | style | Inline style declarations. | |
rules | array of conditional style | Conditional styles. | |
source | expression | yes | |
as | string | Row alias. | |
kind | column, bar, line, area, pie, donut, scatter, combo | ||
category | expression | Category (x) value per row. | |
series | array of series | ||
stacked | none, normal, percent | Default "none". | |
axes | axes | ||
legend | legend | ||
labels | data-labels | ||
title | inline content | ||
palette | array of colour | Series colours; default from the theme. | |
alt | inline content | Text alternative; required for tagged PDF. | |
vegaLite | object | A Vega-Lite specification, instead of kind and series. | |
lang | string | BCP 47 language tag for this subtree. | |
running | map of expression | Running values set when the node is placed on a page, read with page.running(name). | |
export | export | Per-format hints. | |
actions | array of action | What happens when a viewer clicks or hovers. | |
meta | node-meta | Label, description, note and locks. |
extension
node.extension in the schema.
A namespaced extension element (RFML §23). Its own properties are defined by the extension
| Property | Type | Required | Description |
|---|---|---|---|
type | string | yes | |
id | string | yes | Unique among the document's nodes; component internals have their own scope. |
if | expression | Render the node only when this is true. | |
class | array of string | Named style classes, applied in order. | |
style | style | Inline style declarations. | |
rules | array of conditional style | Conditional styles. | |
lang | string | BCP 47 language tag for this subtree. | |
running | map of expression | Running values set when the node is placed on a page, read with page.running(name). | |
export | export | Per-format hints. | |
actions | array of action | What happens when a viewer clicks or hovers. | |
meta | node-meta | Label, description, note and locks. |
frame
node.frame in the schema.
A fixed-size container whose children are positioned absolutely
| Property | Type | Required | Description |
|---|---|---|---|
type | "frame" | yes | |
id | string | yes | Unique among the document's nodes; component internals have their own scope. |
if | expression | Render the node only when this is true. | |
class | array of string | Named style classes, applied in order. | |
style | style | Inline style declarations. | |
rules | array of conditional style | Conditional styles. | |
children | array of nodes | ||
lang | string | BCP 47 language tag for this subtree. | |
running | map of expression | Running values set when the node is placed on a page, read with page.running(name). | |
export | export | Per-format hints. | |
actions | array of action | What happens when a viewer clicks or hovers. | |
meta | node-meta | Label, description, note and locks. |
heading
node.heading in the schema.
A heading; it takes part in the outline, bookmarks, table of contents and tagged PDF
| Property | Type | Required | Description |
|---|---|---|---|
type | "heading" | yes | |
id | string | yes | Unique among the document's nodes; component internals have their own scope. |
if | expression | Render the node only when this is true. | |
class | array of string | Named style classes, applied in order. | |
style | style | Inline style declarations. | |
rules | array of conditional style | Conditional styles. | |
level | integer | yes | At least 1. At most 6. |
content | inline content | yes | |
bookmark | boolean | Adds a PDF bookmark. Default true. | |
lang | string | BCP 47 language tag for this subtree. | |
running | map of expression | Running values set when the node is placed on a page, read with page.running(name). | |
export | export | Per-format hints. | |
actions | array of action | What happens when a viewer clicks or hovers. | |
meta | node-meta | Label, description, note and locks. |
image
node.image in the schema.
An image, from an asset or an expression
| Property | Type | Required | Description |
|---|---|---|---|
type | "image" | yes | |
id | string | yes | Unique among the document's nodes; component internals have their own scope. |
if | expression | Render the node only when this is true. | |
class | array of string | Named style classes, applied in order. | |
style | style | Inline style declarations. | |
rules | array of conditional style | Conditional styles. | |
asset | asset | Static image from assets. | |
src | expression | Dynamic image: an asset id, a library reference or a data: URL. | |
alt | inline content | Required unless decorative is true. | |
decorative | boolean | Marks the image as an artifact in tagged PDF. Default false. | |
fit | contain, cover, fill, none | Default "contain". | |
lang | string | BCP 47 language tag for this subtree. | |
running | map of expression | Running values set when the node is placed on a page, read with page.running(name). | |
export | export | Per-format hints. | |
actions | array of action | What happens when a viewer clicks or hovers. | |
meta | node-meta | Label, description, note and locks. |
item
node.item in the schema.
A node in a list: item, or a repeat producing items
| Property | Type | Required | Description |
|---|---|---|---|
type | one of repeat, item | yes |
list
node.list in the schema.
A list of items
| Property | Type | Required | Description |
|---|---|---|---|
type | "list" | yes | |
id | string | yes | Unique among the document's nodes; component internals have their own scope. |
if | expression | Render the node only when this is true. | |
class | array of string | Named style classes, applied in order. | |
style | style | Inline style declarations. | |
rules | array of conditional style | Conditional styles. | |
marker | disc, circle, square, decimal, lower-alpha, upper-alpha, lower-roman, upper-roman, none | Default "disc". | |
start | integer | First number for ordered markers. | |
children | array of nodes | ||
lang | string | BCP 47 language tag for this subtree. | |
running | map of expression | Running values set when the node is placed on a page, read with page.running(name). | |
export | export | Per-format hints. | |
actions | array of action | What happens when a viewer clicks or hovers. | |
meta | node-meta | Label, description, note and locks. |
matrix
node.matrix in the schema.
A crosstab: row groups down the side, column groups across the top, aggregate cells
| Property | Type | Required | Description |
|---|---|---|---|
type | "matrix" | yes | |
id | string | yes | Unique among the document's nodes; component internals have their own scope. |
if | expression | Render the node only when this is true. | |
class | array of string | Named style classes, applied in order. | |
style | style | Inline style declarations. | |
rules | array of conditional style | Conditional styles. | |
source | expression | yes | The list to repeat, evaluated in the enclosing scope. |
as | string | Row alias, default row. Default "row". | |
filter | expression | Applied first. | |
sort | array of sort-key | Applied after filtering. Stable. | |
limit | integer | Applied after sorting. At least 0. | |
vars | map of expression | Per-item variables. | |
filters | array of viewer-filter | Filters the viewer offers to readers. | |
rows | array of matrix-group | yes | Row groups, outermost first. |
columns | array of matrix-group | yes | Column groups, outermost first. |
cells | array of matrix-cell | ||
totals | matrix-totals | ||
corner | inline content | Top-left header. | |
repeatRowHeaders | boolean | Default false. | |
repeatColumnHeaders | boolean | Default false. | |
empty | array of nodes | ||
continuationHeader | array of nodes | ||
continuationFooter | array of nodes | ||
lang | string | BCP 47 language tag for this subtree. | |
running | map of expression | Running values set when the node is placed on a page, read with page.running(name). | |
export | export | Per-format hints. | |
actions | array of action | What happens when a viewer clicks or hovers. | |
meta | node-meta | Label, description, note and locks. |
pagebreak
node.pagebreak in the schema.
Forces a page break, optionally switching page template
| Property | Type | Required | Description |
|---|---|---|---|
type | "pagebreak" | yes | |
id | string | yes | Unique among the document's nodes; component internals have their own scope. |
if | expression | Render the node only when this is true. | |
class | array of string | Named style classes, applied in order. | |
style | style | Inline style declarations. | |
rules | array of conditional style | Conditional styles. | |
page | page template id | Page template to switch to. | |
lang | string | BCP 47 language tag for this subtree. | |
running | map of expression | Running values set when the node is placed on a page, read with page.running(name). | |
export | export | Per-format hints. | |
actions | array of action | What happens when a viewer clicks or hovers. | |
meta | node-meta | Label, description, note and locks. |
pagestamp
node.pagestamp in the schema.
Children positioned against the page where its point in the flow lands; the first instance on a page draws, or each with once: item
| Property | Type | Required | Description |
|---|---|---|---|
type | "pagestamp" | yes | |
id | string | yes | Unique among the document's nodes; component internals have their own scope. |
if | expression | Render the node only when this is true. | |
class | array of string | Named style classes, applied in order. | |
style | style | Inline style declarations. | |
rules | array of conditional style | Conditional styles. | |
children | array of nodes | ||
decorative | boolean | Marks the stamp as an artifact in tagged output, and hides it from screen readers. Default false. | |
once | page, item | page: the first instance on a page draws; item: every instance draws. Default "page". | |
lang | string | BCP 47 language tag for this subtree. | |
running | map of expression | Running values set when the node is placed on a page, read with page.running(name). | |
export | export | Per-format hints. | |
actions | array of action | What happens when a viewer clicks or hovers. | |
meta | node-meta | Label, description, note and locks. |
repeat
node.repeat in the schema.
Repeats its detail for each item. It has no box of its own: its slots hold what its parent slot accepts
| Property | Type | Required | Description |
|---|---|---|---|
type | "repeat" | yes | |
id | string | yes | Unique among the document's nodes; component internals have their own scope. |
if | expression | Render the node only when this is true. | |
class | array of string | Named style classes, applied in order. | |
style | style | Inline style declarations. | |
rules | array of conditional style | Conditional styles. | |
source | expression | yes | The list to repeat, evaluated in the enclosing scope. |
as | string | Row alias, default row. Default "row". | |
filter | expression | Applied first. | |
sort | array of sort-key | Applied after filtering. Stable. | |
limit | integer | Applied after sorting. At least 0. | |
vars | map of expression | Per-item variables. | |
orphans | integer | At least this many items of a group (else the region) before a page break inside it. At least 1. | |
widows | integer | At least this many items of a group (else the region) after a page break inside it, with its footer. At least 1. | |
groups | array of repeat-group | Nested groups, outermost first. | |
filters | array of viewer-filter | Filters the viewer offers to readers. | |
repeatHeader | boolean | Repeat the header on each page. Default false. | |
header | array of nodes | Before the items. | |
detail | array of nodes | yes | Rendered for each item. |
separator | array of nodes | Between items. | |
footer | array of nodes | After the items. | |
empty | array of nodes | Rendered instead when there are no items. | |
continuationHeader | array of nodes | ||
continuationFooter | array of nodes | ||
lang | string | BCP 47 language tag for this subtree. | |
running | map of expression | Running values set when the node is placed on a page, read with page.running(name). | |
export | export | Per-format hints. | |
actions | array of action | What happens when a viewer clicks or hovers. | |
meta | node-meta | Label, description, note and locks. |
rule
node.rule in the schema.
A horizontal line, drawn with border-top
| Property | Type | Required | Description |
|---|---|---|---|
type | "rule" | yes | |
id | string | yes | Unique among the document's nodes; component internals have their own scope. |
if | expression | Render the node only when this is true. | |
class | array of string | Named style classes, applied in order. | |
style | style | Inline style declarations. | |
rules | array of conditional style | Conditional styles. | |
lang | string | BCP 47 language tag for this subtree. | |
running | map of expression | Running values set when the node is placed on a page, read with page.running(name). | |
export | export | Per-format hints. | |
actions | array of action | What happens when a viewer clicks or hovers. | |
meta | node-meta | Label, description, note and locks. |
slot
node.slot in the schema.
Marks where caller content goes in a component template
| Property | Type | Required | Description |
|---|---|---|---|
type | "slot" | yes | |
name | string | yes | |
children | array of nodes | Default content. |
subreport
node.subreport in the schema.
Embeds another RFML document in the page flow
| Property | Type | Required | Description |
|---|---|---|---|
type | "subreport" | yes | |
id | string | yes | Unique among the document's nodes; component internals have their own scope. |
if | expression | Render the node only when this is true. | |
class | array of string | Named style classes, applied in order. | |
style | style | Inline style declarations. | |
rules | array of conditional style | Conditional styles. | |
report | string | yes | Document reference, e.g. library:statements/line-items. |
version | string | Semver range, pinned at publish. | |
params | map of expression | Values for the child's parameters. | |
data | map of expression | Values for the child's datasets. | |
lang | string | BCP 47 language tag for this subtree. | |
running | map of expression | Running values set when the node is placed on a page, read with page.running(name). | |
export | export | Per-format hints. | |
actions | array of action | What happens when a viewer clicks or hovers. | |
meta | node-meta | Label, description, note and locks. |
table
node.table in the schema.
A grid of rows and cells: static (explicit rows) or bound (rows from source)
| Property | Type | Required | Description |
|---|---|---|---|
type | "table" | yes | |
id | string | yes | Unique among the document's nodes; component internals have their own scope. |
if | expression | Render the node only when this is true. | |
class | array of string | Named style classes, applied in order. | |
style | style | Inline style declarations. | |
rules | array of conditional style | Conditional styles. | |
source | expression | Makes the table bound: rows are generated from this list. | |
as | string | Row alias, default row. Default "row". | |
filter | expression | ||
sort | array of sort-key | ||
limit | integer | At least 0. | |
vars | map of expression | ||
orphans | integer | At least this many items of a group (else the region) before a page break inside it. At least 1. | |
widows | integer | At least this many items of a group (else the region) after a page break inside it, with its footer. At least 1. | |
groups | array of table-group | Nested groups, outermost first. | |
filters | array of viewer-filter | Filters the viewer offers to readers. | |
repeatHeader | boolean | Repeat the header rows on each page. Default true. | |
columns | array of column | ||
header | array of row | Static header rows. | |
rows | array of row | Static body rows. | |
footer | array of row | Static footer rows. | |
headerRows | array of row | Extra rows above the column headers. | |
footerRows | array of row | Extra rows below the column footers. | |
empty | array of nodes | Rendered instead when there are no items. | |
continuationHeader | one of array of row, array of nodes | Placed at the top of each continuation page. | |
continuationFooter | one of array of row, array of nodes | Placed at the bottom of each page the table continues past. | |
lang | string | BCP 47 language tag for this subtree. | |
running | map of expression | Running values set when the node is placed on a page, read with page.running(name). | |
export | export | Per-format hints. | |
actions | array of action | What happens when a viewer clicks or hovers. | |
meta | node-meta | Label, description, note and locks. |
text
node.text in the schema.
A paragraph
| Property | Type | Required | Description |
|---|---|---|---|
type | "text" | yes | |
id | string | yes | Unique among the document's nodes; component internals have their own scope. |
if | expression | Render the node only when this is true. | |
class | array of string | Named style classes, applied in order. | |
style | style | Inline style declarations. | |
rules | array of conditional style | Conditional styles. | |
content | inline content | yes | |
lang | string | BCP 47 language tag for this subtree. | |
running | map of expression | Running values set when the node is placed on a page, read with page.running(name). | |
export | export | Per-format hints. | |
actions | array of action | What happens when a viewer clicks or hovers. | |
meta | node-meta | Label, description, note and locks. |
toc
node.toc in the schema.
A generated table of contents built from headings
| Property | Type | Required | Description |
|---|---|---|---|
type | "toc" | yes | |
id | string | yes | Unique among the document's nodes; component internals have their own scope. |
if | expression | Render the node only when this is true. | |
class | array of string | Named style classes, applied in order. | |
style | style | Inline style declarations. | |
rules | array of conditional style | Conditional styles. | |
levels | integer | Deepest heading level included. Default 3. At least 1. At most 6. | |
leader | dots, none | What joins an entry to its page number. Default "dots". | |
lang | string | BCP 47 language tag for this subtree. | |
running | map of expression | Running values set when the node is placed on a page, read with page.running(name). | |
export | export | Per-format hints. | |
actions | array of action | What happens when a viewer clicks or hovers. | |
meta | node-meta | Label, description, note and locks. |
use
node.use in the schema.
An instance of a component
| Property | Type | Required | Description |
|---|---|---|---|
type | "use" | yes | |
id | string | yes | Unique among the document's nodes; component internals have their own scope. |
if | expression | Render the node only when this is true. | |
class | array of string | Named style classes, applied in order. | |
style | style | Inline style declarations. | |
rules | array of conditional style | Conditional styles. | |
component | component name | yes | |
props | map of expression | Prop values, evaluated where the component is used. | |
slots | map of array of nodes | Content for the component's slots. | |
lang | string | BCP 47 language tag for this subtree. | |
running | map of expression | Running values set when the node is placed on a page, read with page.running(name). | |
export | export | Per-format hints. | |
actions | array of action | What happens when a viewer clicks or hovers. | |
meta | node-meta | Label, description, note and locks. |
Inline items
What inline content holds besides text (§7).
br
inline.br in the schema.
A forced line break
| Property | Type | Required | Description |
|---|---|---|---|
type | "br" | yes |
field-image
inline.field-image in the schema.
An image inside text, from an expression
| Property | Type | Required | Description |
|---|---|---|---|
type | "field-image" | yes | |
src | expression | yes | |
alt | inline content | yes | |
style | style |
footnote
inline.footnote in the schema.
A footnote: a marker in the text and its content at the bottom of the page (RFML §7.3)
| Property | Type | Required | Description |
|---|---|---|---|
type | "footnote" | yes | |
id | string | Lets text refer to the note with footnote(id). | |
content | inline content | yes | |
marker | inline content | Fixed marker text instead of automatic numbering. | |
if | expression |
link
inline.link in the schema.
A hyperlink: an https: or mailto: URL, '#<node-id>' or a report() target
| Property | Type | Required | Description |
|---|---|---|---|
type | "link" | yes | |
href | expression | yes | |
content | inline content | yes | |
style | style | ||
class | array of string |
span
inline.span in the schema.
Styled inline content
| Property | Type | Required | Description |
|---|---|---|---|
type | "span" | yes | |
content | inline content | yes | |
style | style | ||
class | array of string | ||
rules | array of conditional style | ||
if | expression | ||
lang | string |
Other objects
action
What happens when a viewer clicks or hovers (RFML §17.6.2). One effect per action
| Property | Type | Required | Description |
|---|---|---|---|
on | click, hover | yes | |
if | expression | ||
toggle | one of node id, array of node id | Node id(s) to show or hide. | |
initial | one of expanded, collapsed, expression | expanded, collapsed, or an expression giving whether it starts expanded. | |
indicator | boolean | Show ▸/▾ on the trigger. Default true. | |
navigate | expression | Target: a URL, '#<node-id>' or report(id, params). | |
target | self, new | Default "self". | |
setParams | map of expression | Parameter values to set before rendering again. | |
tooltip | inline content | Text shown on hover. |
asset
An image, font or other file (RFML §15)
| Property | Type | Required | Description |
|---|---|---|---|
kind | image, font, file | yes | |
src | string | yes | A host library reference, a path inside the bundle, or a data: URL. |
family | string | Font family name. | |
weight | one of string, number | Font weight or range, e.g. 100 900. | |
style | normal, italic, oblique | ||
description | string |
axes
Chart axes
| Property | Type | Required | Description |
|---|---|---|---|
x | axis | ||
y | axis | ||
y2 | axis |
axis
A chart axis
| Property | Type | Required | Description |
|---|---|---|---|
title | inline content | ||
format | string | A Format pattern for tick labels. | |
min | number | ||
max | number | ||
gridlines | boolean | ||
reverse | boolean | Default false. |
cell
A cell of a static row, with exactly one of content or children
| Property | Type | Required | Description |
|---|---|---|---|
id | string | ||
class | array of string | ||
style | style | ||
rules | array of conditional style | ||
colspan | integer | Default 1. At least 1. | |
rowspan | integer | Default 1. At least 1. | |
content | inline content | ||
children | array of nodes |
column
A table column (RFML §6.5, §12.3)
| Property | Type | Required | Description |
|---|---|---|---|
id | string | yes | |
if | expression | Hide the whole column. | |
width | string or number | A length, auto or <n>fr. At least 0. | |
header | inline content | ||
class | array of string | ||
style | style | Applies to every cell in the column. | |
rules | array of conditional style | ||
cell | inline content | Cell content, evaluated per row. | |
cellChildren | array of nodes | Cell nodes, instead of cell. | |
footer | inline content | Column footer, evaluated in region scope. | |
sortable | boolean | Readers can sort by this column in the viewer. Default false. | |
sortBy | expression | Sort key; defaults to the cell's expression if it is a plain path. |
column-bound
A column of a bound table
| Property | Type | Required | Description |
|---|---|---|---|
id | string | yes | |
if | expression | Hide the whole column. | |
width | string or number | A length, auto or <n>fr. At least 0. | |
header | inline content | ||
class | array of string | ||
style | style | Applies to every cell in the column. | |
rules | array of conditional style | ||
cell | inline content | Cell content, evaluated per row. | |
cellChildren | array of nodes | Cell nodes, instead of cell. | |
footer | inline content | Column footer, evaluated in region scope. | |
sortable | boolean | Readers can sort by this column in the viewer. Default false. | |
sortBy | expression | Sort key; defaults to the cell's expression if it is a plain path. |
column-static
A column of a static table: width and per-column styles
| Property | Type | Required | Description |
|---|---|---|---|
id | string | yes | |
if | expression | Hide the whole column. | |
width | string or number | A length, auto or <n>fr. At least 0. | |
class | array of string | ||
style | style | Applies to every cell in the column. | |
rules | array of conditional style |
component
A reusable fragment with typed props and named slots (RFML §14.1)
| Property | Type | Required | Description |
|---|---|---|---|
description | string | ||
props | object or boolean | JSON Schema of the props. | |
slots | array of string | ||
parts | map of node id | Part names mapped to node ids in the template. | |
template | array of nodes | yes |
content
Inline content: a string, or a list of strings and inline items. {{ expr }} interpolates (RFML §7)
data-labels
Chart data labels
| Property | Type | Required | Description |
|---|---|---|---|
show | boolean | yes | |
format | string |
dataset
A declared dataset (RFML §10.1), read as data.<name>
| Property | Type | Required | Description |
|---|---|---|---|
source | string | A host data source that supplies this dataset. | |
sourceParams | map of expression | Values passed to the source. | |
schema | object or boolean | JSON Schema of the data; may be partial. | |
schemaFrom | source | source: the schema is the source's published one, instead of schema. | |
sample | any | Sample data, inline or as a reference. | |
description | string | ||
required | boolean | Default true. |
document
An RFML document (RFML §4)
| Property | Type | Required | Description |
|---|---|---|---|
$schema | string | URL of the RFML JSON Schema version. | |
rfml | 0.1, 0.2 | yes | Language version. |
id | string | yes | Stable document id. |
meta | document-meta | yes | |
params | array of param | Report parameters, in order. | |
data | map of dataset | Declared datasets. | |
vars | map of expression | Document-level computed values, evaluated in declaration order. | |
styles | styles | ||
assets | map of asset | ||
imports | array of import | ||
components | map of component | ||
i18n | map of map of string | Message catalogues by locale. | |
pages | array of page | yes | Page templates; the first is the default. |
footnotes | footnotes | ||
body | array of nodes | yes | The document content. |
outputs | outputs | ||
tests | array of test |
document-meta
Document metadata (RFML §19.1)
| Property | Type | Required | Description |
|---|---|---|---|
title | string | yes | |
description | string | What the report is for, written for people and AI agents. | |
locale | string | Default formatting locale. | |
currency | string | Default currency. | |
tags | array of string | ||
owner | string | ||
version | string | ||
designer | object | Designer-only state, such as guides, ignored by engines. |
export
Per-format hints (RFML §17.4). Unknown hint keys are warnings
| Property | Type | Required | Description |
|---|---|---|---|
pdf | export-pdf | ||
docx | export-docx | ||
xlsx | export-xlsx | ||
html | export-html |
export-docx
DOCX export hints
| Property | Type | Required | Description |
|---|---|---|---|
skip | boolean | Leave the node out of this format. Default false. | |
keepWithNext | boolean | Keep the paragraph on the same page as the next one. Default false. |
export-html
HTML export hints
| Property | Type | Required | Description |
|---|---|---|---|
skip | boolean | Leave the node out of this format. Default false. |
export-pdf
PDF export hints
| Property | Type | Required | Description |
|---|---|---|---|
skip | boolean | Leave the node out of this format. Default false. |
export-xlsx
XLSX export hints
| Property | Type | Required | Description |
|---|---|---|---|
skip | boolean | Leave the node out of this format. Default false. | |
sheet | string | Worksheet name for this region. |
footnotes
Numbering and placement of footnotes (RFML §7.3)
| Property | Type | Required | Description |
|---|---|---|---|
numbering | decimal, lower-alpha, lower-roman, symbols | Default "decimal". | |
restart | document, section, page | Default "document". | |
maxHeight | length | Length or percentage of the content area. Default "50%". At least 0. |
group-sort
Group order by an expression
| Property | Type | Required | Description |
|---|---|---|---|
by | expression | yes | |
direction | asc, desc | Default "asc". |
import
A component or theme library (RFML §14.3)
| Property | Type | Required | Description |
|---|---|---|---|
from | string | yes | Library reference, e.g. library:billing. |
version | string | Semver range. | |
components | array of string | ||
theme | boolean | Default false. |
inline
An inline item (RFML §7)
| Property | Type | Required | Description |
|---|---|---|---|
type | span, link, br, field-image, footnote | yes |
legend
Chart legend
| Property | Type | Required | Description |
|---|---|---|---|
position | top, bottom, left, right, none | yes |
matrix-cell
An aggregate cell of a matrix, evaluated with cell.rows
| Property | Type | Required | Description |
|---|---|---|---|
id | string | yes | |
value | expression | yes | |
format | string | A Format pattern. | |
style | style | ||
rules | array of conditional style |
matrix-group
A row or column group of a matrix (RFML §12.5)
| Property | Type | Required | Description |
|---|---|---|---|
id | string | yes | |
by | expression | yes | |
sort | one of asc, desc, group-sort | Default "asc". | |
vars | map of expression | ||
header | array of nodes | Header content; default the group key. |
matrix-totals
Total rows and columns of a matrix
| Property | Type | Required | Description |
|---|---|---|---|
rows | boolean | Default false. | |
columns | boolean | Default false. | |
label | inline content |
node-meta
Authoring metadata of a node (RFML §19.2)
| Property | Type | Required | Description |
|---|---|---|---|
label | string | Name shown in the designer outline. | |
note | string | A free-form author note. | |
description | string | Intent of this node, for people and AI agents. | |
locked | one of true, array of string | true, or the locked properties and paths below them such as style.color. | |
designer | object | Designer-only state, ignored by engines. |
output-docx
DOCX settings (RFML §17.2)
| Property | Type | Required | Description |
|---|---|---|---|
view | object | A fixed view state for this format (RFML §17.6.1). |
output-html
HTML settings (RFML §17.5)
| Property | Type | Required | Description |
|---|---|---|---|
paramPanel | boolean | Show the parameter panel in the viewer. Default true. | |
view | object | A fixed view state for this format (RFML §17.6.1). |
output-pdf
PDF settings (RFML §17.1)
| Property | Type | Required | Description |
|---|---|---|---|
standard | none, PDF/A-2b, PDF/A-3b, PDF/UA-1, PDF/A-2a+UA-1 | Default "none". | |
tagged | boolean | Default true. | |
compress | boolean | ||
embedFonts | boolean | ||
metadata | pdf-metadata | ||
attachments | array of asset | Assets embedded as PDF/A-3 attachments. | |
view | object | A fixed view state for this format (RFML §17.6.1). |
output-xlsx
XLSX settings (RFML §17.3)
| Property | Type | Required | Description |
|---|---|---|---|
sheets | array of xlsx-sheet | ||
otherContent | top, skip | Content outside regions: above the first region, or skipped. | |
view | object | A fixed view state for this format (RFML §17.6.1). |
outputs
Per-format settings (RFML §17)
| Property | Type | Required | Description |
|---|---|---|---|
pdf | output-pdf | ||
docx | output-docx | ||
xlsx | output-xlsx | ||
html | output-html |
page
A page template (RFML §9.1)
| Property | Type | Required | Description |
|---|---|---|---|
id | string | yes | |
size | one of A3, A4, A5, B5, letter, legal, tabloid, page-size | yes | |
orientation | portrait, landscape | Default "portrait". | |
margin | string or number | CSS margin shorthand. | |
footerDistance | length | From the page's bottom edge to the footer's bottom edge; half the bottom margin when not set. At least 0. | |
bleed | length | For print outputs. At least 0. | |
style | style | Page style; parts styles the header, footer and content areas. | |
header | array of nodes | Placed in the top margin area. | |
footer | array of nodes | Placed in the bottom margin area. | |
background | array of nodes | Drawn behind content, as a full-page frame. | |
overlay | array of nodes | Drawn above everything else on the page, as a full-page frame. | |
variants | page-variants | ||
meta | node-meta | Label, description, note and locks. |
page-size
A custom page size
| Property | Type | Required | Description |
|---|---|---|---|
width | length | yes | At least 0. |
height | length | yes | At least 0. |
page-variant
Overrides for the first, left, right, last or blank pages
| Property | Type | Required | Description |
|---|---|---|---|
margin | string or number | CSS margin shorthand. | |
footerDistance | length | From the page's bottom edge to the footer's bottom edge; half the bottom margin when not set. At least 0. | |
header | array of nodes | Placed in the top margin area. | |
footer | array of nodes | Placed in the bottom margin area. | |
background | array of nodes | Drawn behind content, as a full-page frame. | |
overlay | array of nodes | Drawn above everything else on the page, as a full-page frame. |
page-variants
Page variants, matched in the order blank, first, last, left/right
| Property | Type | Required | Description |
|---|---|---|---|
first | page-variant | ||
left | page-variant | ||
right | page-variant | ||
last | page-variant | ||
blank | page-variant |
param
A report parameter (RFML §10.3)
| Property | Type | Required | Description |
|---|---|---|---|
name | string | yes | Read as params.<name>. |
type | string, number, integer, boolean, date, datetime | yes | |
label | inline content | Prompt text. | |
description | string | ||
default | expression | May refer to now and earlier parameters. | |
required | boolean | Default false. | |
multiple | boolean | The value is a list. Default false. | |
options | one of array of param-option, param-option-source | ||
hidden | boolean | Not shown in prompts. Default false. |
param-option
One fixed choice of a parameter
| Property | Type | Required | Description |
|---|---|---|---|
value | any | yes | |
label | inline content |
param-option-source
Parameter choices computed from a dataset or earlier parameters
| Property | Type | Required | Description |
|---|---|---|---|
source | expression | yes | |
value | expression | yes | |
label | expression |
pdf-metadata
PDF document information; the title comes from meta.title
| Property | Type | Required | Description |
|---|---|---|---|
author | string | ||
subject | string | ||
keywords | string |
repeat-group
A group of a repeat (RFML §12.4)
| Property | Type | Required | Description |
|---|---|---|---|
id | string | yes | |
by | expression | yes | Group key, in row scope. |
sort | one of asc, desc, group-sort | Group order; default key ascending. Default "asc". | |
breakBefore | auto, page | Start each group on a new page. Default "auto". | |
keepTogether | boolean | Avoid breaking a group when it fits on one page. Default false. | |
repeatHeader | boolean | Repeat the group header after a page break. Default false. | |
vars | map of expression | Per-group variables. | |
header | array of nodes | ||
footer | array of nodes |
row
A table row (RFML §6.5)
| Property | Type | Required | Description |
|---|---|---|---|
id | string | yes | |
if | expression | ||
class | array of string | ||
style | style | ||
cells | array of cell | yes |
series
A chart series
| Property | Type | Required | Description |
|---|---|---|---|
id | string | yes | |
name | inline content | yes | |
value | expression | yes | |
kind | column, bar, line, area, scatter | Series kind, in combo charts only. | |
axis | y, y2 | Default "y". | |
color | colour | ||
if | expression |
sort-key
One sort key of a region
| Property | Type | Required | Description |
|---|---|---|---|
by | expression | yes | |
direction | asc, desc | Default "asc". | |
nulls | first, last |
styles
Tokens, defaults, classes and theme (RFML §8.2)
| Property | Type | Required | Description |
|---|---|---|---|
extends | string | Theme reference. | |
tokens | map of one of string, number | Named values, referenced as var(--<token>). | |
defaults | object | Styles per element type. | |
defaults.document | style | ||
defaults.box | style | ||
defaults.text | style | ||
defaults.heading | style | ||
defaults.list | style | ||
defaults.table | style | ||
defaults.image | style | ||
defaults.rule | style | ||
defaults.pagebreak | style | ||
defaults.frame | style | ||
defaults.pagestamp | style | ||
defaults.repeat | style | ||
defaults.matrix | style | ||
defaults.chart | style | ||
defaults.barcode | style | ||
defaults.use | style | ||
defaults.subreport | style | ||
defaults.toc | style | ||
defaults.item | style | ||
defaults.slot | style | ||
defaults.span | style | ||
defaults.link | style | ||
defaults.br | style | ||
defaults.field-image | style | ||
defaults.footnote | style | ||
classes | map of style |
table-group
A group of a bound table (RFML §12.4). Header and footer are rows, or nodes drawn in one cell spanning all columns
| Property | Type | Required | Description |
|---|---|---|---|
id | string | yes | |
by | expression | yes | Group key, in row scope. |
sort | one of asc, desc, group-sort | Group order; default key ascending. Default "asc". | |
breakBefore | auto, page | Start each group on a new page. Default "auto". | |
keepTogether | boolean | Avoid breaking a group when it fits on one page. Default false. | |
repeatHeader | boolean | Repeat the group header after a page break. Default false. | |
vars | map of expression | Per-group variables. | |
header | one of array of row, array of nodes | ||
footer | one of array of row, array of nodes |
test
An embedded test case: inputs and assertions over the rendered result
| Property | Type | Required | Description |
|---|---|---|---|
name | string | yes | |
data | object | Dataset values or references, by dataset name. | |
params | object | ||
expect | array of expression | Boolean expressions over the result scope. | |
snapshot | boolean | Compare page images against an approved baseline. Default false. |
viewer-filter
A filter control the viewer offers above a region (RFML §17.6.5)
| Property | Type | Required | Description |
|---|---|---|---|
id | string | yes | |
label | inline content | yes | |
by | expression | yes | The value to filter on, in row scope. |
kind | values, range, search | yes | |
initial | any | Initial selection. |
xlsx-sheet
A worksheet written from a region
| Property | Type | Required | Description |
|---|---|---|---|
name | string | yes | |
from | node id | yes | The region's node id. |
freeze | string | Top-left unfrozen cell. | |
autoFilter | boolean | Default false. |
Style properties
The properties a style block may set (RFML §8.4). Each node takes those that apply to it; the schema's style.<node> definitions list them.
| Property | Group | Type |
|---|---|---|
width | size | length |
height | size | length |
min-width | size | length |
max-width | size | length |
min-height | size | length |
max-height | size | length |
margin | spacing | string or number |
margin-top | spacing | length |
margin-right | spacing | length |
margin-bottom | spacing | length |
margin-left | spacing | length |
margin-inline-start | spacing | length |
margin-inline-end | spacing | length |
padding | spacing | string or number |
padding-top | spacing | length |
padding-right | spacing | length |
padding-bottom | spacing | length |
padding-left | spacing | length |
padding-inline-start | spacing | length |
padding-inline-end | spacing | length |
box-sizing | size | string |
border | border | string or number |
border-top | border | string or number |
border-right | border | string or number |
border-bottom | border | string or number |
border-left | border | string or number |
border-width | border | string or number |
border-style | border | string |
border-color | border | string |
border-top-width | border | length |
border-top-style | border | string |
border-top-color | border | colour |
border-right-width | border | length |
border-right-style | border | string |
border-right-color | border | colour |
border-bottom-width | border | length |
border-bottom-style | border | string |
border-bottom-color | border | colour |
border-left-width | border | length |
border-left-style | border | string |
border-left-color | border | colour |
border-radius | border | string or number |
border-top-left-radius | border | length |
border-top-right-radius | border | length |
border-bottom-right-radius | border | length |
border-bottom-left-radius | border | length |
outline | border | string or number |
background-color | background | colour |
background-image | background | asset |
background-size | background | string or number |
background-position | background | string or number |
background-repeat | background | string |
color | text | colour |
font-family | text | string |
font-size | text | length |
font-weight | text | string or number |
font-style | text | string |
font-variant-numeric | text | string |
line-height | text | string or number |
letter-spacing | text | length |
word-spacing | text | length |
text-align | text | string |
text-decoration | text | string |
text-transform | text | string |
text-indent | text | length |
vertical-align | text | length |
white-space | text | string |
hyphens | text | string |
direction | text | string |
overflow-wrap | text | string |
columns | multi-column | string or number |
column-count | multi-column | string or integer |
column-width | multi-column | length |
column-gap | multi-column | length |
column-rule | multi-column | string or number |
column-rule-width | multi-column | length |
column-rule-style | multi-column | string |
column-rule-color | multi-column | colour |
column-fill | multi-column | string |
column-span | multi-column | string |
display | layout | string |
flex-direction | layout | string |
flex-wrap | layout | string |
flex | layout | string or number |
flex-grow | layout | string or number |
flex-shrink | layout | string or number |
flex-basis | layout | length |
justify-content | layout | string |
align-items | layout | string |
align-self | layout | string |
gap | layout | string or number |
row-gap | layout | length |
grid-template-columns | layout | string or number |
grid-template-rows | layout | string or number |
grid-column | layout | string or integer |
grid-row | layout | string or integer |
top | position | length |
right | position | length |
bottom | position | length |
left | position | length |
inset-inline-start | position | length |
inset-inline-end | position | length |
z-index | position | string or integer |
rotate | position | string or number |
break-before | pagination | string |
break-after | pagination | string |
break-inside | pagination | string |
orphans | pagination | string or integer |
widows | pagination | string or integer |
page | pagination | page template id |
box-decoration-break | pagination | string |
overflow | visibility | string |
text-overflow | visibility | string |
text-fit | visibility | string |
visibility | visibility | string |
opacity | visibility | string or number |
border-collapse | table | string |
table-layout | table | string |