Следующий код работает, но грязный и медленный. Я преобразую XDocument в другой XDocument, используя XSLT2 с Saxon, адаптированный с помощью SaxonWrapper:
public static XDocument HSRTransform(XDocument source)
{
System.Reflection.Assembly thisExe = System.Reflection.Assembly.GetExecutingAssembly();
System.IO.Stream xslfile = thisExe.GetManifestResourceStream("C2KDataTransform.Resources.hsr.xsl");
XmlDocument xslDoc = new XmlDocument();
xslDoc.Load(xslfile);
XmlDocument sourceDoc = new XmlDocument();
sourceDoc.Load(source.CreateReader());
var sw = new StringWriter();
Xsl2Processor processor = new Xsl2Processor();
processor.Load(xslDoc);
processor.Transform(sourceDoc, new XmlTextWriter(sw));
XDocument outputDoc = XDocument.Parse(sw.ToString());
return outputDoc;
}
Я понимаю, что медлительность может быть в битах, которые я не контролирую, но есть ли лучшие способы сделать все переключение между XDocument и XmlDocument и использование писателей?