예제 #1
0
            public void GenerateOutput(
#if VISUALSTUDIO_10_0
                ProjectItemElement itemElement,
#else
                BuildItem buildItem,
#endif
                Stream outputStream,
                IDictionary <string, Stream> inputFormatStreams,
                string defaultNamespace,
                IORMGeneratorItemProperties itemProperties)
            {
                this.EnsureTransform();
                Stream inputStream = inputFormatStreams[this._sourceInputFormat];

                XsltArgumentList argumentList = new XsltArgumentList();

                argumentList.AddParam("DefaultNamespace", string.Empty, defaultNamespace);
                argumentList.AddExtensionObject("urn:ORMCustomTool:ItemProperties", itemProperties);

                string[] referenceFormats = this._referenceInputFormats;
                if (referenceFormats != null)
                {
                    for (int i = 0; i < referenceFormats.Length; i++)
                    {
                        string referenceFormat = referenceFormats[i];
                        Stream referenceStream = inputFormatStreams[referenceFormat];
                        using (XmlReader referenceReader = XmlReader.Create(referenceStream))
                        {
                            argumentList.AddParam(referenceFormat, string.Empty, new XPathDocument(referenceReader).CreateNavigator().Select(DocumentElementXPathExpression));
                        }
                        referenceStream.Seek(0, SeekOrigin.Begin);
                    }
                }

                XmlReader inputReader  = null;
                XmlWriter outputWriter = null;

                try
                {
                    inputReader  = XmlReader.Create(inputStream, XmlReaderSettings);
                    outputWriter = XmlWriter.Create(outputStream, this._xmlWriterSettings);
                    this._transform.Transform(inputReader, argumentList, outputWriter);
                }
                finally
                {
                    if (inputReader != null)
                    {
                        inputReader.Close();
                    }
                    if (outputWriter != null)
                    {
                        outputWriter.Close();
                    }
                    inputStream.Seek(0, SeekOrigin.Begin);
                }
            }
예제 #2
0
        public void HtmlGeneratedReport()
        {
            var htmlGenerator = new HtmlReportGenerator(@"..\..\Xslts\BooksHtmlReport.xslt");
            var args          = new XsltArgumentList();

            args.AddExtensionObject("http://library.by/ext", new XsltExtensions());
            var result = htmlGenerator.CreateReport(@"..\..\Sources\books.xml", args, @"..\..\Generated\books.html");

            Assert.IsTrue(result);
        }
예제 #3
0
        /// <summary>
        /// 根据内容类样式展现HTML
        /// </summary>
        /// <returns></returns>
        public static StringWriter ShowContentLabel(params string[] strString)
        {
            StringWriter output = new StringWriter();

            try
            {
                string           LableName = "";
                XsltArgumentList argsList  = new XsltArgumentList();
                argsList.AddExtensionObject("WP:BaseClass", new BaseClass());
                LableName = strString[0].Split('=')[1];
                string XMLPath        = BaseClass.GetContentLabel() + LableName + ".config";
                string LableSqlString = XMLExplainer.GetXMLValue("root", "LabelSqlString", XMLPath);
                string XsltString     = XMLExplainer.GetXMLValue("root", "LabelTemplate", XMLPath);
                for (int i = 1; i < strString.Length; i++)
                {
                    string   strObject  = strString[i];
                    string[] strObjects = strObject.Split('=');
                    LableSqlString = LableSqlString.Replace("@" + strObjects[0], strObjects[1]);
                    argsList.AddParam(strObjects[0], "", strObjects[1]);
                }
                DataTable DT = XMLExplainer.GetXMLValues("attributes", XMLPath);
                for (int i = 0; i < DT.Rows.Count; i++)
                {
                    LableSqlString = LableSqlString.Replace("@" + DT.Rows[i]["name"].ToString(), DT.Rows[i]["default"].ToString());
                    string tempstring = (string)argsList.GetParam(DT.Rows[i]["name"].ToString(), "");
                    if ("".Equals(tempstring) || tempstring == null)
                    {
                        argsList.AddParam(DT.Rows[i]["name"].ToString(), "", DT.Rows[i]["default"].ToString());
                    }
                }
                XDocument source  = new XDocument();
                XDocument newTree = new XDocument();
                using (XmlWriter writer = newTree.CreateWriter())
                {
                    XslCompiledTransform xslt = new XslCompiledTransform();
                    xslt.Load(XmlReader.Create(new StringReader(XsltString)));
                    DataTable DTT = PersistenceLayer.Query.ProcessSql(LableSqlString, Names.DBName);
                    DataSet   DS  = new DataSet();
                    DS.Tables.Add(DTT);
                    string XmlStr = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>";
                    XmlStr = XmlStr + DS.GetXml().ToString();
                    XmlDocument XmlDoc = new XmlDocument();
                    XmlDoc.LoadXml(XmlStr);
                    XPathNavigator navgator = XmlDoc.CreateNavigator();
                    xslt.Transform(navgator, argsList, output);
                    return(output);
                }
            }
            catch (Exception ex)
            {
                output.Write(ex.Message.ToString());
                return(output);
            }
        }
