Numerical character references in XML are always Unicode code points. The Unicode code point for emdash is 8212. It's encoded as 151, I believe, in some Microsoft code-page; but that's immaterial. The Unicode code point 151 represents a control character. It's legal to have # 151 in an XML document but it doesn't represent an emdash. If you really want to output this character you could do it by writing
<xsl:text>#151;</xsl:text>
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference