While
Create a loop. All child elements are executed as long as the condition in the test attribute evaluates to true.
Child elements
A, Action, AddSearchpath, AttachFile, Attribute, B, Barcode, Bookmark, Box, Br, ClearPage, Clip, Color, Column, Columns, Copy-of, DefineColor, DefineFontalias, DefineFontfamily, DefineMatter, DefineTextformat, Element, Fontface, ForAll, Frame, Group, HSpace, Hyphenation, I, Image, Include, Initial, InsertPages, Layout, Li, LoadDataset, LoadFontfile, Loop, Mark, Message, NextFrame, NextRow, NoBreak, Options, Output, Overlay, Pageformat, Pagetype, Paragraph, PlaceObject, PositioningArea, PositioningFrame, ProcessNode, SaveDataset, SavePages, SetGrid, SetVariable, SortSequence, Span, StructureElement, Sub, Sup, Switch, Table, TableNewPage, Tablehead, Tablerule, Td, Tr, Trace, Transformation, U, Until, VSpace, Value, While
Parent elements
AtPageCreation, AtPageShipout, Case, Contents, ForAll, Layout, Loop, Otherwise, Record, SavePages, Until, While
Attributes
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.
Example
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 <= 3 "> <!-- less or equal -->
<SetVariable variable="counter" select=" $counter + 1"/>
<SetVariable variable="text">
<Value select="$text"/>
<Value select="'Text '"/>
</SetVariable>
</While>
<PlaceObject>
<Textblock>
<Paragraph><Value select="$text"/></Paragraph>
</Textblock>
</PlaceObject>
</Record>
See also
The section loops in chapter programming.