La funzione di campo FOR valuta un'espressione ed assegna un valore risultante TRUE, FALSE o UNKNOWN
FOR consente di scrivere un'espressione che esegue un'iterazione su tutte le istanze di un campo ripetuto. Per ciascuna istanza, elabora un'espressione booleana e raccoglie i risultati.
FOR ALL Body.Invoice.Purchases."Item"[] AS I (I.Quantity <= 50)
In alcuni casi, questa sintassi non sembra necessaria, perché è possibile ottenere tali informazioni dal contesto, ma viene utilizzata per congruenza con altri blocchi di sintassi.
La clausola AS associa il nome I nel riferimento di campo con l'istanza corrente del campo ripetuto. Questo concetto è simile al concetto di classi iterator utilizzato in alcuni linguaggi object oriented, come C++. L'espressione tra parentesi è un predicato che viene valutato per ciascuna istanza del campo Item.
FOR ANY Body.Invoice.Purchases."Item"[] AS I (I.Title = 'The XML Companion')il predicato secondario è TRUE. Tuttavia, l'espressione successiva restituisce FALSE:
FOR ANY Body.Invoice.Purchases."Item"[] AS I (I.Title = 'C Primer')perché C Primer non è incluso in questa fattura. Se in questa istanza alcuni degli elementi nella fattura non includono un campo relativo al titolo del libro, il predicato secondario restituisce UNKNOWN ed il predicato quantificato restituisce il valore UNKNOWN.
FOR ANY Body.Invoice.Purchases."Item"[] AS I (I.Book IS NOT NULL AND I.Book.Title = 'C Primer')Il predicato IS NOT NULL assicura che se il campo Item non contiene un Book, viene restituito un valore FALSE dal predicato secondario.