Skip to content

Commit

Permalink
- XsltArgumentList is in XmlTransformationSettings class
Browse files Browse the repository at this point in the history
- XsltArgumentList can be null according to the documentation
- fixed tests
- fixed exception messages to be aligned to documentation
- no need to overloaded aliases
  • Loading branch information
deqenq committed Jan 30, 2022
1 parent bfca2ba commit ebec9c0
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 96 deletions.
109 changes: 13 additions & 96 deletions src/Cake.Common/Xml/XmlTransformation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,61 +32,23 @@ public static string Transform(string xsl, string xml)
Encoding = new UTF8Encoding(false)
};

var arguments = new XsltArgumentList();
return Transform(xsl, arguments, xml, settings);
return Transform(xsl, xml, settings);
}

/// <summary>
/// Performs XML XSL transformation.
/// </summary>
/// <param name="xsl">XML style sheet.</param>
/// <param name="xml">XML data.</param>
/// <param name="settings">Settings for result file xml transformation.</param>
/// <param name="settings">Settings for result file XML transformation.</param>
/// <returns>Transformed XML string.</returns>
public static string Transform(string xsl, string xml, XmlTransformationSettings settings)
{
var arguments = new XsltArgumentList();
return Transform(xsl, arguments, xml, settings);
}

/// <summary>
/// Performs XML XSL transformation.
/// </summary>
/// <param name="xsl">XML style sheet.</param>
/// <param name="arguments">XSLT argument list.</param>
/// <param name="xml">XML data.</param>
/// <returns>Transformed XML string.</returns>
public static string Transform(string xsl, XsltArgumentList arguments, string xml)
{
var settings = new XmlTransformationSettings
{
OmitXmlDeclaration = true,
Encoding = new UTF8Encoding(false)
};

return Transform(xsl, arguments, xml, settings);
}

