If tag


Note: You may also be interested in using the Else tag.

Use the if tag to conditionally include part of a report. You may also use the else tag within the body of the if tag to include a different section of the report when the condition is not met. Be sure to insert both the start and end tags!

Suppose you want your report to display different things depending upon the data. For example, let's say we want the city name to be displayed only if the city is in North America.

You can use the if tag to do this. The if tag is known as a conditional tag, and using the if tag boils down to two actions:

In simple terms, the if tag says, "If the condition that I set is met, then perform a particular action."

Note: It isn't enough to simply determine whether a condition is met; you must also tell the template what to do if the condition is met.

Let's refer to our contact list table. First, you insert an if tag that says, "See if the customer's city is in North America." Second, you tell the report to display the city name if the condition is met.

This second step can be a bit tricky to understand, so let's reiterate. If the condition is met in part one, you have to explicitly tell the template what to do next: display the city name.

This may seem like an extra step, but it's a vital one – and it's one that gives the if tag great flexibility and power. For example, you could tell the template that if the city is in North America to insert an image of the western hemisphere, to include a statement for residents in certain time zones, or to perform any number of actions.

The if tag will continue to act (just like the forEach tag continues to act) until it reaches an endIf tag.

Let's see this in action. Here's the table in our template:


First Name

Last Name


<forEach tag> <out tag>

<out tag>

<if tag> <out tag> <endIf tag>

<endforEach tag>



There are three tags in the City column:

And here's the report:


First Name

Last Name







New York







If Tag Attributes

forEach row test

A forEach loop can iterate over several rows of data at once (see the forEach tag for details on this). Inside the loop row [0] always exists but the additional rows may not exist in the last iteration of the loop. For example, if the forEach is iterating over 7 rows of data and has step=’3’ then the first two times through the loop all 3 rows exist but the last time only the first row exists.

Note: rows access is 0-based. So the first row is [0] and the second row is [1]. The number inside the [] is the offset from the start and the first row is the start of the rows.

To test if a row exists, you use the following construct. Note that this is a test=, not a select=.

<wr:forEach ="./name" var=”items” step=”3”>

<wr:if test=”${@items[1]}”>

Second row exists



The @items[1] is the context for row [1] in the forEach loop. By definition this if will always be true for each time through the loop except the last time. Also, all other tags will return nothing if they are for a row that does not exist, so in many cases you do not need to use this if.

All row access aside from this use in if uses items[1] while this uses @items[1]. The @ sign tells the system to check existence (a true/false value) instead of access the row’s data.

Learn More

If Tag Tutorial

About tags

The Tag Editor