Документація

XSLT

Трансформування ХМЛ документу

Трансформування ХМЛ документу


Трансформування ХМЛ документу з повернення результату у вигляді тексту

Функція створення ХМЛ файлу

void GenerateCode(string fileName)
{
    XmlDocument xmlConfDocument = new XmlDocument();
    xmlConfDocument.AppendChild(xmlConfDocument.CreateXmlDeclaration("1.0", "utf-8", ""));

    XmlElement rootNode = xmlConfDocument.CreateElement("root");
    xmlConfDocument.AppendChild(rootNode);

    XmlElement nodeDirectory = xmlConfDocument.CreateElement("Directory");
    rootNode.AppendChild(nodeDirectory);

    XmlElement nodeDirectoryName = xmlConfDocument.CreateElement("Name");
    nodeDirectoryName.InnerText = ConfDirectory.Name;
    nodeDirectory.AppendChild(nodeDirectoryName);

    Dictionary arguments = new Dictionary();
    arguments.Add("File", fileName);

    string text = Transform
    (
        xmlConfDocument,
        System.IO.Path.Combine(AppContext.BaseDirectory, "xslt/ConstructorDirectory.xslt"),
        arguments
    );
}

Функція трансформування

using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl;

public static string? Transform(XmlDocument xmlDoc, string pathToTemplate, Dictionary? arguments)
{
    XPathNavigator? navigator = xmlDoc.CreateNavigator();
    string result = "";

    if (navigator != null)
    {
        XslCompiledTransform xsltCodeGnerator = new XslCompiledTransform();
        xsltCodeGnerator.Load(pathToTemplate, new XsltSettings(true, true), null);

        XsltArgumentList? xsltArgumentList = null;

        if (arguments != null)
        {
            xsltArgumentList = new XsltArgumentList();
            foreach (KeyValuePair argument in arguments)
                xsltArgumentList.AddParam(argument.Key, "", argument.Value);
        }

        using (TextWriter writer = new StringWriter())
        {
            xsltCodeGnerator.Transform(navigator, xsltArgumentList, writer);
            result = writer?.ToString() ?? "";
        }
    }

    return result;
}

Функція трансформування із записом у файл

public static void Transform2(string pathToXML, string pathToTemplate, string pathToSaveCode)
{
    XslCompiledTransform xsltCodeGnerator = new XslCompiledTransform();
    xsltCodeGnerator.Load(pathToTemplate, new XsltSettings(true, true), null);

    XsltArgumentList xsltArgumentList = new XsltArgumentList();
    xsltArgumentList.AddParam("KeyUID", "", DateTime.Now.ToString("dd_MM_yyyy_HH_mm_ss"));

    FileStream fileStream = new FileStream(pathToSaveCode, FileMode.Create);

    xsltCodeGnerator.Transform(pathToXML, xsltArgumentList, fileStream);

    fileStream.Close();
}

Шаблон XSLT

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text" indent="yes" />

    <!-- Файл -->
    <xsl:param name="File" />

    <xsl:template match="root">

    </xsl:template>

</xsl:stylesheet>

accounting.org.ua © 2023 рік