Axes XPath
La spécification XPath définit treize axes différents ; chaque axe contient plusieurs nœuds. Les nœuds se trouvant sur un axe donné dépendent du nœud de contexte. Les 13 axes, extraits de la discussion plus approfondie figurant à la Section 3.1 du chapitre 3, sont répertoriés ci-dessous. Axe child Contient les enfants du nœud de contexte. Comme mentionné précédemment, les expressions XPath child::lines/child::line et lines/line sont équivalentes. Si une expression XPath (par exemple, /sonnet) ne possède pas de spécificateur d'axe, l'axe child est utilisé par défaut. Axe parent Contient le parent du nœud de contexte, le cas échéant. (Si le nœud de contexte correspond au nœud racine, l'axe parent renvoie un ensemble de nœuds vide). Cet axe peut être abrégé en double point ( .. ). Les expressions parent::sonnet et ../sonnet sont équivalentes. Si le nœud de contexte ne possède pas d'élément < sonnet > comme parent, ces expressions XPath renvoient un ensemble de nœuds vide. Axe self Contient le nœud de contexte lui-même. L'axe self peut être abrégé en point unique ( . ). Axe attribute Contient les attributs du nœud de contexte. Si le nœud de contexte n'est pas un nœud d'élément, cet axe est vide. L'axe attribute peut être abrégé en signe arobase ( @). Les expressions attribute::type et @type sont équivalentes. Axe ancestor Contient le parent du nœud de contexte, le parent du parent, etc. L'axe ancestor contient toujours le nœud racine, sauf si le nœud de contexte correspond au nœud racine. Axe ancestor-or-self Contient le nœud de contexte, son parent, le parent de son parent, etc. Cet axe comprend toujours le nœud racine. Axe descendant Contient tous les enfants du nœud de contexte, tous les enfants des enfants du nœud de contexte, etc. L'axe descendant ne comprend aucun nœud d'attribut ou d'espace de noms. (comme mentionné précédemment, un nœud d'attribut a comme parent un nœud d'élément même si le nœud d'attribut n'est pas considéré comme un enfant du parent). Axe descendant-or-self Contient le nœud de contexte et tous les enfants du nœud de contexte, tous les enfants des enfants du nœud de contexte, etc. Axe preceding-sibling Contient tous les frères précédents du nœud de contexte ; en d'autres termes, tous les nœuds ayant le même parent que le nœud de contexte et précédant le nœud de contexte dans le document XML. Si le nœud de contexte est un nœud d'attribut ou un nœud d'espace de noms, l'axe preceding-sibling est vide. Axe following-sibling Contient tous les frères suivants du nœud de contexte ; en d'autres termes, tous les nœuds ayant le même parent que le nœud de contexte et suivant le nœud de contexte dans le document XML. Si le nœud de contexte est un nœud d'attribut ou un nœud d'espace de noms, l'axe following-sibling est vide. Axe preceding Contient tous les nœuds précédant le nœud de contexte dans le document, à l'exception des nœuds d'ancêtre, des nœuds d'attribut et des nœuds d'espace de noms. Axe following Contient tous les nœuds suivant le nœud de contexte dans le document, à l'exception des nœuds descendants, des nœuds d'attribut et des nœuds d'espace de noms. Axe namespace Contient les nœuds d'espace de noms du nœud de contexte. Si le nœud de contexte n'est pas un nœud d'élément, cet axe est vide. Les cinq axes ancestor, descendant, following, preceding et self segmentent tous les éléments dans le document XML (à l'exception des nœuds d'attribut et d'espace de noms). Tout nœud de l'arborescence XPath figure dans l'un de ces cinq axes sans qu'ils ne se chevauchent.