Я не уверен, какое исключение вы имели, так как то, что вы показали, кажется неполным. 0x01 не является допустимым символом Xml, и это может быть причиной исключения. Я создал немного другую версию вашей таблицы стилей, которая выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl" xmlns:myScripts="myScripts">
<xsl:output method="text" indent="yes"/>
<msxsl:script implements-prefix="myScripts" language="C#">
public string SOH()
{
return '\u0001'.ToString();
}
</msxsl:script>
<xsl:template match="/">
<xsl:value-of select="myScripts:SOH()"></xsl:value-of>
</xsl:template>
</xsl:stylesheet>
Чтобы предотвратить его сбой из-за недопустимого символа, мне нужно было отключить проверку символов в модуле записи, который пишет ответ:
var xslt = new XslCompiledTransform();
xslt.Load(@"C:\Temp\xsl.xsl", new XsltSettings() { EnableScript = true }, null);
var xml = new XPathDocument(new StringReader("<root/>"));
var writerSettigns = xslt.OutputSettings.Clone();
writerSettigns.CheckCharacters = false;
xslt.Transform(xml, XmlWriter.Create(Console.Out, writerSettigns));
что привело к следующему выводу:
☺Press any key to continue . . .
Как видите, символ был записан на выходе без исключения, и исключений не было.