Die FOR-Feldfundktion bewertet einen Ausdruck und weist einen Ergebniswert TRUE (wahr), FALSE (falsch) oder UNKNOWN (unbekannt) zu.
FOR ermöglicht Ihnen, einen Ausdruck zu schreiben, der über alle Instanzen eines Wiederholungsfeld iteriert. Für jede Instanz verarbeitet er einen Booleschen Ausdruck und sortiert die Ergebnisse.
FOR ALL Body.Invoice.Purchases."Item"[] AS I (I.Quantity <= 50)
In einigen Fällen scheint diese Syntax unnötig, da diese Informationen aus dem Kontext ersichtlich sind; sie wird jedoch aus Gründen der Konsistenz mit anderen Syntaxbereichen dennoch verwendet.
Die AS-Klausel ordnet den Namen I in der Feldreferenz der aktuellen Instanz des Wiederholungsfelds zu. Dieses Konzept entspricht ungefähr dem Konzept der Iteratorklassen, das in einigen objektorientierten Sprachen wie C++ verwendet wird. Der Ausdruck in runden Klammern ist ein Vergleichselement, das für jedes Instanz des Felds Item ausgewertet wird.
FOR ANY Body.Invoice.Purchases."Item"[] AS I (I.Title = 'The XML Companion')ergibt das untergeordnete Vergleichselement TRUE. Der nächste Ausdruck ergibt jedoch FALSE:
FOR ANY Body.Invoice.Purchases."Item"[] AS I (I.Title = 'C Primer')Der Grund hierfür ist, dass 'C Primer' in dieser Rechnung nicht enthalten ist. Wenn in dieser Instanz einige der Artikel (Item) in der Rechnung (invoice) kein Feld für den Buchtitel enthalten, gibt das untergeordnete Vergleichselement UNKNOWN zurück, und die Vergleichsfunktion gibt den Wert UNKNOWN zurück.
FOR ANY Body.Invoice.Purchases."Item"[] AS I (I.Book IS NOT NULL AND I.Book.Title = 'C Primer')Das Vergleichselement IS NOT NULL stellt sicher, dass vom untergeordneten Vergleichselement ein FALSE-Wert zurückgegeben wird, wenn ein Artikelfeld (Item) kein Buch (Book) enthält.