Expression Description / Starts an absolute path that selects from the root node. /Order/Items/Item selects all Item elements that are children of an Items element, which is itself a child of the root Order element. // Starts a relative path that selects nodes anywhere. //Item/Name selects all the Name elements that are children of an Item element, regardless of where they appear in the document. @ Selects an attribute of a node. /Order/@id selects the attribute named id from the root Order element. * Selects any element in the path. /Order/* selects both Items and Client nodes because both are contained by a root Order element. | Combines multiple paths. /Order/Items/Item/Name|Order/Client/Name selects the Name nodes used to describe a Client and the Name nodes used to describe an Item. . Indicates the current (default) node. If the current node is an Order, the expression ./Items refers to the related items for that order. .. Indicates the parent node. //Name/.. selects any element that is parent to a Name, which includes the Client and Item elements. [ ] Define selection criteria that can test a contained node or attribute value. /Order[@id="1999-01-30.195496"] selects the Order elements with the indicated attribute value. /Order/Items/Item[Price > 50] selects products above $50 in price. /Order/Items/Item[Price > 50 and Name="Laser Printer"] selects products that match two criteria. starts-with This function retrieves elements based on what text a contained element starts with. /Order/Items/Item[starts-with(Name, "C")] finds all Item elements that have a Name element that starts with the letter C. position This function retrieves elements based on position. /Order/Items/Item[position ()=2] selects the second Item element. count This function counts elements. You specify the name of the child element to count or an asterisk (*) for all children. /Order/Items/Item[count(Price) = 1] retrieves Item elements that have exactly one nested Price element.