[xsl] AVT retrieves whole nodeset instead of the required single node

Subject: [xsl] AVT retrieves whole nodeset instead of the required single node
From: Ihe Onwuka <ihe.onwuka@xxxxxxxxx>
Date: Wed, 21 Nov 2012 16:11:07 +0000
<stuff>
   <line>
      <period>2005</period>
      <period>2006</period>
      <period>2007</period>
      <period>2008</period>
   </line>
<line>
  <lineItem legend="ASSETS">
     <yearlyFigures>
           <figure year="1">6981</figure>
           <figure year="2">6236</figure>
           <figure year="3">5148</figure>
           <figure year="4">7517</figure>
      </yearlyFigures>
   </lineItem>
 </line>
</stuff>

I want to replace figure/@year with the year from the corresponding
period in the preceding line. So I wrote

  <xsl:template match="yearlyFigures[figure/last() =
preceding::line/period/last()]/figure">
    <figure year="{preceding::line/period[current()/@year]}">
       <xsl:apply-templates/>	
    </figure>	
  </xsl:template

and get

   <line>
      <lineItem legend="ASSETS">
         <yearlyFigures>
            <figure year="2005 2006 2007 2008">6981</figure>
            <figure year="2005 2006 2007 2008">6236</figure>
            <figure year="2005 2006 2007 2008">5148</figure>
            <figure year="2005 2006 2007 2008">7517</figure>
         </yearlyFigures>
      </lineItem>
   </line>

Ultimately I will probably use a key to chain figures to periods but
for now I'd just like to know why the above doesn't just give me the
period that I want.

Current Thread