예제 #4
0
        public void XslExtensionObjects()
        {
            var xsl  = new XslCompiledTransform();
            var args = new XsltArgumentList();

            args.AddExtensionObject("http://epam.com/xsl/ext", new Counters());

            xsl.Load("02_ExtensionObjects.xslt");

            xsl.Transform("CDCatalog1.xml", args, Console.Out);
        }
예제 #5
0
        private void DocumentFunction(XmlElement functionElement, NAntXsltUtilities utilities)
        {
            if (functionElement == null)
            {
                throw new ArgumentNullException("functionElement");
            }

            string methodID = functionElement.GetAttribute("id");
            string filename = utilities.GetFileNameForFunction(functionElement, false);

            XsltArgumentList arguments = CreateXsltArgumentList();

            arguments.AddParam("method-id", string.Empty, methodID);
            arguments.AddParam("refType", string.Empty, "Function");
            arguments.AddParam("functionName", string.Empty, functionElement.GetAttribute("name"));

            // add extension object to Xslt arguments
            arguments.AddExtensionObject("urn:NAntUtil", utilities);

            // document parameter types
            foreach (XmlAttribute paramTypeAttribute in functionElement.SelectNodes("parameter/@type"))
            {
                string  paramType = "T:" + paramTypeAttribute.Value;
                XmlNode typeNode  = utilities.GetTypeNodeByID(paramType);
                if (typeNode != null)
                {
                    ElementDocType paramDocType = utilities.GetElementDocType(typeNode);
                    if (paramDocType != ElementDocType.None)
                    {
                        DocumentType(typeNode, paramDocType, utilities);
                    }
                }
            }

            // document return type
            XmlAttribute returnTypeAttribute = functionElement.Attributes["returnType"];

            if (returnTypeAttribute != null)
            {
                string  returnType     = "T:" + returnTypeAttribute.Value;
                XmlNode returnTypeNode = utilities.GetTypeNodeByID(returnType);
                if (returnTypeNode != null)
                {
                    ElementDocType returnDocType = utilities.GetElementDocType(returnTypeNode);
                    if (returnDocType != ElementDocType.None)
                    {
                        DocumentType(returnTypeNode, returnDocType, utilities);
                    }
                }
            }

            // create the page
            TransformAndWriteResult(_xsltFunctionDoc, arguments, filename);
        }
예제 #6
0
        public static XDocument Transform(XNode document, XElement xsltDocument)
        {
            var args = new XsltArgumentList();
            var extensionFunctions = new XsltFunctions();

            args.AddExtensionObject("xalan://diadem.dirigent.plugin.helpers.XsltFunctions", extensionFunctions);
            var transformedDocument = Transform(document, args, xsltDocument);
            var debugMessage        = new XElement("DebugMessage", extensionFunctions.DebugMessage.ToString());

            return(transformedDocument);
        }
        public void Transform(string inputPath, string outputPath)
        {
            var args = new XsltArgumentList();

            args.AddExtensionObject(_rssDateTransformer, new RssDateTransformer());

            var xsl = new XslCompiledTransform();

            xsl.Load(_stylesheet);
            xsl.Transform(inputPath, args, new FileStream(outputPath, FileMode.Create));
        }
      /// <summary>
      /// A generic XSL Transformation [v1.0] Class for use in ASP.NET pages
      /// </summary>

      public static string TransformXml(string xmlPath, string xsltPath, Hashtable xsltParams, Hashtable xsltObjects, string output)
      {

      StringBuilder sb = new StringBuilder();
      StringWriter sw = new StringWriter(sb);

          try
          {
                XPathDocument doc = new XPathDocument(xmlPath);
                XsltArgumentList args = new XsltArgumentList();

                // Create the XsltSettings object with script enabled.
                XsltSettings settings = new XsltSettings(false, true);
                settings.EnableDocumentFunction = true;

                XslCompiledTransform xslDoc = new XslCompiledTransform();
                xslDoc.Load(xsltPath, settings, new XmlUrlResolver());

                //Fill XsltArgumentList if necessary - taken from key/value pairs in the hashtable
                if (xsltParams != null) {
                  IDictionaryEnumerator pEnumerator = xsltParams.GetEnumerator();
                  while (pEnumerator.MoveNext()) {
                      args.AddParam(pEnumerator.Key.ToString(),"", pEnumerator.Value);
                  }
                }

                //Fill XSL objects - not used this so pass through null
                if (xsltObjects != null) {
                  IDictionaryEnumerator pEnumerator = xsltObjects.GetEnumerator();
                  while (pEnumerator.MoveNext()) {
                      args.AddExtensionObject(pEnumerator.Key.ToString(), pEnumerator.Value);
                  }
                }

               xslDoc.Transform(doc,args,sw);

                if (output == "file")
                {
                   TextWriter w = new StreamWriter(@"c:\output.html");
                    w.Write(sb.ToString());
                    w.Close();
                }

                return sb.ToString();
          } 
          catch (Exception exp)
          {
            return exp.ToString();
          } 
          finally
          {
            sw.Close();
          }
    }
