A função do campo FOR avalia uma expressão e designa um valor resultante de TRUE, FALSE ou UNKNOWN.
A função FOR permite gravar uma expressão que itera sobre todas as instâncias de um campo de repetição. Para cada instância, ela processa uma expressão booleana e intercala os resultados.
FOR ALL Body.Invoice.Purchases."Item"[] AS I (I.Quantity <= 50)
Em alguns casos, esta sintaxe parece desnecessária, porque você pode obter essas informações do contexto, mas isto é feito para consistência com outras partes da sintaxe.
ASclause associa o nome I na referência de campo com a instância atual do campo repetido. Isto é semelhante ao conceito de classes de iterador utilizadas em algumas linguagens orientadas a objetos, tais como, C++. A expressão entre parênteses é um predicado que é avaliado para cada instância do campo Item.
FOR ANY Body.Invoice.Purchases."Item"[] AS I (I.Title = 'The XML Companion')o subpredicado é avaliado como TRUE. No entanto, esta próxima expressão retorna FALSE:
FOR ANY Body.Invoice.Purchases."Item"[] AS I (I.Title = 'C Primer')porque C Primer não está incluído nesta fatura. Se, nessa instância, alguns dos itens da fatura não incluírem um campo de título de manual, o subpredicado retornará UNKNOWN e o predicado quantificado retornará o valor UNKNOWN.
FOR ANY Body.Invoice.Purchases."Item"[] AS I (I.Book IS NOT NULL AND I.Book.Title = 'C Primer')O predicado IS NOT NULL assegura que, caso um campo Item não contenha Book, um valor FALSE seja retornado a partir do sub-predicado.