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); }
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(""); }
/// <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()); }
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(""); }
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)); }
public override void ResetVariables() { sourceDocument = null; stylesheet = null; resultDocument = null; resultFile = null; schemaAware = false; }
public string GetContentVersion(int id, string guid = null) { if (guid == null) { guid = string.Empty; } return(Xslt.GetXmlNodeFromVersion(id, guid, false)); }
[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()); }
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)); }
/// <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()); } }
/// <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); }
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)); } }
public string VerifyFile(int fileId) { if (Xslt.IsMemberInGroup("admin", Members.GetCurrentMember().Id)) { var wikiFile = new WikiFile(fileId) { Verified = true }; wikiFile.Save(); } return(""); }
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(""); }
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)); } } }
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."); }
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); }
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); } } }
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); } }
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)); } }
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()); }
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(); }
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(); } } }
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(); } } }
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)); } }
public override void CompileStylesheet(Uri stylesheetUri) { stylesheet = Xslt.Compile(stylesheetUri.ToString(), schemaAware ? xsltSettingsSchemaAware : xsltSettings); stylesheet.SerializationSettings.NewLineChars = "\n"; }
public static void AssertXslTransformResults(XmlInput xslTransform, XmlInput xmlToTransform, XmlInput expectedResult) { Xslt xslt = new Xslt(xslTransform); XmlOutput output = xslt.Transform(xmlToTransform); AssertXmlEquals(expectedResult, output.AsXml()); }
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 })); }