If you create a table, most of the time it will be grouped to a node of the XML file. To have more possibilities using the XSLfast requirement of grouping tables to nodes, you can create helpful additional nodes in your XML file. These additional nodes are not saved within the actual XML file but they allow you to perform functions, which could not be achieved with only the regular structure.
Double click on a table on which you want to apply the filter; the Grouping properties window will open. Switch to the tab Filtering:

In the left frame you see the structure of the XML file, like in the XML window. Now you have several different opportunities to create nodes to help you "filter" the contents of the XML file. As these nodes do not exist physically and are not saved with the XML file, they can also be called "virtual nodes". For this function you need some knowledge of XPath.
Example 1:
In an XML file there are hardware products and shoes contained but for your document you only need hardware. You could modify the XML file and remove all shoe products, but if it is a huge file this can be a problem. Of course you could make a copy of the XML file and modify it - but an easy and fast way is to use the filtering function.
This is a simple table:

You created it to show the name and the price of the products and you grouped the table to the node Product. If you generated it now, it could look like this:

But today you only need hardware products. Create a filter, which will only display those products you need. Double click on the table on which you want to apply the filter and open the Grouping properties window, Filtering tab:

On the left side is your XML tree. On the right side you have the entry field for the filters. The target is to create a filter, which only shows the products you need. First, you need to specify a basic grouping for the table. You can drag and drop the grouping node from the XML tree on the left:

This is your current table grouping. Now you need to modify it according to your requirements. Using this grouping you currently print hardware and shoes, but you only need to print hardware products, so you need to create a "new" product group with the correct products. Enter an XPath expression into the field, which will only consider the hardware products in the XML file:
ProductGroup[DescShort='Hardware']/ProductGroup/Product
This expression means that by using this filter the table will still be grouped to the Product node, but only Hardware data will be considered.
Now click the "Apply" button. You will see that your XML tree has a new node attached, which is on the same level as ProductGroup. It has a different color and shows the string you just entered.

If you now group the table you have created before to this filter, and process the layout, the resulting document changes.

Now only hardware products are displayed.
Example 2:
This is again a very simple table:

You created it to show the name, the price and an image of the products and you grouped the table to the node Product. If you generated it now, it could look like this:

But today you only need the Leitz products. Create a filter, which will only display products supplied by Leitz:
Open the grouping window with Page->Grouping and switch to the index card Filtering:

To create a new ProductGroup on the same level as the original one, select the node Report and click "New".

The string Report[] appears in the entry window. We do not want to define a filter for the original Report node itself, however, but we want to create a new product group with the correct products below Report. The correct XPath string needed here is
ProductGroupProduct[ManufacturerName='Leitz']
This means "create a filter/virtual node subordinated to Report: a product group containing only those products whose manufacturer name is "Leitz"".
As you will need the nodes, which are contained in the node ProductGroup, check the check box Copy subtree. This has the effect that not only a new node is created but also it contains everything the original node contains.
Now click "Apply". You will see that your XML tree has a new node, which is on the same level as ProductGroup, has a different color and shows the string you just entered.

If you now group the table you created before to this filter, the resulting document changes.

Now only those products with the specified manufacturer are displayed.
There are basic XSL functions available in four menus on the right side of filter editing window - Node Set, String, Boolean, Number:

These functions are useful for more advanced users. Please find more information about them in the specific literature or the Internet, e.g. http://www.w3.org/TR/xsl/.
To delete filters, open the Grouping properties window, select the desired filter and click the "Delete" button.
Please note: By deleting a filter all sublevels contained in it are also deleted.
This filtering function allows you to control the contents of the XML file without having to modify the file itself.
XPath offers a broad range of possibilities for filtering. If you want to check your XPath expression for errors or if it really produces the expected result, use the XPath monitor.
You can apply filters also to table rows. This filter can be applied to all rows or only one. Mark the Relative nested grouping field. This means that all rows below the current row will have the same grouping defined by the filter:

You can use filters as If conditions as well. That means that if you apply a filter marked to be an If condition for a table or a table row, then the element will be displayed only if this filter (as a condition) returns "True".
To make your filter as a condition mark the Conditional region (XSL:IF instead of XSL:FOR-EACH):
