Rxindi Release Notes

Version 2.2 | 2026-04-04

Previous releases

Changes in detail

Variables

You can now declare, update, and use named variables in your document templates. Declare a new, or update an existing variable using the new var action. For example: ${!var:myVar,"Hello!"}. The value of a variable can be set to the result of any expression and are type-aware. Besides strings, numbers and booleans, you can also assign a set of elements from the data source to them.

Declared variables can then be used in any argument that takes a path expression using a dollar-sign followed directly by the variable name, e.g. $myVar. All variables are global for the document, so you can declare/update a variable in one frame and use it from another.

The combination of variables and powerful new functions open up a whole new level of what can be achieved directly from within InDesign itself, without having to resort to custom scripts.

Functions

Rxindi now supports 50 functions that can be used in any argument that takes an expression path. This now includes full XPath 1.0 compliance, and many additional functions for working with strings, numbers, node-sets and dates. Some highlights are:

See the manual for the full set of available functions.

Number formatting

Support for formatting and parsing of numbers with locale-aware decimals/grouping using the new format-number and parse-number functions. The syntax for formatting numbers is very flexible and is similar to that used in Excel and other spreadsheet applications.

Examples:

Note that for simplicity the first argument here is a hardcoded number, but typically this will be path to a value in the data source.

Date formatting

Format and parse dates and times in any input and desired output format using the highly flexible format-datetime and parse-datetime functions. Full localization support with complete flexibility on naming of Months and Days.

Examples:

Note that for simplicity the first argument here is a hardcoded date, but typically this will be path to a value in the data source.

System Variables

In previous releases, Rxindi provided special System Attributes like @rxc-index to obtain runtime values like the current index in a LOOP. With this version these have now been migrated and further expanded to so-called System Variables, like $x:index. This offers several benefits:

The set of System Variables is significantly more extensive than the handful of System Attributes previous versions offered. All System Variables have the format $x:<name>. See the manual for info.

To ensure compatibility and a gradual transition, System Attributes will remain supported in this version. They are considered deprecated though, and support for them may be removed in a future version. In XPath mode strict they are not available.

Character Constants

Rxindi now has an extensive set of useful constants that can be used directly, or as a part of a path expression for statements like OUTPUT. Constants have the format $c:<name>. Examples of constants are:

See the manual for the full list.

XPath Mode

Path expressions in templates are evaluated using compatible mode by default. This matches the custom string handling and boolean evaluation behavior of earlier versions of Rxindi, making upgrades smooth without requiring template changes.

Mode strict follows the pure XPath 1.0 specification exactly and will give results that closer aligns to what you might expect if you are very familiar with XPath and/or using external XPath tooling. To enable strict mode for a template, add the following at root level (outside any block):

${!set:xpath-mode,strict}

See the set ACTION in the manual for details.

XML Namespaces

XML namespaces are an integral part of many standard-compliant and enterprise XML documents. Previous versions of Rxindi could load XML documents with namespaces without issues, but due to lack of true support, using them in path expressions could be problematic.

This version adds full support for XML Namespaces. Elements and attributes in a namespace can be addressed either using the full URI of the namespace as prefix: e.g. {http://somenamespace}MyElement or using the namespace prefix as it is defined in the XML document: e.g. ns:MyElement.

Extended Validation

While Rxindi always has had a useful pre-processing validator that helped with incorrect statements, many other checks were previously only performed during actual processing. With this release a couple of important validations are now performed upfront, giving immediate feedback on issues:

Note that there are still many validations that still only happen during processing, but these new validations should provide much earlier feedback on some of the more frequent causes of issues during the template development phase.

No Escapes

All previous versions of Rxindi required commas and semicolons, that were part of an argument to a Rxindi statement, to be "escaped" by preceding each one with a backslash - in all cases. This was necessary because commas and semicolons are also used to separate Rxindi statement arguments, and statements within a placeholder, respectively.

Starting with this release, Rxindi is much smarter about understanding what the intention of commas and semicolons is, based on the context where they are used. Commas can now be used without any special prefix in expression function calls (e.g. concat("Hello", "World")), and both commas and semicolons can be used as-is in any quoted string: 'Hello, world;'.

Both \, and \; are no longer recognized escape sequences with this release. If you want to use commas and semicolons in a Rxindi argument, just quote the entire argument.

This is a breaking change. To upgrade existing templates, remove the backslash prefixes in path expression function calls and ensure that commas and semicolons are quoted for other arguments. Alternatively, switch to v2.1 compatibility mode to process existing template without changes.

Note: The only character that remains to always need explicit escaping is the closing brace: \}.


Previous releases

Version 2.1 | 2026-01-04

Version 2.0.2 | 2025-11-28

Version 2.0.1 | 2025-08-27

Version 2.0 | 2025-05-23

Version 1.5.2 | 2025-09-30

Version 1.5.1 | 2024-09-12

Version 1.5.0 | 2024-05-06

Version 1.4.1 | 2024-02-12

Version 1.4.0 | 2024-01-23

Version 1.3.2 | 2023-12-30

Version 1.3.1 | 2023-11-24

Version 1.3.0 | 2023-11-08

Version 1.2.1 | 2023-10-17

Version 1.2.0 | 2023-05-31

Version 1.1.0 | 2023-01-20

Version 1.0.2 | 2021-12-20

Version 1.0.1 | 2020-10-23

Version 1.0.0 | 2020-04-01


Copyright © 2020-2026 Rxcle. All Rights Reserved.