/// <summary>
/// Performs XML XSL transformation.
/// </summary>
/// <param name="xsl">XML style sheet.</param>
/// <param name="arguments">XSLT argument list.</param>
/// <param name="xml">XML data.</param>
/// <param name="settings">Settings for result file xml transformation.</param>
/// <returns>Transformed XML string.</returns>
public static string Transform(string xsl, XsltArgumentList arguments, string xml, XmlTransformationSettings settings)
{
if (string.IsNullOrWhiteSpace(xsl))
{
throw new ArgumentNullException(nameof(xsl), "Null or empty XML style sheet supplied.");
}

if (arguments == null)
{
throw new ArgumentNullException(nameof(arguments), "Null XSLT argument list supplied.");
}

if (string.IsNullOrWhiteSpace(xml))
{
throw new ArgumentNullException(nameof(xml), "Null or empty XML data supplied.");
Expand All @@ -103,7 +65,7 @@ public static string Transform(string xsl, XsltArgumentList arguments, string xm
{
using (var result = new MemoryStream())
{
Transform(xslReader, arguments, xmlReader, result, settings.XmlWriterSettings);
Transform(xslReader, settings.XsltArgumentList, xmlReader, result, settings.XmlWriterSettings);
result.Position = 0;
return settings.Encoding.GetString(result.ToArray());
}
Expand All @@ -114,54 +76,24 @@ public static string Transform(string xsl, XsltArgumentList arguments, string xm
/// Performs XML XSL transformation.
/// </summary>
/// <param name="fileSystem">The file system.</param>
/// <param name="xslPath">Path to xml style sheet.</param>
/// <param name="xmlPath">Path xml data.</param>
/// <param name="xslPath">Path to XML style sheet.</param>
/// <param name="xmlPath">Path XML data.</param>
/// <param name="resultPath">Transformation result path.</param>
public static void Transform(IFileSystem fileSystem, FilePath xslPath, FilePath xmlPath, FilePath resultPath)
{
var settings = new XmlTransformationSettings();
var arguments = new XsltArgumentList();
Transform(fileSystem, xslPath, arguments, xmlPath, resultPath, settings);
Transform(fileSystem, xslPath, xmlPath, resultPath, settings);
}

/// <summary>
/// Performs XML XSL transformation.
/// </summary>
/// <param name="fileSystem">The file system.</param>
/// <param name="xslPath">Path to xml style sheet.</param>
/// <param name="xmlPath">Path xml data.</param>
/// <param name="xslPath">Path to XML style sheet.</param>
/// <param name="xmlPath">Path XML data.</param>
/// <param name="resultPath">Transformation result path.</param>
/// <param name="settings">Settings for result file xml transformation.</param>
/// <param name="settings">Settings for result file XML transformation.</param>
public static void Transform(IFileSystem fileSystem, FilePath xslPath, FilePath xmlPath, FilePath resultPath, XmlTransformationSettings settings)
{
var arguments = new XsltArgumentList();
Transform(fileSystem, xslPath, arguments, xmlPath, resultPath, settings);
}

/// <summary>
/// Performs XML XSL transformation.
/// </summary>
/// <param name="fileSystem">The file system.</param>
/// <param name="xslPath">Path to xml style sheet.</param>
/// <param name="arguments">XSLT argument list.</param>
/// <param name="xmlPath">Path xml data.</param>
/// <param name="resultPath">Transformation result path.</param>
public static void Transform(IFileSystem fileSystem, FilePath xslPath, XsltArgumentList arguments, FilePath xmlPath, FilePath resultPath)
{
var settings = new XmlTransformationSettings();
Transform(fileSystem, xslPath, arguments, xmlPath, resultPath, settings);
}

/// <summary>
/// Performs XML XSL transformation.
/// </summary>
/// <param name="fileSystem">The file system.</param>
/// <param name="xslPath">Path to xml style sheet.</param>
/// <param name="arguments">XSLT argument list.</param>
/// <param name="xmlPath">Path xml data.</param>
/// <param name="resultPath">Transformation result path.</param>
/// <param name="settings">Settings for result file xml transformation.</param>
public static void Transform(IFileSystem fileSystem, FilePath xslPath, XsltArgumentList arguments, FilePath xmlPath, FilePath resultPath, XmlTransformationSettings settings)
{
if (fileSystem == null)
{
Expand All @@ -173,11 +105,6 @@ public static void Transform(IFileSystem fileSystem, FilePath xslPath, XsltArgum
throw new ArgumentNullException(nameof(xslPath), "Null XML style sheet path supplied.");
}

if (arguments == null)
{
throw new ArgumentNullException(nameof(arguments), "Null XSLT argument list supplied.");
}

if (xmlPath == null)
{
throw new ArgumentNullException(nameof(xmlPath), "Null XML data path supplied.");
Expand All @@ -200,12 +127,12 @@ public static void Transform(IFileSystem fileSystem, FilePath xslPath, XsltArgum

if (!xslFile.Exists)
{
throw new FileNotFoundException("Xsl File not found.", xslFile.Path.FullPath);
throw new FileNotFoundException("XSL file not found.", xslFile.Path.FullPath);
}

if (!xmlFile.Exists)
{
throw new FileNotFoundException("XML File not found.", xmlFile.Path.FullPath);
throw new FileNotFoundException("XML file not found.", xmlFile.Path.FullPath);
}

if (!settings.Overwrite && resultFile.Exists)
Expand All @@ -223,7 +150,7 @@ public static void Transform(IFileSystem fileSystem, FilePath xslPath, XsltArgum
xmlReader = XmlReader.Create(xmlStream);

var resultWriter = XmlWriter.Create(resultStream, settings.XmlWriterSettings);
Transform(xslReader, arguments, xmlReader, resultWriter);
Transform(xslReader, settings.XsltArgumentList, xmlReader, resultWriter);
}
}

Expand All @@ -234,19 +161,14 @@ public static void Transform(IFileSystem fileSystem, FilePath xslPath, XsltArgum
/// <param name="arguments">XSLT argument list.</param>
/// <param name="xml">XML data.</param>
/// <param name="result">Transformation result.</param>
/// <param name="settings">Optional settings for result file xml writer.</param>
/// <param name="settings">Optional settings for result file XML writer.</param>
private static void Transform(TextReader xsl, XsltArgumentList arguments, TextReader xml, Stream result, XmlWriterSettings settings = null)
{
if (xsl == null)
{
throw new ArgumentNullException(nameof(xsl), "Null XML style sheet supplied.");
}

if (arguments == null)
{
throw new ArgumentNullException(nameof(arguments), "Null XSLT argument list supplied.");
}

if (xml == null)
{
throw new ArgumentNullException(nameof(xml), "Null XML data supplied.");
Expand Down Expand Up @@ -282,11 +204,6 @@ private static void Transform(XmlReader xsl, XsltArgumentList arguments, XmlRead
throw new ArgumentNullException(nameof(xsl), "Null XML style sheet supplied.");
}

if (arguments == null)
{
throw new ArgumentNullException(nameof(arguments), "Null XSLT argument list supplied.");
}

if (xml == null)
{
throw new ArgumentNullException(nameof(xml), "Null XML data supplied.");
Expand Down
6 changes: 6 additions & 0 deletions src/Cake.Common/Xml/XmlTransformationSettings.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

using System.Text;
using System.Xml;
using System.Xml.Xsl;
using Cake.Common.Polyfill;

namespace Cake.Common.Xml
Expand Down Expand Up @@ -128,6 +129,11 @@ public bool WriteEndDocumentOnClose
set { XmlWriterSettings.WriteEndDocumentOnClose = value; }
}

/// <summary>
/// Gets or sets an argument list for XSL transformation.
/// </summary>
public XsltArgumentList XsltArgumentList { get; set; }

/// <summary>
/// Initializes a new instance of the <see cref="XmlTransformationSettings"/> class.
/// </summary>
Expand Down

0 comments on commit ebec9c0

Please sign in to comment.