public void Transform()
        {
            var nameTable = new NameTable();

            var xmlReaderSettings = new XmlReaderSettings {
                NameTable = nameTable
            };

            XdmDocument document;

            using (var reader = XmlReader.Create(_rootPath + "\\XmlPrimeXsltTransformer\\data.xml", xmlReaderSettings))
            {
                document = new XdmDocument(reader);
            }

            var xsltSettings = new XsltSettings(nameTable)
            {
                ContextItemType = XdmType.Node
            };

            var xslt = Xslt.Compile(_rootPath + "\\XmlPrimeXsltTransformer\\template.xsl", xsltSettings);

            var contextItem = document.CreateNavigator();
            var settings    = new DynamicContextSettings {
                ContextItem = contextItem
            };

            using (var outputStream = File.Create(outputPath))

                xslt.ApplyTemplates(settings, outputStream);
        }
Exemplo n.º 2
0
        public string Move(int wikiId, int target)
        {
            var currentMemberId = Members.GetCurrentMember().Id;

            if (Xslt.IsMemberInGroup("admin", currentMemberId) || Xslt.IsMemberInGroup("wiki editor", currentMemberId))
            {
                Document document       = new Document(wikiId);
                Document documentTarget = new Document(target);

                if (documentTarget.ContentType.Alias == "WikiPage")
                {
                    Document o = new Document(document.Parent.Id);

                    document.Move(documentTarget.Id);
                    document.Save();

                    document.Publish(new umbraco.BusinessLogic.User(0));
                    documentTarget.Publish(new umbraco.BusinessLogic.User(0));
                    o.Publish(new umbraco.BusinessLogic.User(0));

                    umbraco.library.UpdateDocumentCache(document.Id);
                    umbraco.library.UpdateDocumentCache(documentTarget.Id);
                    umbraco.library.UpdateDocumentCache(o.Id);

                    umbraco.library.RefreshContent();

                    return(umbraco.library.NiceUrl(document.Id));
                }
            }

            return("");
        }
Exemplo n.º 3
0
        /// <summary>
        /// Asserts that the results of an XSL transform on some XML are the expected result
        /// </summary>
        /// <param name="xslTransform">The XSL transform.</param>
        /// <param name="xmlToTransform">The XML to transform.</param>
        /// <param name="expectedResult">The expected result.</param>
        public static void XslTransformResults(XmlInput xslTransform, XmlInput xmlToTransform, XmlInput expectedResult)
        {
            Xslt      xslt   = new Xslt(xslTransform);
            XmlOutput output = xslt.Transform(xmlToTransform);

            XmlEquals(expectedResult, output.AsXml());
        }
Exemplo n.º 4
0
        public string Update(int pageId, string body, string title, string keywords)
        {
            var currentMemberId = Members.GetCurrentMember().Id;
            var isAdmin         = (Xslt.IsInGroup("admin") || Xslt.IsInGroup("wiki editor"));

            if (pageId > 0 && currentMemberId > 0 && body.Trim() != "" && title.Trim() != "")
            {
                var wikiPage = new WikiPage(pageId);

                if (wikiPage.Exists && (isAdmin || wikiPage.Locked == false))
                {
                    wikiPage.Title    = title;
                    wikiPage.Author   = currentMemberId;
                    wikiPage.Body     = body;
                    wikiPage.Keywords = keywords;
                    wikiPage.Save();

                    return(umbraco.library.NiceUrl(wikiPage.NodeId));
                }

                return("not allowed " + isAdmin + " " + wikiPage.Locked + " " + wikiPage.Exists);
            }

            return("");
        }
Exemplo n.º 5
0
 public void CanPerformTransform()
 {
     Xslt xslt = new Xslt(IDENTITY_TRANSFORM);
     string input = "<qwerty>uiop</qwerty>";
     string output = new string(input.ToCharArray());
     Assert.Equal(output, xslt.Transform(input).AsString());
     Assert.Equal(output, xslt.Transform(input).AsString());
 }
        public string MoveTopic(int topicId, int newForumId)
        {
            var topic = Businesslogic.Topic.GetTopic(topicId);

            topic.Move(newForumId);

            return(Xslt.NiceTopicUrl(topic.Id));
        }
