Home : Tutorials : XML and Related Technologies


to the main page about the tutorial  THE XML REVOLUTION  -  TECHNOLOGIES FOR THE FUTURE WEB back up next

Predicates

- expressions coerced to type boolean

A predicate filters a node-set by evaluating the predicate expression on each node in the set with

  • that node as the context node,
  • the size of the node-set as the context size, and
  • the position of the node in the node-set wrt. the axis ordering as the context position.

Example:

  child::section[position()<6] / descendant::cite[attribute::href="there"]

selects all cite elements with href="there" attributes in the first 5 sections of an article document.

(Compare with the earlier example.)

The XPath predicate language is very large, but these are the essential ones to know

  • [attribute::name="flour"]: test equality of an attribute
  • [attribute::name!="flour"]: test inequality of an attribute
  • [attribute::amount='0.5' and attribute::unit='cup']: test two things at once (also or)
  • [position()=2]: test position among siblings
  • [attribute::amount<'0.5']: a syntax error
  • [attribute::amount&lt;'0.5']: a useless test of lexicographical order
  • [number(attribute::amount)&lt;number('0.5')]: what you meant to write instead!

An entire location path may be used as a predicate

  • start at the current node
  • the predicate is true if the location path hits some result positions
  • it is false otherwise
This is very useful to look ahead:
  • [attribute::amount]: the node has an amount attribute
  • [descendant::ingredient]: the node has a nested ingredient

back COPYRIGHT © 2000-2003 ANDERS MØLLER & MICHAEL I. SCHWARTZBACH next


Home : Tutorials : XML and Related Technologies

 

Copyright© 1998-2004 All Rights Reserved. No portion of this site may be reproduced or redistributed without prior written permission from VistaEdge Technologies

All registered trademarks appearing on this site are the property of their respective owners. Java is a trademark or registered trademark of Sun Microsystems, Inc. in the United States and other countries. This site is not connected to Sun Microsystems, Inc. and is not sponsored by Sun Microsystems, Inc.