Ejemplo n.º 1
0
 private void AddInputParameters(SingleFileTransformer transformer, ITaskItem source, string inputType)
 {
     foreach (string paramName in source.MetadataNames)
     {
         var paramValue = source.GetMetadata(paramName);
         Log.LogMessage(MessageImportance.Low, "Adding {0} parameter '{1}' with value: '{2}'", inputType,
                        paramName, paramValue);
         transformer.AddParameter(paramName, paramValue);
     }
 }
Ejemplo n.º 2
0
        /// <summary>
        ///     When overridden in a derived class, executes the task.
        /// </summary>
        /// <returns>
        ///     <see langword="true" /> if the task successfully executed;
        ///     otherwise, false.
        /// </returns>
        public override bool Execute()
        {
            if (!File.Exists(Input.ItemSpec))
            {
                Log.LogError("Source file '{0}' was not found.", Input.ItemSpec);
                return(false);
            }
            if (!File.Exists(Xslt.ItemSpec))
            {
                Log.LogError("XSLT file '{0}' was not found.", Xslt.ItemSpec);
            }
            if (File.Exists(Output))
            {
                Log.LogMessage("Output file '{0}' exists and will be overwritten", Output);
            }

            using (var inputXml = File.OpenRead(Input.ItemSpec))
                using (var xslt = File.OpenRead(Xslt.ItemSpec))
                    using (var output = File.Open(Output, FileMode.Create, FileAccess.ReadWrite, FileShare.Read))
                    {
                        var transformer = new SingleFileTransformer();
                        try
                        {
                            Log.LogMessage(MessageImportance.Low, "Processing XSLT...");
                            transformer.LoadXslt(xslt);

                            AddParameters(transformer);

                            Log.LogMessage(MessageImportance.Low, "Running transformation...");
                            transformer.Transform(inputXml, output);
                            Log.LogMessage(MessageImportance.Normal, "Transformation result saved to '{0}'", Output);
                        }
                        catch (Exception ex)
                        {
                            Log.LogErrorFromException(ex);
                            // Log Xslt compilation errors if available.
                            XsltException xe = ex as XsltException;
                            if (xe != null)
                            {
                                var xsltName = Path.GetFileName(Xslt.ItemSpec);
                                foreach (var xsltError in xe.XsltErrors)
                                {
                                    Log.LogError($"{xsltName}({xsltError.LineNumber},{xsltError.ColumnNumber}): {xsltError.Message}");
                                }
                            }
                            return(false);
                        }
                    }

            return(true);
        }
Ejemplo n.º 3
0
 private void AddParameters(SingleFileTransformer transformer)
 {
     AddInputParameters(transformer, Xslt, "XSLT");
     AddInputParameters(transformer, Input, "XML");
 }