예제 #9
0
        public static string Transform(string strXml, string skinfile, bool enableScript)
        {
            string re = "";

            if (Request.Int("debug") == 1)
            {
                XmlDocument xml = new XmlDocument();
                xml.LoadXml(strXml);
                re = xml.DocumentElement.OuterXml;
            }
            else
            {
                XslCompiledTransform xslt = new XslCompiledTransform();
                if (enableScript)
                {
                    XsltSettings xsltsetting = new XsltSettings();
                    xsltsetting.EnableScript = true;
                    xslt.Load(skinfile, xsltsetting, new XmlUrlResolver());
                }
                else
                {
                    xslt.Load(skinfile);
                }

                StringBuilder     sb        = new StringBuilder();
                XmlWriterSettings mysetting = new XmlWriterSettings();
                mysetting.Indent           = true;
                mysetting.IndentChars      = "	";
                mysetting.ConformanceLevel = ConformanceLevel.Auto;
                XmlWriter        writer   = XmlWriter.Create(sb, mysetting);
                XsltArgumentList argsList = new XsltArgumentList();

                Tools tools = new Tools();
                argsList.AddExtensionObject("urn:Tools", tools);
                XmlDocument xml = new XmlDocument();
                xml.LoadXml(strXml);
                xslt.Transform(xml, argsList, writer);
                re = sb.ToString();

                //特殊字符处理(Start)
                if (re.StartsWith("<?xml version=\"1.0\" encoding=\"utf-16\"?>"))
                {
                    re = re.Substring(39);
                }
                re = re.Replace(" xmlns:Tools=\"urn:Tools\">", ">");
                re = re.Replace(" xmlns:Tools=\"urn:Tools\" />", " />");
                if (re.StartsWith("<html xmlns=\"http://www.w3.org/1999/xhtml\">"))
                {
                    re = "<!doctype html public \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n" + re;
                }
                //特殊字符处理(End)
            }
            return(re);
        }
        private static void ApplyXsltExtensionObjectOverridesToXsltArguments(XsltArgumentList transformArgs, IEnumerable <XsltExtensionObjectDescriptor> xsltExtensionObjectOverrides, TransformBase map)
        {
            var xsltArgumentListContent = XElement.Parse(map.XsltArgumentListContent);

            foreach (var item in xsltExtensionObjectOverrides)
            {
                var name = FindNamespaceForXsltExtensionObjectType(xsltArgumentListContent, item.ClassType);
                transformArgs.RemoveExtensionObject(name);
                transformArgs.AddExtensionObject(name, item.Instance);
            }
        }
예제 #11
0
        private XsltArgumentList CreateXsltArguments(string filename)
        {
            XsltArgumentList xsltArguments = null;
            XsltExtension    xsltExtension = new XsltExtension(_catalogosPath);

            xsltArguments = new XsltArgumentList();
            xsltArguments.AddExtensionObject("urn:actl-xslt", xsltExtension);
            xsltArguments.AddParam("nombreArchivoEnviado", "", filename);

            return(xsltArguments);
        }
        static void Main(string[] args)
        {
            XslCompiledTransform proc = new XslCompiledTransform();

            proc.Load("../../XSLTFile1.xslt");

            XsltArgumentList xsltArgs = new XsltArgumentList();

            xsltArgs.AddExtensionObject("http://example.com/mf", new Test1());

            proc.Transform("../../XMLFile1.xml", xsltArgs, Console.Out);
        }
예제 #13
0
        public static void Transform(string xsltFile, string xmlFile)
        {
            var transform = new XslCompiledTransform();
            var args      = new XsltArgumentList();

            args.AddExtensionObject("http://epam.com/xslt/ext", new XsltTransformHelper());
            transform.Load(xsltFile);
            using (var writer = XmlWriter.Create("result.html"))
            {
                transform.Transform(xmlFile, args, writer);
            }
        }
