while
Iteruje postupně nad všemy prvky konformní hodnoty specifikované výrazem.
whilesequence [usealias ] param-assignment [whilefirststatement-first/whilefirst] statement-body [whilelaststatement-last/whilelast] [elsestatement-else ]/while
- sequence
 - Výraz, který se vyhodnotí a podle typu výsledné hodnoty se nad jeho prvky iteruje.
 - alias
 - Volitelně: proměnná, ve které bude dostupná aktuální hodnota iterace. Default je 
_. - param-assignment
 - Předávané parametry. Mají smysl zejména u datových zdrojů. Pozor, v případě dotazových datových zdrojů může použití nadbytečných parametrů vést k chybě.
 - statement-first
 - Seznam příkazů provedených před prvním průchodem cyklem.
 - statement-body
 - Seznam příkazů prováděných při každém průchodu cyklem.
 - statement-last
 - Seznam příkazů provedených po posledním průchodu cyklem.
 - statement-else
 - Seznam příkazů provedených v případě, že sequence neobsahuje žádné prvky.
 
Uvnitř statement-body jsou dostupné následující proměnné:
_first- Je 
truepokud jde o první průběh cyklem. _last- Je 
truepokud jde o poslední průběh cyklem. _ord- Počet, kolikrát již cyklus proběhl, tzn. 0-based index aktuálního prvku.
 _odd- Je 
truepokud jde o lichý průběh cyklem. Počítá se ale z hodnoty_ord, tzn. poprvé jefalse. _- aktuální prvek cyklu
 
{while [1, 2, 3, 4, 5]}
  {_}{if not _last}, {/if}
{/while}
1, 2, 3, 4, 5
Iterace přes pole prvků. Každý se vypíše, a pokud není poslední, je za ním ještě čárka.
Pozor: tyto hodnoty jsou dostupné pouze ve statement-body, nikoli ve volitelných podsekcích. Zejména je důležité, že hodnota proměnné _ není ve statement-first a statement-last definovaná a může nabývat nespecifikovaných hodnot – např. se může zdědit z nadřazeného cyklu.
Volitelné podsekce příkazu lze využít například k výpisu tabulkových dat.
{while _template.sqlSource}
{whilefirst}
<table>
  <thead>
    <tr>
      <th>A</th>
      <th>B</th>
    </tr>
  </thead>
  <tbody>
{/whilefirst}
    <tr class="{if _odd}odd{else}even{/if}">
      <td>{_.columnA}</td>
      <td>{_.columnB}</td>
    </tr>
{whilelast}
  </tbody>
</table>
{/whilelast}
{else}
<p>Data nejsou k dispozici.</p>
{/while}
Předpokládáme, že sqlSource je reference na nějaký SQL zdroj, zpřístupňující řádky tabulky se slouci columnA a columnB.
Specifika systému jNetPublish
Iterace přes dětské assety
Při iteraci, kde hodnotou sequence je asset, se implicitně prochází přes všechny jeho dětské assety. (Hlavní výjimkou jsou datové zdroje – viz dále.)
{while _primary.defaultDataFolder}
{whilefirst}<ul>{/whilefirst}
  <li><a href="{link(_)}">{_.title}</a></li>
{whilelast}<ul>{/whilelast}
{/while}
Iteruje se přes dětské assety datové složky primární sekce.
Lepší kontroly nad iterací přes dětské assety mohou poskytnout jednak funkce sortedChildren a sortedFilteredChildren, jednak využití dotazového datového zdroje.
Iterace přes datové zdroje
Datové zdroje obecně při iteraci používají vlastní logiku pro iteraci. Existuje několik předdefinovaných typů, a také generické typy umožňující použít vlastní řídící třídu definující způsob, jakým se získá seznam, přes který se bude iterovat.
V závislosti na typu datového zdroje jsou dané různé možnosti parametrizace iterace.
Neassetové datové zdroje
Dokumentace chování je uvedena v popisu assetů:
Assetové datové zdroje
Tyto assety mají několik společných rysů. Při iteraci přes ně je v každém průchodu cyklem hodnotou proměnné _ assetová obálka – speciální objekt s podhodnotami:
asset- Aktuální asset
 parent- Assetová obálka nadřazeného assetu (pro hierarchické struktury, jinak null)
 children- Seznam assetových obálek vnořených assetů (pro hierarchické struktury, jinak null)
 
Selekce podhodnoty s jakýmkoli jiným názvem se vyhodnocuje, jako by se brala přímo z assetu; _.title je tedy totéž jako _.asset.title.
{while _primary.menu}
{whilefirst}<ul>{/whilefirst}
  <li><a href="{link(_.asset)}">{_.title}</a></li>
{whilelast}<ul>{/whilelast}
{/while}
Předpokladem je, že primární sekce obsahuje dětský asset s názvem "menu", kterým je výčtový datový zdroj (ale stačí předpokládat, že to je jakýkoli zdroj assetů).
V každém průchodu cyklem se musí při vytváření odkazu z assetové obálky vybrat asset, který je vstupem pro funkci link. Titulek se získává z assetové obálky, která jeho selekci deleguje na samotný asset.
Jednotlivé typy assetových datových zdrojů mají další vlastnosti – viz příslušnou dokumentaci: