• Post category:BI Publisher
  • Post comments:0 Comments
  • Post last modified:January 22, 2021
  • Reading time:4 mins read
You are currently viewing Variables and its usage in RTF template
Variables and its usage in RTF template

In this article we will look into how to use the variables in RTF template.

When we work on RTF templates to create letters/payslip modifications we will have to use some variables to store temporary values and then use them later on in the template.

We use the functions set_variable and get_variable to set and get variable values.

Table of Contents

set_variable function:

This function is used to declare a variable and assign value to it based upon some other field or a default value based on the requirement.

Syntax of set_variable:

<?xdoxslt:set_variable($_XDOCTX, 'variable name', value)?>

The $_XDOCTX specifies the global document context for the variables.
variable name – This is the variable name
value – This is the value that will be assigned to the variable. It can either be a constant value or any XPATH command.

Sample Set_variable commands:

We need to create a form field and add the below code to the form field.

<?xdoxslt:set_variable($_XDOCTX, 'max_hire','1901-01-01')?>
<?xdoxslt:set_variable($_XDOCTX, 'x', xdoxslt:get_variable($_XDOCTX, 'x' + 1)?>
<?xdoxslt:set_variable($_XDOCTX, ‘LC’, xdoxslt:get_variable($_XDOCTX, ‘LC’) + 1)?>
<?xdoxslt:set_variable($_XDOCTX, ‘tot_lines’, count(.//SNO))?>

get_variable function:

This function is used to get the value of a variable that has already been defined in the template.

Syntax of get_variable:

<?xdoxslt:get_variable($_XDOCTX, 'variable name')?>

Sample get_variable commands:

<?xdoxslt:get_variable($_XDOCTX, 'V_SNO')?>
<?format-date:xdoxslt:get_variable($_XDOCTX, 'max_hire'); 'DD-MMM-YYYY'?>
<?xdoxslt:get_variable($_XDOCTX, 'logical_date')?>

Sample usecase for using variable to get the running totals:

/*initialize a variables*/
<?xdoxslt:set_variable($_XDOCTX, 'counter', 0)?>
/*update the variable's value by adding the current value to SEQ, which is XML element */
<?xdoxslt:set_variable($_XDOCTX, 'counter', xdoxslt:get_variable($_XDOCTX, 'counter') + SEQ)?>
/* accessing the variables */
<?xdoxslt:get_variable($_XDOCTX, 'counter')?>
/*Working in a loop*/
<?xdoxslt:set_variable($_XDOCTX, 'counter', 0)?>
/*increment the counter*/
<?xdoxslt:set_variable($_XDOCTX, 'counter', xdoxslt:get_variable($_XDOCTX, 'counter') + 1)?>
<?end for-each?>
<?xdoxslt:get_variable($_XDOCTX, 'counter')?>