예제 #14
0
        /// <summary>
        /// Transform argument through XSL
        /// </summary>
        /// <param name="filename">Source AXL file name</param>
        /// <param name="stylesheet">XSLT Stylesheet file</param>
        /// <param name="outfilename">Output File Name</param>
        /// <param name="arg">Current argument</param>
        /// <returns></returns>
        public bool doTransform(string filename, string stylesheet, string outfilename, Argument arg)
        {
            StringBuilder sb;
            XPathDocument xpathdocument;

            // Get output path
            outfilepath = System.IO.Path.GetDirectoryName(outfilename);
            if (outfilepath.IndexOf('\\') >= 0)
            {
                outfilepath += '\\';
            }

            // Send text to outfilename, a text file
            StreamWriter sw = new StreamWriter(outfilename);
            //
            //XslTransform xslt = new XslTransform();
            XslCompiledTransform xslt = new XslCompiledTransform();

            if (filename == null | filename.Equals(""))             // empty string means read from current XML
            {
                // load current argument into the string
                sb            = arg.writeArgumentXMLstring(arg.findHead(), true);
                xpathdocument = new XPathDocument(new XmlTextReader(new StringReader(sb.ToString())));
            }
            else
            {
                xpathdocument = new XPathDocument(filename);
            }

            XmlTextReader xtr = new XmlTextReader(stylesheet);

            xslt.Load(xtr, null, null);

            XmlTextWriter writer = new XmlTextWriter(sw);

            writer.Formatting = Formatting.Indented;

            // Create an XsltArgumentList.
            XsltArgumentList xslArg = new XsltArgumentList();

            // Add an object to create image TODO Possible error - Current argument can only have a transformed image
            ImageXSLextension obj = new ImageXSLextension(arg, this.outfilepath);

            xslArg.AddExtensionObject("urn:image", obj);


            xslt.Transform(xpathdocument, xslArg, writer);
            // xslt.Transform(xpathdocument, writer);

            xtr.Close();
            sw.Close();
            return(true);
        }
예제 #15
0
        public string Htmlize(XmlReader ecma_xml, Dictionary <string, string> extraArgs)
        {
            var args = new XsltArgumentList();

            args.AddExtensionObject("monodoc:///extensions", ExtObject);
            foreach (var kvp in extraArgs)
            {
                args.AddParam(kvp.Key, string.Empty, kvp.Value);
            }

            return(Htmlize(ecma_xml, args));
        }
예제 #16
0
        private XElement EnrichXml(IProcessingContext context, XElement nodes)
        {
            XDocument ret        = new XDocument();
            XmlWriter nodeWriter = ret.CreateWriter();

            XsltArgumentList argList = new XsltArgumentList();

            argList.AddExtensionObject("urn:lostdoc-core", new AssetVersionResolver(context, null));
            this._xslTransform.Transform(nodes.CreateNavigator(), argList, nodeWriter);
            nodeWriter.Close();
            return(ret.Root);
        }
예제 #17
0
        public void Transform(string contentId, string metadataXml, string annotationsXml,
                              string versionId, Content contentDataSet)
        {
            XsltArgumentList arguments   = new XsltArgumentList();
            Link             link        = new Link(contentDataSet, links);
            XmlDocument      metadata    = new XmlDocument();
            XmlDocument      annotations = new XmlDocument();

            string       filename = Path.Combine(withinChmDir, contentId + ".htm");
            StreamReader sr       = new StreamReader(filename);

            int codePage = new CultureInfo(locale).TextInfo.ANSICodePage;

            // We use these fallbacks because &nbsp; is unknown under DBCS like Japanese
            // and translated to ? by default.
            Encoding encoding = Encoding.GetEncoding(codePage,
                                                     new EncoderReplacementFallback(" "),
                                                     new DecoderReplacementFallback(" "));


            string xml = sr.ReadToEnd();

            sr.Close();



            metadata.LoadXml(metadataXml);
            annotations.LoadXml(annotationsXml);

            arguments.AddParam("metadata", "", metadata.CreateNavigator());
            arguments.AddParam("annotations", "", annotations.CreateNavigator());
            arguments.AddParam("version", "", versionId);
            arguments.AddParam("locale", "", locale);
            arguments.AddParam("charset", "", encoding.WebName);

            arguments.AddExtensionObject("urn:Link", link);

            TextReader tr = new StringReader(xml);
            XmlReader  xr = XmlReader.Create(tr);

            using (StreamWriter sw = new StreamWriter(filename, false, encoding))
            {
                try
                {
                    xform.Transform(xr, arguments, sw);
                }
                catch (Exception ex)
                {
                    return;
                }
            }
        }
예제 #18
0
        public MessagesReader(
            MediaBasedReaderParams readerParams,
            XmlFormatInfo fmt,
            IRegexFactory regexFactory,
            ITraceSourceFactory traceSourceFactory
            ) :
            base(readerParams.Media, fmt.BeginFinder, fmt.EndFinder, fmt.ExtensionsInitData, fmt.TextStreamPositioningParams, readerParams.Flags, readerParams.SettingsAccessor)
        {
            this.formatInfo         = fmt;
            this.threads            = readerParams.Threads;
            this.traceSourceFactory = traceSourceFactory;
            this.regexFactory       = regexFactory;
            this.transformArgs      = new XsltArgumentList();

            this.xslExt = new LogJointXSLExtension();
            transformArgs.AddExtensionObject(Properties.LogJointNS, this.xslExt);

            foreach (MessagesReaderExtensions.ExtensionData extInfo in this.Extensions.Items)
            {
                transformArgs.AddExtensionObject(Properties.LogJointNS + extInfo.Name, extInfo.Instance());
            }
        }
