XPath-Knotentypen
Es gibt sieben Knotentypen in XPath. An dieser Stelle soll nur das Referenzmaterial erläutert werden, weitere Information zu den verschiedenen Knotentypen erhalten Sie in der Beschreibung des XPath-Datenmodells.

Der Wurzelknoten |
Der Wurzelknoten ist die Wurzel des Baums. Im Gegensatz zu anderen Knoten besitzt er kein übergeordnetes Element. Die ihm untergeordneten Elemente bilden den Elementknoten für das Dokument, zusammen mit etwaigen Kommentaren oder Verarbeitungsanweisungen, die außerhalb des Dokumentelements erscheinen. Der Wurzelknoten hat keinen erweiterten Namen.

Elementknoten |
Jedes Element im ursprünglichen XML-Dokument wird durch einen Elementknoten repräsentiert. Der erweiterte Name des Elements ist sein lokaler Name zusammen mit einem für das Element gültigen Namensraum. Auf die verschiedenen Teile des Elementnamens können Sie mit Hilfe der Funktionen name(), local-name() und namespace-uri() zugreifen. Hier ein Element aus einem XML-Dokument:
    <xyz:report xmlns:xyz="http://www.xyz.com/">
Die Werte für die drei Funktionen dieses Elementknotens sind folgende: name() xyz:report local-name() report namespace-uri() http://www.xyz.com/

Attributknoten |
Attribute von Elementen in einem XML-Dokument werden zu XPath-Attributknoten. Ein Attribut besitzt, ebenso wie ein Elementknoten, einen erweiterten Namen. Die Attributknoten eines bestimmten Elementknotens sind die im XML-Element ausdrücklich angegebenen Attribute sowie etwaige in der DTD definierte Attribute mit Vorgabewerten. Von DOM (Document Object Model) aus gesehen ist ein Elementknoten der übergeordnete Knoten seiner Attribute, obwohl die Attribute nicht Kinder des Elements sind. Anders ausgedrückt: werden alle Kinder eines Elementknotens ausgewählt, so werden etwaige Attributknoten dieses Elements nicht ausgewählt.

Textknoten |
Textknoten enthalten einfach den Text eines Elements. Die im ursprünglichen Text im XML-Dokument enthaltenen Zeichen- und Entity-Referenzen werden aufgelöst, bevor der XPath-Textknoten erstellt wird. Entsprechend erscheinen auch vorhandene CDATA-Abschnitte als Textknoten. Sie können nicht wissen, ob ein bestimmter Teil eines Textknotens ursprünglich eine Zeichen- oder Entity-Referenz oder ein CDATA-Abschnitt war.

Kommentarknoten |
Ein Kommentarknoten ist ebenfalls sehr einfach und enthält Text. Jeder Kommentar im Ausgangsdokument (mit Ausnahme der Kommentare in der DTD) wird zu einem Kommentarknoten. Der Text des Kommentarknotens (der mit dem Knotentest text() ausgegeben wird) umfasst alles im Kommentar außer dem öffnenden <!-- und dem schließenden -->.

Verarbeitungsanweisungsknoten |
Eine Verarbeitungsanweisung besteht aus zwei Teilen: einem Namen (der von der Funktion name() geliefert wird) und einem String-Wert. Der String-Wert ist alles hinter dem Namen, einschließlich Leerraum, aber nicht einschließlich des abschließenden ?>.

Namensraumknoten |
Namensraumknoten werden in XSLT-Stylesheets fast nie benutzt, denn sie existieren vorwiegend zum Nutzen des XSLT-Prozessors. Beachten Sie, dass die Deklaration eines Namensraums (z. B. xmlns:auth="http://www.authors.net"), obwohl sie technisch gesehen in der XML-Quelle ein Attribut ist, zu einem Namensraumknoten und nicht zu einem Attributknoten wird. Namensraumknoten gibt es sowohl für die definierten Namensraumpräfixe als auch für etwaige Standardnamensräume.