Returns those items from the sequence $seq for which the supplied function $f returns true.

filter($seq as item()*, $f as function(item()) as xs:boolean) ➔ item()*





The sequence to be filtered



function(item()) as xs:boolean

The filtering function (used to test each item in the sequence)





Links to W3C specifications

XPath 3.1 Functions and Operators

Saxon availability

Available in XPath 3.0, XSLT 3.0, XQuery 3.0, and later versions. From Saxon 10, available in all editions. Implemented in Saxon-PE and Saxon-EE since Saxon 9.6.

Notes on the Saxon implementation

Available in Saxon 9.3 - 9.5 with altered argument order ($f,$seq), and provided XPath 3.0 is enabled.

Saxon 10, unlike the W3C XSLT 3.0 specification, makes fn:filter streamable under appropriate circumstances. Calls on fn:filter are streamable provided that the function supplied as the predicate is either (a) a reference to a user-declared stylesheet function declared with streamability="inspection", or (b) an inline function whose body is grounded and motionless. More specifically, if the predicate function satisfies these conditions then the posture and sweep of the function call are the same as the posture and sweep of the first argument.

Available in Saxon-HE from Saxon 10; in Saxon-PE/EE since 9.6.