Exemplo n.º 7
0
 public override void ResetVariables()
 {
     sourceDocument = null;
     stylesheet     = null;
     resultDocument = null;
     resultFile     = null;
     schemaAware    = false;
 }
Exemplo n.º 8
0
        public string GetContentVersion(int id, string guid = null)
        {
            if (guid == null)
            {
                guid = string.Empty;
            }

            return(Xslt.GetXmlNodeFromVersion(id, guid, false));
        }
Exemplo n.º 9
0
        [Test] public void CanPerformTransform()
        {
            Xslt   xslt   = new Xslt(IDENTITY_TRANSFORM);
            string input  = "<qwerty>uiop</qwerty>";
            string output = new string(input.ToCharArray());

            Assert.AreEqual(output, xslt.Transform(input).AsString());
            Assert.AreEqual(output, xslt.Transform(input).AsString());
        }
Exemplo n.º 10
0
        private Xslt CompileTransform([NotNull] XsltSettings staticSettings)
        {
            Assert.ArgumentNotNull(staticSettings, "staticSettings");

            // TODO: use AnyUri when it fully supports windows paths
            var uri = new Uri(Xsl.GetMetadata("FullPath"));

            staticSettings.BaseURI = new AnyUri(uri);
            return(Xslt.Compile(uri, staticSettings));
        }
Exemplo n.º 11
0
        /// <summary>
        /// This is a temporary solution before the gui xml parse moves to the official NodeQuery.Parse method
        /// </summary>
        public static string GetNodeQueryXml(string guiQuery)
        {
            if (string.IsNullOrEmpty(guiQuery))
            {
                return(guiQuery);
            }

            guiQuery = ReplacePath(guiQuery);

            foreach (var token in Tokens.AllKeys)
            {
                try
                {
                    string repVal = null;

                    switch (token)
                    {
                    case "[Me]": repVal = User.Current.Id.ToString(); break;

                    case "[Site]": repVal = Site.Current.Id.ToString(); break;

                    case "[Workspace]": repVal = PortalContext.Current.ContextWorkspace.Id.ToString(); break;

                    case "[Page]": repVal = Page.Current.Id.ToString(); break;

                    case "[Content]": repVal = PortalContext.Current.ContextNodeHead.Id.ToString(); break;

                    default: repVal = Tokens[token]; break;
                    }

                    guiQuery = guiQuery.Replace(token, repVal).Replace(token.ToLower(), repVal);
                }
                catch (Exception ex)
                {
                    Logger.WriteException(ex);
                }
            }

            var xsltTransform = Xslt.GetXslt("/Root/System/SystemPlugins/Renderers/Common/GuiToNodeQuery.xslt", false);
            var xDoc          = new XmlDocument();

            xDoc.LoadXml(guiQuery);

            using (var sw = new StringWriter())
            {
                using (var writer = new XmlTextWriter(sw))
                {
                    xsltTransform.Transform(xDoc, null, writer);
                    writer.Flush();
                }

                return(sw.ToString());
            }
        }
Exemplo n.º 12
0
        /// <summary>
        /// Close the Results reporting.
        /// </summary>
        /// <returns>System.String - results filename.</returns>
        public System.String CloseResults()
        {
            _resultsReporter.Stop();

            // convert the results file
            System.String resultsFilename = Xslt.Transform(_resultsDirectory, _resultsFilename);

            // create the result overview
            CreateResultOverview(resultsFilename);

            return(resultsFilename);
        }
Exemplo n.º 13
0
        void CommentScoring(object sender, ActionEventArgs e)
        {
            Action a = (Action)sender;

            if (a.Alias == "LikeComment" || a.Alias == "DisLikeComment" || a.Alias == "TopicSolved")
            {
                int score = Xslt.Score(e.ItemId, a.DataBaseTable);

                //we then add the sum of the total score to the
                Data.SqlHelper.ExecuteNonQuery("UPDATE forumComments SET score = @score WHERE id = @id", Data.SqlHelper.CreateParameter("@id", e.ItemId), Data.SqlHelper.CreateParameter("@score", score));
            }
        }
Exemplo n.º 14
0
        public string VerifyFile(int fileId)
        {
            if (Xslt.IsMemberInGroup("admin", Members.GetCurrentMember().Id))
            {
                var wikiFile = new WikiFile(fileId)
                {
                    Verified = true
                };
                wikiFile.Save();
            }

            return("");
        }
Exemplo n.º 15
0
        public string Delete(int wikiId)
        {
            var currentMemberId = Members.GetCurrentMember().Id;

            if (Xslt.IsMemberInGroup("admin", currentMemberId) || Xslt.IsMemberInGroup("wiki editor", currentMemberId))
            {
                var document = new Document(wikiId);

                umbraco.library.UnPublishSingleNode(document.Id);
                document.delete();
            }

            return("");
        }
Exemplo n.º 16
0
        void TopicScoring(object sender, ActionEventArgs e)
        {
            if (!e.Cancel)
            {
                Action a = (Action)sender;

                if (a.Alias == "LikeTopic" || a.Alias == "DisLikeTopic")
                {
                    int topicScore = Xslt.Score(e.ItemId, a.DataBaseTable);

                    //this uses a non-standard coloumn in the forum schema, so this is added manually..
                    Data.SqlHelper.ExecuteNonQuery("UPDATE forumTopics SET score = @score WHERE id = @id", Data.SqlHelper.CreateParameter("@id", e.ItemId), Data.SqlHelper.CreateParameter("@score", topicScore));
                }
            }
        }
Exemplo n.º 17
0
        public void XsltNoInput()
        {
            Xslt task = new Xslt();
            task.BuildEngine = new MockBuild();

            // assert default values
            Assert.IsNull(task.Inputs, @"Wrong default inputs");
            Assert.IsNull(task.RootTag, @"Wrong default root tag");
            Assert.IsNull(task.RootAttributes, @"Wrong default root attributes");
            Assert.IsNull(task.Xsl, @"Wrong default xsl");
            Assert.IsNull(task.Output, @"Wrong default output");

            // executing without input files must fail
            Assert.IsFalse(task.Execute(), @"Task without input files did not fail");
        }
        public void XsltOneInput()
        {
            Xslt task = new Xslt();

            task.BuildEngine = new MockBuild();

            string testDir;
            string assemblyDir = TaskUtility.AssemblyDirectory;

            TaskUtility.logEnvironmentInfo(task.Log);
            if (TaskUtility.CalledInBuildDirectory)
            {
                task.Log.LogMessage("Called in build directory");

                // get the files from where msbuild put them
                testDir = TaskUtility.TestDirectory;
            }
            else
            {
                task.Log.LogMessage("Not called in build directory");

                // get the files from where Visual Studio put them
                testDir = Path.Combine(TaskUtility.AssemblyDirectory, @"Xslt");
            }

            task.Inputs = TaskUtility.StringArrayToItemArray(Path.Combine(testDir, @"XsltTestInput.xml"));
            task.Inputs[0].SetMetadata(@"configuration", "test");
            task.Xsl = new TaskItem(Path.Combine(assemblyDir, @"NUnitReport.xsl"));
            task.Xsl.SetMetadata(@"project", "XsltTest");

            task.RootTag = "mergedroot";
            task.Output  = Path.Combine(testDir, @"XsltTestOutput.html");

            Assert.IsNotNull(task.Inputs, @"No inputs");
            Assert.IsNull(task.RootAttributes, @"Wrong default root attributes");
            Assert.IsNotNull(task.Xsl, @"No xsl");
            Assert.IsNotNull(task.Output, @"No output");

            // executing with one input files
            Assert.IsTrue(task.Execute(), @"Task with one input files failed");
            Assert.IsTrue(File.Exists(task.Output), @"Missing output file");

            string taskOutput = File.ReadAllText(task.Output);

            Assert.IsTrue(taskOutput.Contains(
                              @"<h1>Project ""XsltTest"" - Configuration ""test"" - NUnit Test Report</h1>"),
                          @"Input or Xsl metadata not correctly added.");
        }
