Exemple #1
0
        public IPackageInstallResult Do(IPackage package, IFilePathResolver target){
            foreach (var file in TargetFile.split()){
                if (target.Exists(file)){
                    var oldcontent = target.Read(file).asXPathNavigable();
                    var writer = new StringWriter();
                    // var args = XsltStandardExtension.PrepareArgs();
                    Transformation.Transform(oldcontent, new XsltArgumentList(), writer);
                    writer.Flush();
                    target.Write(file, writer.ToString());
                }
            }

            return new DefaultPackageInstallResult{State = ResultState.OK};
        }
        public override IPackageInstallResult Do(IPackage package, IFilePathResolver target){
            var wasError = false;
            var result = new DefaultPackageInstallResult{Message = "applying auto xslt"};
            var allfiles = package.PathResolver.ResolveAll("", "*.*");
            var xsltTaskFiles = allfiles.Where(s => s.EndsWith(".taskinfo.xslt"));
            xsltTaskFiles.Select(
                s =>{
                    if (wasError){
                        return s;
                    }

                    var targetFileName = s.Substring(0, s.Length - ".taskinfo.xslt".Length);

                    if (GetProceed(target, targetFileName, result)){
                        var xsltSource = package.PathResolver.ReadBinary(s);
                        var targetSource = target.Read(targetFileName);
                        var sw = new StringWriter();
                        var xws = new XmlWriterSettings();
                        xws.Indent = true;
                        xws.NewLineHandling = NewLineHandling.Entitize;
                        xws.OmitXmlDeclaration = true;
                        xws.Encoding = Encoding.UTF8;
                        var xw = XmlWriter.Create(sw, xws);
                        var xsltTransform = new XslCompiledTransform();
                        var sets = new XsltSettings(true, true);

                        var doc = XmlReader.Create(new StringReader(targetSource));
                        var xslt = XmlReader.Create(new MemoryStream(xsltSource));
                        var xmlResolver = new FilePathXmlResolver(package.PathResolver);
                        xsltTransform.Load(xslt, sets, xmlResolver);
                        var args = new XsltArgumentList();
                        if (ArgPreparator != null){
                            ArgPreparator(args);
                        }
                        xsltTransform.Transform(doc, args, xw, xmlResolver);
                        target.Write(targetFileName, sw.ToString());
                    }
                    result.SubMessages.Add("PROCESSED: " + targetFileName);
                    Console.WriteLine("PROCESSED: " + targetFileName);
                    return s;
                }
                ).ToList();
            return result;
        }