preceding and following
File: Data.xml <story> <chapter> <title>Chapter 1</title> <para>para 1</para> </chapter> <chapter> <title>Chapter 2</title> <para>item 1</para> <test /> <para>item 2</para> <sect> <title>Chapter 2, Section 1</title> <para>item 3</para> <test /> <para>para 2</para> </sect> </chapter> <chapter> <title>Chapter 3</title> <para>para A</para> </chapter> </story> File: Transform.xslt <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="xml" omit-xml-declaration="yes" indent="no" /> <xsl:template match="test"> Previous chapter: ( <xsl:value-of select="preceding::chapter[1]/title" /> ) Next chapter: ( <xsl:value-of select="following::chapter/title" /> ) <xsl:apply-templates /> </xsl:template> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()" /> </xsl:copy> </xsl:template> </xsl:stylesheet> Output: <story> <chapter> <title>Chapter 1</title> <para>para 1</para> </chapter> <chapter> <title>Chapter 2</title> <para>item 1</para> Previous chapter: ( Chapter 1 ) Next chapter: ( Chapter 3 ) <para>item 2</para> <sect> <title>Chapter 2, Section 1</title> <para>item 3</para> Previous chapter: ( Chapter 1 ) Next chapter: ( Chapter 3 ) <para>para 2</para> </sect> </chapter> <chapter> <title>Chapter 3</title> <para>para A</para> </chapter> </story>