Exemplo n.º 19
0
        public void XsltNoInput()
        {
            Xslt task = new Xslt();

            task.BuildEngine = new MockBuild();

            // assert default values
            Assert.IsNull(task.Inputs, @"Wrong default inputs");
            Assert.IsNull(task.RootTag, @"Wrong default root tag");
            Assert.IsNull(task.RootAttributes, @"Wrong default root attributes");
            Assert.IsNull(task.Xsl, @"Wrong default xsl");
            Assert.IsNull(task.Output, @"Wrong default output");

            // executing without input files must fail
            Assert.IsFalse(task.Execute(), @"Task without input files did not fail");
        }
Exemplo n.º 20
0
        private void Explain([NotNull] Xslt transform)
        {
            Assert.ArgumentNotNull(transform, "transform");

            Assert.IsNotNull(Plan, "Plan");

            var settings = new XdmWriterSettings
            {
                Indent = true
            };

            var stream = File.OpenWrite(Plan.GetMetadata("FullPath"));

            using (var xdmWriter = XdmWriter.Create(stream, settings))
                transform.Explain(xdmWriter);
        }
Exemplo n.º 21
0
        void Action_AfterPerform(object sender, ActionEventArgs e)
        {
            Action a = (Action)sender;

            if (a.Alias == "ProjectUp")
            {
                var contentService = ApplicationContext.Current.Services.ContentService;
                var content        = contentService.GetById(e.ItemId);
                if (content.GetValue <bool>("approved") == false &&
                    Xslt.Score(content.Id, "powersProject") >= 15)
                {
                    content.SetValue("approved", true);
                    contentService.SaveAndPublishWithStatus(content);
                }
            }
        }
Exemplo n.º 22
0
        public virtual void RenderHtml(TextWriter writer, XPathDocument xmlDoc)
        {
            // Transform XLST validation
            var virtualDir = System.Web.Hosting.HostingEnvironment.ApplicationPhysicalPath;
            var fileXslt   = Xslt.Replace("/", "\\");
            var path       = (System.IO.Path.GetDirectoryName(this.Context.Request.Path
                                                              .Replace("/", "\\")) + "\\").Replace(@"\\", @"\");

            if (System.IO.File.Exists(virtualDir + path + fileXslt))
            {
                xsltFileFull = virtualDir + path + fileXslt;
            }
            else
            {
                xsltFileFull = virtualDir + fileXslt;
            }

            xsltFileFull = System.IO.Path.GetFullPath(xsltFileFull);

            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))
            {
                string serverUrl = Context.Request.Url.Scheme + "://" + Context.Request.Url.Authority + "/";

                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." + xsltFileFull);

            AddRequestInfo(xslArg);

            if (isDebug <= 1)
            {
                trans.Transform(xmlDoc, xslArg, writer);
            }
        }
Exemplo n.º 23
0
        public void XsltOneInput()
        {
            Xslt task = new Xslt();
            task.BuildEngine = new MockBuild();

            string testDir;
            string assemblyDir = TaskUtility.AssemblyDirectory;
            TaskUtility.logEnvironmentInfo(task.Log);
            if (TaskUtility.CalledInBuildDirectory)
            {
                task.Log.LogMessage("Called in build directory");

                // get the files from where msbuild put them
                testDir = TaskUtility.TestDirectory;
            }
            else
            {
                task.Log.LogMessage("Not called in build directory");

                // get the files from where Visual Studio put them
                testDir = Path.Combine(TaskUtility.AssemblyDirectory, @"Xslt");
            }

            task.Inputs = TaskUtility.StringArrayToItemArray(Path.Combine(testDir, @"XsltTestInput.xml"));
            task.Inputs[0].SetMetadata(@"configuration", "test");
            task.Xsl = new TaskItem(Path.Combine(assemblyDir, @"NUnitReport.xsl"));
            task.Xsl.SetMetadata(@"project", "XsltTest");

            task.RootTag = "mergedroot";
            task.Output = Path.Combine(testDir, @"XsltTestOutput.html");

            Assert.IsNotNull(task.Inputs, @"No inputs");
            Assert.IsNull(task.RootAttributes, @"Wrong default root attributes");
            Assert.IsNotNull(task.Xsl, @"No xsl");
            Assert.IsNotNull(task.Output, @"No output");

            // executing with one input files
            Assert.IsTrue(task.Execute(), @"Task with one input files failed");
            Assert.IsTrue(File.Exists(task.Output), @"Missing output file");

            string taskOutput = File.ReadAllText(task.Output);
            Assert.IsTrue(taskOutput.Contains(
                @"<h1>Project ""XsltTest"" - Configuration ""test"" - NUnit Test Report</h1>"),
                @"Input or Xsl metadata not correctly added.");
        }
Exemplo n.º 24
0
        void CommentScoring(object sender, ActionEventArgs e)
        {
            var action = (Action)sender;

            if (action.Alias != "LikeComment" && action.Alias != "DisLikeComment" && action.Alias != "TopicSolved")
            {
                return;
            }

            var score = Xslt.Score(e.ItemId, action.DataBaseTable);

            //we then add the sum of the total score to the
            using (var sqlHelper = Application.SqlHelper)
            {
                sqlHelper.ExecuteNonQuery("UPDATE forumComments SET score = @score WHERE id = @id",
                                          sqlHelper.CreateParameter("@id", e.ItemId), sqlHelper.CreateParameter("@score", score));
            }
        }
Exemplo n.º 25
0
        public string Create(int parentId, string body, string title, string keywords)
        {
            var currentMemberId = Members.GetCurrentMember().Id;

            if (parentId > 0 && currentMemberId > 0)
            {
                var isAdmin  = (Xslt.IsInGroup("admin") || Xslt.IsInGroup("wiki editor"));
                var doc      = new Document(parentId);
                var isLocked = (doc.getProperty("umbracoNoEdit").Value.ToString() == "1");

                if ((isAdmin || isLocked == false) && doc.ContentType.Alias == "WikiPage")
                {
                    var wikiPage = WikiPage.Create(parentId, currentMemberId, body, title, keywords);
                    return(umbraco.library.NiceUrl(wikiPage.NodeId));
                }
            }

            return("");
        }
        void Document_BeforePublish(Document sender, umbraco.cms.businesslogic.PublishEventArgs e)
        {
            if (sender.ContentType.Alias == "Project")
            {
                //ensure that packages have a guid
                if (sender.getProperty("packageGuid") != null && String.IsNullOrEmpty(sender.getProperty("packageGuid").Value.ToString()))
                {
                    sender.getProperty("packageGuid").Value = Guid.NewGuid().ToString();
                    sender.Save();
                }

                //if the score is above the minimum, set the approved variable
                int score = Xslt.Score(sender.Id, "powersProject");
                if (score >= 15)
                {
                    sender.getProperty("approved").Value = true;
                    sender.Save();
                }

                //this ensures the package stores it's compatible versions on the node itself, so we save a ton of sql calls
                if (sender.getProperty("compatibleVersions") != null)
                {
                    List <string> compatibleVersions = new List <string>();
                    foreach (WikiFile wf in WikiFile.CurrentFiles(sender.Id))
                    {
                        if (wf.FileType == "package")
                        {
                            foreach (var ver in wf.Versions)
                            {
                                if (!compatibleVersions.Contains(ver.Version))
                                {
                                    compatibleVersions.Add(ver.Version);
                                }
                            }
                        }
                    }

                    string _compatibleVersions = string.Join(",", compatibleVersions.ToArray());
                    sender.getProperty("compatibleVersions").Value = "saved," + _compatibleVersions;
                }
            }
        }
        /// <summary>
        /// Transforms the XML string using the <see cref="XslCompiledTransform" />
        /// defined by the instance's <see cref="XslOpenXmlTransformation{TDocument}.Xslt" />
        /// property and the <see cref="XsltArgumentList" /> defined in the instance's
        /// <see cref="XslOpenXmlTransformation{TDocument}.Arguments" /> property.
        /// </summary>
        /// <param name="xml">The XML string to be transformed</param>
        /// <returns>The transformed XML string</returns>
        public override string Transform(string xml)
        {
            if (xml == null)
            {
                return(null);
            }
            if (Xslt == null)
            {
                throw new OpenXmlTransformationException("Xslt is not initialized");
            }

            var sb = new StringBuilder();

            using (var sr = new StringReader(xml))
                using (var xr = XmlReader.Create(sr))
                    using (var xw = XmlWriter.Create(sb))
                        Xslt.Transform(xr, Arguments, xw);

            return(sb.ToString());
        }
