Version 5.5.8

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 , 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>