Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Filters and Filter Patterns

Filters and Filter Patterns

Constraints and branching can be applied to any collection by adding a filter clause, [pattern], to the collection. The filter is analogous to the SQL WHERE clause. The filter contains a pattern within it called the filter pattern. The filter pattern evaluates to a Boolean value and is tested for each element in the collection. Any elements in the collection failing the filter pattern test are omitted from the result collection.

For convenience, if a collection is placed within the filter, a Boolean TRUE is generated if the collection contains any members and a FALSE is generated if the collection is empty. An expression such as author/degree implies a collection-to-Boolean conversion function that evaluates to TRUE if there exists an <author> element with a child element named <degree>.

Note that any number of filters can appear at a given level of an expression. Empty filters are not allowed.

Filters are always evaluated with respect to a context. In other words, the expression book[author] means that for every <book> element that is found, test whether it has an <author> child element. Likewise, book[author = 'Bob'] means that for every <book> element that is found, test whether it has an <author> child element with the value Bob. One can examine the value of the context as well by using the period (.) character. For example, book[. = 'Trenton'] means that for every book that is found in the current context, test whether its value is Trenton.

Expression Refers to

book[excerpt]

All <book> elements that contain at least one <excerpt> element.

book[excerpt]/title

All <title> elements inside <book> elements that contain at least one <excerpt> element.

book[excerpt]/author[degree]

All <author> elements that contain at least one <degree> element, and are inside of <book> elements that contain at least one <excerpt> element.

book[author/degree]

All <book> elements that contain at least one <author> element with at least one <degree> child element.

book[excerpt][title]

All <book> elements that contain at least one <excerpt> element and at least one <title> element.

Show:
© 2015 Microsoft