Exemplo n.º 28
0
        protected virtual void Render(TextWriter outputFileName, bool withChildren)
        {
            var writer = XmlWriter.Create(outputFileName, new XmlWriterSettings
            {
                Indent             = true,
                Encoding           = GetEncoding(),
                OmitXmlDeclaration = this.OmitXmlDeclaration
            });

            var content = Content.Create(PortalContext.Current.ContextNode);
            var xml     = new XPathDocument(content.GetXml(withChildren));
            var xslt    = Xslt.GetXslt(this.Path, true);

            var xsltArguments = GetXsltArgumentList();

            xslt.Transform(xml, xsltArguments, writer);


            writer.Close();
        }
Exemplo n.º 29
0
        private void SetBinary()
        {
            // cannot generate the view without a template
            if (Template == null)
            {
                return;
            }

            // load the source if exists
            IXPathNavigable viewSourceXml = GetSource();

            if (viewSourceXml == null)
            {
                return;
            }

            var xsltTransform = Xslt.GetXslt(Template.Path, false);
            var newBinary     = this.Binary ?? new BinaryData();
            var ascxStream    = new MemoryStream();

            var xsltArgList = new System.Xml.Xsl.XsltArgumentList();

            AddXsltParameters(xsltArgList);

            using (var sw = new StreamWriter(ascxStream, Encoding.UTF8))
            {
                using (var writer = new HtmlTextWriter(sw))
                {
                    xsltTransform.Transform(viewSourceXml, xsltArgList, writer);
                    writer.Flush();
                    this.Binary.SetStream(ascxStream);
                    this.Binary = newBinary;
                    sw.Flush();
                    ascxStream.Flush();
                }
            }
        }
Exemplo n.º 30
0
        private void SetBinary()
        {
            if (Template == null)
            {
                //throw new InvalidOperationException("Template property is empty.");
                return;
            }

            var xsltTransform = Xslt.GetXslt(Template.Path, false);

            IXPathNavigable viewSourceXml = GetSource();

            if (viewSourceXml == null)
            {
                throw new InvalidOperationException("View description xml bad or missing.");
            }

            var newBinary  = this.Binary ?? new BinaryData();
            var ascxStream = new MemoryStream();

            var xsltArgList = new System.Xml.Xsl.XsltArgumentList();

            AddXsltParameters(xsltArgList);

            using (var sw = new StreamWriter(ascxStream, Encoding.UTF8))
            {
                using (var writer = new HtmlTextWriter(sw))
                {
                    xsltTransform.Transform(viewSourceXml, xsltArgList, writer);
                    writer.Flush();
                    this.Binary.SetStream(ascxStream);
                    this.Binary = newBinary;
                    sw.Flush();
                    ascxStream.Flush();
                }
            }
        }
Exemplo n.º 31
0
        void TopicScoring(object sender, ActionEventArgs e)
        {
            if (e.Cancel)
            {
                return;
            }

            var action = (Action)sender;

            if (action.Alias != "LikeTopic" && action.Alias != "DisLikeTopic")
            {
                return;
            }

            var topicScore = Xslt.Score(e.ItemId, action.DataBaseTable);

            using (var sqlHelper = Application.SqlHelper)
            {
                //this uses a non-standard coloumn in the forum schema, so this is added manually..
                sqlHelper.ExecuteNonQuery("UPDATE forumTopics SET score = @score WHERE id = @id",
                                          sqlHelper.CreateParameter("@id", e.ItemId),
                                          sqlHelper.CreateParameter("@score", topicScore));
            }
        }
Exemplo n.º 32
0
 public override void CompileStylesheet(Uri stylesheetUri)
 {
     stylesheet = Xslt.Compile(stylesheetUri.ToString(), schemaAware ? xsltSettingsSchemaAware : xsltSettings);
     stylesheet.SerializationSettings.NewLineChars = "\n";
 }
