>>118
<xsl:apply-templates match="title" />のあとに<xsl:for-each select="title">がなぜ?
というのは置いといて、恐らく
  select="./@price"

  select="@price"
ではないかと。下のvalue-ofも。

も一つ考えられるのは、>>118のmsxml.dllが古くて、XSLTの名前空間がドラフトなのではないか?と
  <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
でなくて
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
ってなってない?
だとするとソートは、
  <xsl:for-each select="title" order-by="number(@price)">
と書けば上手くいくはず。