La función del campo FOR evalúa una expresión y asigna un valor resultante de TRUE, FALSE o UNKNOWN
FOR le permite escribir una expresión que itera por todas las instancias de un campo de repetición. Para cada instancia procesa una expresión booleana y coteja los resultados.
FOR ALL Body.Invoice.Purchases."Item"[] AS I (I.Quantity <= 50)
En algunos casos, esta sintaxis parece ser innecesario porque puede obtener esta información a partir del contexto pero esto se lleva a cabo por motivos de coherencia con otros fragmentos de sintaxis.
La cláusula AS asocia el nombre I de la referencia de campo con la instancia actual del campo de repetición. Esto es similar al concepto de clases de iterador que se utiliza en algunos lenguajes orientados a objeto como, por ejemplo, C++. La expresión entre paréntesis es un predicado que se evalúa para cada instancia del campo Item.
FOR ANY Body.Invoice.Purchases."Item"[] AS I (I.Title = 'The XML Companion')el subpredicado se evalúa en TRUE. No obstante, la expresión siguiente devuelve FALSE:
FOR ANY Body.Invoice.Purchases."Item"[] AS I (I.Title = 'C Primer')debido a que en esta factura no se incluye C Primer. Si en esta instancia algunos de los elementos de la factura no incluye un campo de título de libro, el subpredicado devuelve UNKNOWN y el predicado cuantificado devuelve el valor UNKNOWN.
FOR ANY Body.Invoice.Purchases."Item"[] AS I (I.Book IS NOT NULL AND I.Book.Title = 'C Primer')El predicado IS NOT NULL garantiza que, si un campo Item no contiene un Book, el subpredicado devuelve el valor FALSE.