예제 #19
0
        public static string Transform(string xmlStylesheetPath, string xmlDocumentPath, IEnumerable <object> arguments)
        {
            var xsltArgumentList = new XsltArgumentList();

            foreach (var argument in arguments.Where(a => a != null))
            {
                var element = (argument is XDocument) ? (argument as XDocument)?.Root : (argument as XElement);
                if (element != null)
                {
                    var navigator = element.CreateNavigator();
                    xsltArgumentList.AddParam(element.Name.LocalName, element.Name.NamespaceName, navigator);
                }
                else if (argument is XPathNavigator)
                {
                    var navigator = argument as XPathNavigator;
                    xsltArgumentList.AddParam(navigator.Name, navigator.NamespaceURI, navigator);
                }
                else if (argument is KeyValuePair <string, object> )
                {
                    var item = (KeyValuePair <string, object>)argument;
                    xsltArgumentList.AddExtensionObject(item.Key, item.Value);
                }
                else
                {
                    xsltArgumentList.AddExtensionObject(argument.GetXmlNamespace(), argument);
                }
            }

            var transform = new XslCompiledTransform(true);

            transform.Load(xmlStylesheetPath);

            using var outStream = new MemoryStream();
            using var writer    = new StreamWriter(outStream);
            transform.Transform(xmlDocumentPath, xsltArgumentList, writer);
            var result = Encoding.UTF8.GetString(outStream.ToArray());

            return(result);
        }
예제 #20
0
 public XmlDocument Transform()
 {
     if (LastTransformer != null)
     {
         XsltArgumentList xal = new XsltArgumentList();
         xal.AddExtensionObject(XsltExtensions.XsltStringExtensions.Namespace, new XsltExtensions.XsltStringExtensions()); //This is to make the "easy" extension functions available...
         StringBuilder xmlSB   = new StringBuilder();
         XmlWriter     xWriter = XmlWriter.Create(xmlSB);
         LastTransformer.Transform(this, xal, xWriter);
         LoadXml(xmlSB.ToString());
     }
     return(this);
 }
예제 #21
0
    static void Main()
    {
        XsltArgumentList args = new XsltArgumentList();

        args.AddExtensionObject("my-namespace", new MyExtensionObject());
        XslTransform xslt = new XslTransform();

        xslt.Load("foo.xslt");
        using (TextWriter output = File.CreateText("out.txt")) {
            XPathDocument input = new XPathDocument("foo.xml");
            xslt.Transform(input, args, output);
        }
    }
