>2.XSL経由でデータを送ると全てユニコードになってしまう

そんなことないでしょ。
<xsl:output encoding="Shift_JIS"/>

> XML
> データ:<data no="no" name="name" date="date" mail="mail" pwd="pwd">
> スクリプト:$_ =~ /mail="(..+?)"/; $mail = $1;

こんなことやるつもりなの?