I can duplicate the result you state:
DECLARE @xml [xml]
set @xml=convert(xml,N'<newdataset><table1 type="SUBJECT"><fromvalue>ABILITY -
FICTIONASDASDASDASDASD</fromvalue><tovalue>Abominable snowman -
Fiction</tovalue></table1></newdataset>')
SELECT @xml
But I'm wondering if this is by accident; you mean to "paste":
DECLARE @xml [xml]
set @xml=convert(xml,N'<newdataset><table1 type="SUBJECT"><fromvalue>ABILITY - FICTIONASDASDASDASDASD</fromvalue><tovalue>Abominable snowman - Fiction</tovalue></table1></newdataset>')
SELECT @xml
Which looks the same, right? (Are you still with me?)
The thing is, the resulting xml for the CR containing bit (1st one) looks like:
<newdataset>
<table1 type="SUBJECT">
<fromvalue>ABILITY -
FICTIONASDASDASDASDASD</fromvalue>
<tovalue>Abominable snowman -
Fiction</tovalue>
</table1>
</newdataset>
And you're after (to my mind, the correct output):
<newdataset>
<table1 type="SUBJECT">
<fromvalue>ABILITY - FICTIONASDASDASDASDASD</fromvalue>
<tovalue>Abominable snowman - Fiction</tovalue>
</table1>
</newdataset>
What happens when you do this to your variable "@xml"?
SELECT REPLACE(CAST(@xml AS [nvarchar](MAX)),CHAR(13),'')
If this doesn't directly solve the problem, try playing around with the other indomitable CHAR(10) "linefeed". I suspect the stoproc problem stems from ...
something solvable by such a placement filter.