예제 #22
0
        public virtual void RenderHtml(TextWriter writer, XPathDocument xmlDoc)
        {
            // Transform XLST validation
            xsltFileFull = Xslt;
            if (!xsltFileFull.Contains(@":\") && Context != null)
            {
                xsltFileFull = Context.Server.MapPath(dirXslt + Xslt);
            }

            Trace.Write("Transform ID=" + this.ID, "xslt=" + xsltFileFull);

            XsltArgumentList     xslArg = new XsltArgumentList();
            XslCompiledTransform trans  = new XslCompiledTransform();

            if (Context != null && Xslt.Length > 0 && File.Exists(xsltFileFull))
            {
#if WEB
                string serverUrl = Context.Request.Url.Scheme + "://" + Context.Request.Url.Authority + "/";
#else
                string serverUrl = Context.Request.Url.Scheme + "://" + Context.Request.Url.Authority + "/";
                // serverUrl = Context.Request.QueryString;
#endif
                XsltIncludeResolver resolver = new XsltIncludeResolver(serverUrl);  // for <xsl:include>
                trans.Load(xsltFileFull, XsltSettings.TrustedXslt, resolver as XmlUrlResolver);
            }
            else
            {
                var reader = XmlReader.Create(System.IO.File.OpenRead(xsltFileFull));
                trans.Load(stylesheet: reader);
            }

            Trace.Write("Transform ID=" + this.ID, "XSLT Parse Test OK");

            // Add an object to convert
            RequestInfo info = null;
            if (Context != null)
            {
                info = new RequestInfo(this, Context.Request);
            }
            else
            {
                info = new RequestInfo(this, null);
            }

            xslArg.AddExtensionObject("urn:request-info", info);

            if (isDebug <= 1)
            {
                trans.Transform(xmlDoc, xslArg, writer);
            }
        }
예제 #23
0
        public static bool SendEmail(SPWeb web, string emailTo, string xslt, IDictionary xslValues)
        {
            XmlDocument          xmlDoc;
            XPathNavigator       xpathNavigator;
            XslCompiledTransform xslEmailTransform = new XslCompiledTransform();
            XsltArgumentList     xslArguments;
            StringBuilder        sbEmail;
            XmlTextWriter        xmlWriter;
            XmlNode        xmlNodeTitle;
            XmlDocument    xmlEmail;
            XsltSettings   settings = new XsltSettings(true, true);
            XmlUrlResolver resolver = new XmlUrlResolver();
            string         subject  = string.Empty;

            try
            {
                xslEmailTransform.Load(new XmlTextReader(xslt, XmlNodeType.Document, null), settings, resolver);

                xmlDoc = new XmlDocument();
                xmlDoc.AppendChild(xmlDoc.CreateElement("DocumentRoot"));
                xpathNavigator = xmlDoc.CreateNavigator();

                xslArguments = new XsltArgumentList();

                if (xslValues != null)
                {
                    foreach (DictionaryEntry xslEntry in xslValues)
                    {
                        xslArguments.AddExtensionObject(xslEntry.Key.ToString(), xslEntry.Value);
                    }
                }

                sbEmail   = new StringBuilder();
                xmlWriter = new XmlTextWriter(new StringWriter(sbEmail));

                xslEmailTransform.Transform(xpathNavigator, xslArguments, xmlWriter);

                xmlEmail = new XmlDocument();
                xmlEmail.LoadXml(sbEmail.ToString());
                xmlNodeTitle = xmlEmail.SelectSingleNode("//title");

                subject = xmlNodeTitle.InnerText;

                return(SendEmail(web, emailTo, subject, sbEmail.ToString()));
            }
            catch (Exception ex)
            {
                Utils.LogError(ex);
                return(false);
            }
        }
예제 #24
0
        public int Generate(string wszInputFilePath, string bstrInputFileContents, string wszDefaultNamespace, IntPtr[] rgbOutputFileContents, out uint pcbOutput, IVsGeneratorProgress pGenerateProgress)
        {
            try
            {
                XmlDocument source = new XmlDocument();
                source.LoadXml(bstrInputFileContents);

                string xsltFileName = source.DocumentElement.GetAttribute("generator");
                if (xsltFileName == null || xsltFileName == "")
                {
                    xsltFileName = "ModelGenerator.xslt";
                }
                string xsltFile =
                    wszInputFilePath.Split(new string[] { "Schema" }, StringSplitOptions.None)[0]
                    + @"Schema\XsltGenerator\" + xsltFileName;
                if (!File.Exists(xsltFile))
                {
                    throw new ApplicationException("Xslt file not exists: " + xsltFile);
                }


                XslCompiledTransform transformator = new XslCompiledTransform();
                transformator.Load(xsltFile);

                string rootPath = Path.GetFullPath(wszInputFilePath);
                rootPath = rootPath.Substring(0, rootPath.LastIndexOf('\\') + 1);
                XsltUtil         util = new XsltUtil(rootPath, "ConnectionString");
                XsltArgumentList args = new XsltArgumentList();
                args.AddParam("param_namespace", "", wszDefaultNamespace);
                args.AddExtensionObject("urn:util", util);
                using (MemoryStream stream = new MemoryStream())
                {
                    transformator.Transform(source, args, stream);
                    stream.Position = 0;
                    byte[] content = stream.ToArray();
                    pcbOutput = (uint)content.Length;
                    rgbOutputFileContents[0] = Marshal.AllocCoTaskMem((int)content.Length);
                    Marshal.Copy(content, 0, rgbOutputFileContents[0], (int)content.Length);
                }
            }
            catch (Exception ex)
            {
                byte[] content = Encoding.UTF8.GetBytes(ex.ToString());
                pcbOutput = (uint)content.Length;
                rgbOutputFileContents[0] = Marshal.AllocCoTaskMem((int)content.Length);
                Marshal.Copy(content, 0, rgbOutputFileContents[0], (int)content.Length);
            }

            return(VSConstants.S_OK);
        }
예제 #25
0
        public static XsltArgumentList GetXsltArgumentList(XSLTExtensionType t, string sourceXml)
        {
            switch ((int)t)
            {
            default:
            case 0:
                return(null);

            case 1:
                XsltArgumentList list = new XsltArgumentList();
                list.AddExtensionObject("urn:xdsgw:XmlNodeTransformer", new XmlNodeTransformer(sourceXml));
                return(list);
            }
        }
        private string ImportShipment()
        {
            if (Request.Files.Count > 0)
            {
                HttpPostedFile PostedFile = Request.Files[0];
                if (!PostedFile.FileName.EndsWith("csv", StringComparison.InvariantCultureIgnoreCase) && !PostedFile.FileName.EndsWith("xml", StringComparison.InvariantCultureIgnoreCase) && PostedFile.FileName.Trim() != "")
                {
                    errors = String.Format(AppLogic.GetString("admin.OrderShipment2.InvalidFileType", SkinID, LocaleSetting), CommonLogic.IIF(PostedFile.ContentLength == 0, AppLogic.GetString("admin.common.FileContentsWereEmpty", SkinID, LocaleSetting), AppLogic.GetString("admin.common.CommaDelimitedFilesPrompt", SkinID, LocaleSetting)));
                }
                else
                {
                    string xml          = String.Empty;
                    string filename     = "Import_ASPDNSF";
                    string FullFilePath = CommonLogic.SafeMapPath("../images") + "\\" + filename + PostedFile.FileName.ToLowerInvariant().Substring(PostedFile.FileName.ToLowerInvariant().LastIndexOf('.'));

                    PostedFile.SaveAs(FullFilePath);
                    StreamReader sr          = new StreamReader(FullFilePath);
                    string       filecontent = sr.ReadToEnd();
                    sr.Close();

                    if (PostedFile.FileName.EndsWith("csv", StringComparison.InvariantCultureIgnoreCase))
                    {
                        xml = ImportXmlData(filecontent);
                    }
                    else if (PostedFile.FileName.EndsWith("xls", StringComparison.InvariantCultureIgnoreCase))
                    {
                        xml = Import.ConvertPricingFileToXml(FullFilePath);
                        XslCompiledTransform xForm = new XslCompiledTransform();
                        xForm.Load(CommonLogic.SafeMapPath("XmlPackages/ExcelPricingImport.xslt"));
                        Localization     ExtObj = new Localization();
                        XsltArgumentList m_TransformArgumentList = new XsltArgumentList();
                        m_TransformArgumentList.AddExtensionObject("urn:aspdnsf", ExtObj);
                        XmlDocument xdoc = new XmlDocument();
                        xdoc.LoadXml(xml);
                        StringWriter xsw = new StringWriter();
                        xForm.Transform(xdoc, m_TransformArgumentList, xsw);
                        xml = xsw.ToString();
                    }
                    else
                    {
                        xml = filecontent;
                    }
                    File.Delete(FullFilePath);
                    errors = ImportProductList(xml);
                    return(getImportedOrderNumbers(xml));
                }
            }
            return("");
        }
예제 #27
0
        private XElement EnrichXml(IProcessingContext context, Assembly hintAssembly, XElement nodes)
        {
            XDocument ret = new XDocument();

            using (XmlWriter nodeWriter = ret.CreateWriter())
            {
                XsltArgumentList argList = new XsltArgumentList();
                argList.AddExtensionObject(Namespaces.TemplateExtensions, new AssetVersionResolver(context, hintAssembly));

                this._xslTransform.Transform(nodes.CreateNavigator(), argList, nodeWriter);
                nodeWriter.Close();
            }

            return(ret.Root);
        }
예제 #28
0
        protected void TransformButton_Click(object sender, EventArgs e)
        {
            XsltArgumentList     args = new XsltArgumentList();
            XslCompiledTransform xsl  = new XslCompiledTransform();

            args.AddExtensionObject(ExtensionDemo.Namespace, new ExtensionDemo());

            xsl.Load(Server.MapPath("Xml/flights-html.xsl"));

            Response.Clear();
            Response.ContentType = "text/xml";

            xsl.Transform(Server.MapPath("Xml/Flights.xml"), args, Response.OutputStream);

            Response.End();
        }
예제 #29
0
 public static void Transform(string sXmlPath, string sXslPath)
 {
     try {
         XPathDocument        myXPathDoc = new XPathDocument(sXmlPath);
         XslCompiledTransform myXslTrans = new XslCompiledTransform();
         myXslTrans.Load(sXslPath);
         XsltArgumentList xslArgs  = new XsltArgumentList();
         Utils            classPtr = new Utils();
         xslArgs.AddExtensionObject("urn:util", classPtr);
         XmlTextWriter myWriter = new XmlTextWriter("result.xml", null);
         myXslTrans.Transform(myXPathDoc, xslArgs, myWriter);
         myWriter.Close();
     } catch (Exception e) {
         Console.WriteLine("Exception: {0}", e.ToString());
     }
 }
예제 #30
0
        public virtual void AddRequestInfo(XsltArgumentList xslArg)
        {
            // Add an object to convert
            RequestInfo info = null;

            if (Context != null)
            {
                info = new RequestInfo(this, Context.Request);
            }
            else
            {
                info = new RequestInfo(this, null);
            }

            xslArg.AddExtensionObject("urn:request-info", info);
        }
예제 #31
0
    public static void Transform(string sXmlPath, string sXslPath)
    {
        try {
        XPathDocument myXPathDoc = new XPathDocument(sXmlPath);
        XslCompiledTransform myXslTrans = new XslCompiledTransform();
        myXslTrans.Load(sXslPath);
        XsltArgumentList xslArgs = new XsltArgumentList();
        Utils classPtr = new Utils();
        xslArgs.AddExtensionObject("urn:util", classPtr);
        XmlTextWriter myWriter = new XmlTextWriter("result.xml", null);
        myXslTrans.Transform(myXPathDoc, xslArgs, myWriter);
        myWriter.Close();
        } catch (Exception e) {

        Console.WriteLine("Exception: {0}", e.ToString());
        }
    }
예제 #32
0
 public void TransformXml(string[] parts)
 {
     XsltSettings XSLSettings = new XsltSettings();
     XSLSettings.EnableDocumentFunction = true;
     XmlUrlResolver resolver = new XmlUrlResolver();
     XslCompiledTransform xsl = new XslCompiledTransform();
     xsl.Load(root + "/templates/global.xsl", XSLSettings, resolver);
     timmie.timmie timmie = new timmie.timmie();
     XsltArgumentList args = new XsltArgumentList();
     args.AddExtensionObject(timmie.nameSpaceURI, timmie);
     xsl.Transform(CreateContext(parts), args, HttpContext.Current.Response.Output);
 }
예제 #33
0
    private XElement UpdateTreeView(XElement functionMarkupContainer)
    {
        // TODO: Do some compiled xslt caching

        XElement treeInput = CopyWithId(functionMarkupContainer);

        treeInput.Add(GetFunctionDescriptionElements(functionMarkupContainer));

        if (_state.AllowSelectingInputParameters)
        {
            CollapseGetInputParamaterFunctionCalls(treeInput, InputParameterNodeIDs);
        }

        // treeInput.Save(Request.MapPath("out.tmp.xml"));

        string xslFilePath = Request.MapPath("functioneditortree.xslt");
        XslCompiledTransform transform = GetTransformation(xslFilePath);

        var xsltTransformArguments = new XsltArgumentList();
        xsltTransformArguments.AddExtensionObject(XsltExtensionObjectNamespace, new TreeRenderingXsltExtensionObject(TreePathToIdMapping));
        xsltTransformArguments.AddParam("SelectedId", string.Empty, SelectedNode.IsNullOrEmpty() ? string.Empty : TreePathToIdMapping[SelectedNode]);

        XDocument transformedDoc = new XDocument();

        using (XmlWriter writer = transformedDoc.CreateWriter())
        {
            transform.Transform(treeInput.CreateReader(), xsltTransformArguments, writer);
        }

        WriteTo(transformedDoc, this.TreePlaceholder);

        return treeInput;
    }
예제 #34
0
    public static void Main(string[] args)
    {
        Opts opts = new Opts();
        opts.ProcessArgs(args);
        if (opts.RemainingArguments.Length != 2 && opts.RemainingArguments.Length != 3) {
            opts.DoHelp();
            return;
        }

        string datasource, rootentity, stylesheetfile;
        if (opts.RemainingArguments.Length == 2) {
            datasource = opts.RemainingArguments[0];
            rootentity = null;
            stylesheetfile = opts.RemainingArguments[1];
        } else {
            datasource = opts.RemainingArguments[0];
            rootentity = opts.RemainingArguments[1];
            stylesheetfile = opts.RemainingArguments[2];
        }

        XsltArgumentList xsltargs = new XsltArgumentList();

        if (opts.param != null)
        foreach (string p in opts.param) {
            int eq = p.IndexOf('=');
            if (eq == -1) {
                Console.Error.WriteLine("Param arguments must be name=value.");
                return;
            }
            string n = p.Substring(0, eq);
            string v = p.Substring(eq+1);
            xsltargs.AddParam(n, "", v);
        }

        XmlDocument sty = new XmlDocument();
        sty.PreserveWhitespace = true;
        sty.Load(stylesheetfile);

        XslTransform t = new XslTransform();
        t.Load(sty, null, null);

        NamespaceManager nsmgr = new NamespaceManager();

        // Scan xmlsn: attributes in the stylesheet node.
        // For all namespaces of the form assembly://assemblyname/TypeName, load in
        // the methods of that type as extension functions in that namespace.
        // And add xmlns declarations to nsmgr.
        foreach (XmlAttribute a in sty.DocumentElement.Attributes) {
            if (!a.Name.StartsWith("xmlns:")) continue;

            nsmgr.AddNamespace(a.Value, a.Name.Substring(6));

            System.Uri uri = new System.Uri(a.Value);
            if (uri.Scheme != "assembly") continue;
            System.Reflection.Assembly assembly = System.Reflection.Assembly.Load(uri.Host);
            System.Type ty = assembly.GetType(uri.AbsolutePath.Substring(1));
            if (ty == null) {
                Console.Error.WriteLine("Type not found: " + uri);
                return;
            }
            object obj = ty.GetConstructor(new Type[0]).Invoke(new Type[0]);
            xsltargs.AddExtensionObject(a.Value, obj);
        }

        StatementSource source = Store.CreateForInput(datasource);
        Store model;
        if (source is Store) model = (Store)source;
        else model = new MemoryStore(source);

        XPathNavigator nav;
        if (rootentity != null)
            nav = new XPathSemWebNavigator(rootentity, model, nsmgr);
        else
            nav = new XPathSemWebNavigator(model, nsmgr);

        t.Transform(nav, xsltargs, Console.Out, null);
    }