The reports are defined in XML, laid out in a similar fashion to HTML. You define your content though tags (you can have both static and dynamic content) and from this your XML reports are generated. Reports go though a number of stages before they are finally generated. First the XML file is read and any equations or database requests are expanded out – this means you get a second XML file from the first which just contains the pure formatting without any dynamic content. This XML file is then passed on to generate the desired output format, which is either ASCII, Latex or HTML. Latex tools are then used to generate PDF, PS etc files from the Latex.

You may occasionally find issues with reports not working because they contain invalid data in them, like Latex symbols.

Loops are a common method used in reports where you want to display records or rows in a table. The use of headers and footers is an important aspect of this. You can have tables within tables and headers and footers for the tables as well as page header and page footers.


2004-12-23: The GUI is alpha, so is liable to crash but it works most of the time. The executable is gui/src/papyrus_gui . The parameters windows reads the tags from the report to decide which sort of inputs to show. To support this, there are additions to the tag in the Papyrus XML Format:

type: one of text, date, int or dropdown (not yet implemented)
name: the label that will display in the GUI next to the input
sql: (only for type=”combo”) An sql select statement to populate the combo box. Must return two columns (int, any) where the first column is the value you want. e.g. for a foreign key field.
database: (only for type=”combo”) The entry to use when populating the combo box.

e.g. for the example in the screenshots section, the tags are as follows:

  <requires name="Traveller ID" type="int">arg_travellerid</requires>
  <requires name="Arrival" type="date">arg_arrival</requires>
  <requires name="Departure" type="date">arg_depart</requires>

If type is omitted it defaults to text. If name is omitted it defaults to the contents of , e.g., arg_travellerid