Create a loop. All child elements are executed as long as the condition in the test attribute evaluates to true.

Child elements

Action, AddSearchpath, Attribute, B, Barcode, Bookmark, Br, Color, Column, Columns, Copy-of, DefineColor, DefineFontalias, DefineFontfamily, DefineTextformat, Element, Fontface, ForAll, Frame, Group, HSpace, Hyphenation, I, Image, Include, Initial, InsertPages, Layout, Li, LoadDataset, LoadFontfile, Loop, Message, NewPage, NextFrame, NextRow, Options, Output, Pageformat, Pagetype, Paragraph, PlaceObject, PositioningArea, PositioningFrame, ProcessNode, SaveDataset, SavePages, SetGrid, SetVariable, SortSequence, Span, Sub, Sup, Switch, Table, TableNewPage, Tablehead, Tablerule, Td, Tr, Trace, U, Until, Value, While

Parent elements



test (XPath expression)

Every time before the the loop is executed, this condition must evaluate to true. See the command Until for a loop with an exit test.


The following example creates a textblock with three times the contents 'Text Text Text '.

<Record element="data">
  <SetVariable variable="counter" select="1"/>
  <SetVariable variable="text" select="''"/>
  <While test=" $counter &lt;= 3 "> <!-- less or equal -->
    <SetVariable variable="counter" select=" $counter + 1"/>
    <SetVariable variable="text">
      <Value select="$text"/>
      <Value select="'Text '"/>
      <Paragraph><Value select="$text"/></Paragraph>

See also

The section loops in chapter programming.