diff --git a/src/Gemstone/StringExtensions/StringExtensions.cs b/src/Gemstone/StringExtensions/StringExtensions.cs index 3a4c2e1693..925f627cb0 100644 --- a/src/Gemstone/StringExtensions/StringExtensions.cs +++ b/src/Gemstone/StringExtensions/StringExtensions.cs @@ -103,6 +103,8 @@ using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; +using System.Xml; +using System.Xml.Xsl; using Gemstone.CharExtensions; namespace Gemstone.StringExtensions; @@ -2606,4 +2608,23 @@ string ReadQuoted() return token.ToString(); } } + + /// + /// Transforms an XML document using the given XSL template. + /// + /// The document to be transformed. + /// The template that defines how the data should be transformed. + /// The result of the transformation. + public static string ApplyXSLTransform(this string document, string transform) + { + using StringReader input = new StringReader(document); + using StringReader input2 = new StringReader(transform); + using XmlReader input3 = XmlReader.Create(input); + using XmlReader stylesheet = XmlReader.Create(input2); + using StringWriter stringWriter = new StringWriter(); + XslCompiledTransform xslCompiledTransform = new XslCompiledTransform(); + xslCompiledTransform.Load(stylesheet); + xslCompiledTransform.Transform(input3, null, stringWriter); + return stringWriter.ToString(); + } }