File: Data.xml <chapter> <title>"title 1" Excerpt</title> <para>para1</para> <figure> <title>title 1</title> </figure> <para>para2</para> <sect1> <figure> <title>"He Lights"</title> </figure> <para>line 1</para> <sect2> <figure> <title>title 2</title> </figure> </sect2> </sect1> </chapter> 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="chapter"> <xsl:for-each select="descendant::figure/title"> <xsl:sort /> <xsl:if test="position() = 1"> First figure title in chapter: <xsl:value-of select="." /> </xsl:if> <xsl:if test="position() = last()"> Last figure title in chapter: <xsl:value-of select="." /> </xsl:if> </xsl:for-each> </xsl:template> </xsl:stylesheet> Output: First figure title in chapter: "He Lights" Last figure title in chapter: title 2