Exemplo n.º 33
0
 public static void AssertXslTransformResults(XmlInput xslTransform, XmlInput xmlToTransform,
                                              XmlInput expectedResult)
 {
     Xslt xslt = new Xslt(xslTransform);
     XmlOutput output = xslt.Transform(xmlToTransform);
     AssertXmlEquals(expectedResult, output.AsXml());
 }
Exemplo n.º 34
0
            public void TestTransform()
            {
                // Given
                string xsltInput = string.Empty
                                   + "<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\" version=\"1.0\">"
                                   + "<xsl:template match=\"bookstore\">"
                                   + "  <HTML>"
                                   + "    <BODY>"
                                   + "      <TABLE BORDER=\"2\">"
                                   + "        <TR>"
                                   + "          <TD>ISBN</TD>"
                                   + "          <TD>Title</TD>"
                                   + "          <TD>Price</TD>"
                                   + "        </TR>"
                                   + "        <xsl:apply-templates select=\"book\"/>"
                                   + "      </TABLE>"
                                   + "    </BODY>"
                                   + "  </HTML>"
                                   + "</xsl:template>"
                                   + "<xsl:template match=\"book\">"
                                   + "  <TR>"
                                   + "    <TD><xsl:value-of select=\"@ISBN\"/></TD>"
                                   + "    <TD><xsl:value-of select=\"title\"/></TD>"
                                   + "    <TD><xsl:value-of select=\"price\"/></TD>"
                                   + "  </TR>"
                                   + "</xsl:template>"
                                   + "</xsl:stylesheet>";

                string input = string.Empty
                               + "<?xml version='1.0'?>"
                               + "<!-- This file represents a fragment of a book store inventory database -->"
                               + "<bookstore>"
                               + "  <book genre=\"autobiography\" publicationdate=\"1981\" ISBN=\"1-861003-11-0\">"
                               + "    <title>The Autobiography of Benjamin Franklin</title>"
                               + "    <author>"
                               + "      <first-name>Benjamin</first-name>"
                               + "      <last-name>Franklin</last-name>"
                               + "    </author>"
                               + "    <price>8.99</price>"
                               + "  </book>"
                               + "  <book genre=\"novel\" publicationdate=\"1967\" ISBN=\"0-201-63361-2\">"
                               + "    <title>The Confidence Man</title>"
                               + "    <author>"
                               + "      <first-name>Herman</first-name>"
                               + "      <last-name>Melville</last-name>"
                               + "    </author>"
                               + "    <price>11.99</price>"
                               + "  </book>"
                               + "  <book genre=\"philosophy\" publicationdate=\"1991\" ISBN=\"1-861001-57-6\">"
                               + "    <title>The Gorgias</title>"
                               + "    <author>"
                               + "      <name>Plato</name>"
                               + "    </author>"
                               + "    <price>9.99</price>"
                               + "  </book>"
                               + "</bookstore>";

                const string output = "<HTML><BODY><TABLE BORDER=\"2\"><TR><TD>ISBN</TD><TD>Title</TD><TD>Price</TD></TR><TR><TD>1-861003-11-0</TD><TD>The Autobiography of Benjamin Franklin</TD><TD>8.99</TD></TR><TR><TD>0-201-63361-2</TD><TD>The Confidence Man</TD><TD>11.99</TD></TR><TR><TD>1-861001-57-6</TD><TD>The Gorgias</TD><TD>9.99</TD></TR></TABLE></BODY></HTML>";

                TestExecutionContext context      = new TestExecutionContext();
                IDocument            document     = new TestDocument(input);
                IDocument            xsltDocument = new TestDocument(xsltInput);
                IModule module = new Execute(_ => new[] { xsltDocument });
                Xslt    xslt   = new Xslt(module);

                // When
                IList <IDocument> results = xslt.Execute(new[] { document }, context).ToList();  // Make sure to materialize the result list

                // Then
                Assert.That(results.Select(x => x.Content), Is.EquivalentTo(new[] { output }));
            }