//internal bool XSLTTransform(string sourceXml, ref string targetXml, string xsltFileName, bool enableExtension) //{ // string xslFile = ConfigHelper.GetFullPath(Program.AppArgument.ConfigFilePath, xsltFileName); // XMLTransformer it = XMLTransformer.CreateFromFileWithCache(xslFile, Program.Log, enableExtension); // return it.TransformString(sourceXml, ref targetXml, enableExtension ? XSLTExtensionTypes.XmlNodeTransformer : XSLTExtensionTypes.None); //} internal bool XSLTTransform(string sourceXml, ref string targetXml, string xsltFileName, bool enableExtension) { string xslFile = ConfigHelper.GetFullPath(_contextForTemplate2.AppArgument.ConfigFilePath, xsltFileName); XMLTransformer it = XMLTransformer.CreateFromFileWithCache(xslFile, _contextForTemplate2.Log, enableExtension); Message sourceMsg = new Message(); sourceMsg.Body = sourceXml; string targetMsgXml = null; string sourceMsgXml = sourceMsg.ToXMLString(); bool res = it.TransformString(sourceMsgXml, ref targetMsgXml, enableExtension ? XSLTExtensionTypes.XmlNodeTransformer : XSLTExtensionTypes.None); if (res) { Message targetMsg = XObjectManager.CreateObject <Message>(targetMsgXml); if (targetMsg != null) { targetXml = targetMsg.Body; } else { _contextForTemplate2.Log.Write(LogType.Error, "Cannot parse xml string to message object. \r\n" + targetMsgXml); res = false; } } return(res); }
internal bool XSLTTransform(string sourceXml, ref string targetXml, string xsltFileName) { string xslFile = ConfigHelper.GetFullPath(_contextForTemplate.AppArgument.ConfigFilePath, xsltFileName); XMLTransformer it = XMLTransformer.CreateFromFileWithCache(xslFile, _contextForTemplate.Log); return(it.TransformString(sourceXml, ref targetXml, XSLTExtensionTypes.None)); }
private MSG.Message TransformToCSBDataSetSchemedXDSGWMessage(MSG.Message msg, string msgID) { if (!_entity.Context.ConfigMgr.Config.EnableXMLTransform) { return(msg); } _entity.Context.Log.Write("Begin transforming XDSGW message."); string file = ConfigHelper.GetFullPath(_entity.Context.AppArgument.ConfigFilePath, _entity.Context.ConfigMgr.Config.XSLTFilePath); XMLTransformer t = XMLTransformer.CreateFromFileWithCache(file, _entity.Context.Log); if (t == null) { return(null); } string csbMsgXml = ""; string otherMsgXml = msg.ToXMLString(); if (!t.TransformString(otherMsgXml, ref csbMsgXml, XSLTExtensionTypes.None)) { return(null); } MSG.Message csbMsg = XObjectManager.CreateObject <MSG.Message>(csbMsgXml); if (csbMsg == null) { _entity.Context.Log.Write(LogType.Error, "Cannot deserialize the transformed XML into XDSGW message."); string fname = string.Format("{0}_transformed", msgID); DumpErrorMessage(csbMsgXml, fname); } _entity.Context.Log.Write("Finish transforming XDSGW message."); return(csbMsg); }
/// <summary> /// In order to support including multiple XSLT files in the XSLT script, /// we disable the external extension (e.g. calling C# code from XSLT) currently. /// </summary> /// <param name="sourceMsg"></param> /// <param name="targetMsg"></param> /// <param name="rootFolderPath"></param> /// <param name="log"></param> /// <returns></returns> public bool TransformMessage(Message sourceMsg, out Message targetMsg, string rootFolderPath, ILog log) { targetMsg = null; if (sourceMsg == null) { return(false); } string xslFilePath = XSLTFileLocation; if (!Path.IsPathRooted(xslFilePath)) { xslFilePath = Path.Combine(rootFolderPath, xslFilePath); } XMLTransformer t = XMLTransformer.CreateFromFileWithCache(xslFilePath, log, EnableXSLTExtension); if (t == null) { return(false); } string targetString = null; string sourceString = sourceMsg.ToXMLString(); if (!t.TransformString(sourceString, ref targetString, XSLTExtensionTypes.None) || string.IsNullOrEmpty(targetString)) { return(false); } targetMsg = XObjectManager.CreateObject <Message>(targetString); return(targetMsg != null); }