<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html"/>

  <!-- pass document's movie elements to printTitle -->
  <xsl:template match="/">
    <xsl:variable name="movies" select="/database/movies/movie"/>
    <xsl:call-template name="printTitles">
      <xsl:with-param name="nodes" select="$movies"/>
    </xsl:call-template>
  </xsl:template>

  <!-- recursively print title of each movie in node-set -->
  <xsl:template name="printTitles">
    <xsl:param name="nodes"/>
    <xsl:value-of select="$nodes[1]/title"/>
    <br/>
    <xsl:if test="count($nodes) &gt; 1">
      <xsl:call-template name="printTitles">
        <xsl:with-param name="nodes" select="$nodes[position() &gt; 1]"/>
      </xsl:call-template>
    </xsl:if>
  </xsl:template>

</xsl:stylesheet>
