You've forgotten that the value of position() changes inside a predicate. x[position()] means x[position()=position()] which selects everything.
You can't reliably select attributes by position anyway. Just because Jan2007 is attribute 1 of Dollars doesn't mean it will be attribute 1 of Hourly. Attribute order is intrinsically unpredictable. You need to select the attribute with the corresponding name, i.e.
<p><xsl:value-of select='../../Hourly/@*[name()=name(current())]' /></p>
And there's still no guarantee that Jan will precede Feb in your output.
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference