Version 5.9.3

# `While`

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

## Child elements

`A`, `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`, `HTML`, `Hyphenation`, `I`, `Image`, `Include`, `Initial`, `InsertPages`, `Layout`, `Li`, `LoadDataset`, `LoadFontfile`, `Loop`, `Mark`, `Math`, `Message`, `NextFrame`, `NextRow`, `NoBreak`, `Options`, `Output`, `Overlay`, `Pageformat`, `Pagetype`, `Paragraph`, `PlaceObject`, `PositioningArea`, `PositioningFrame`, `ProcessNode`, `SaveDataset`, `SavePages`, `Section`, `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`, `Section`, `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 &lt;= 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>

#### On this page