Передать параметры из C # .cs в .xslt - PullRequest
2 голосов
/ 14 июня 2011

Я пытаюсь найти простой способ передачи параметров из моего файла класса C # (.cs) в мой файл .xslt.На самом деле я не работаю с XML-файлом, поэтому не знаю, сработает ли что-то подобное http://msdn.microsoft.com/en-us/library/system.xml.xsl.xsltargumentlist.addparam.aspxКроме того, у меня нет метода main, поскольку это просто класс (все это делается в .net).Кто-нибудь знает возможный способ сделать это?

        protected void Page_Load(object sender, EventArgs e)
    {
        XsltSettings settings = new XsltSettings();
        settings.EnableScript = true;
        FetchQuote();

        // Create the XslCompiledTransform and load the stylesheet
        XslCompiledTransform xslt = new XslCompiledTransform();
        xslt.Load("Home.xslt");

        // Create the XsltArgumentList
        XsltArgumentList xslArg = new XsltArgumentList();

        // Add parameters
        xslArg.AddParam("chart_url", "","Chart_Url");
        xslArg.AddParam("last", "", "Last");
        xslArg.AddParam("change", "", "Change");
        xslArg.AddParam("perc_change", "", "Perc_Change");

        // Transform the File
        using (XmlWriter w = XmlWriter.Create("output.xml"))
        {
            xslt.Transform("", xslArg, w);
        }



    }

1 Ответ

4 голосов
/ 14 июня 2011

xsl:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:kso="nothin">

<xsl:param name="yourParam" />


   public static string Transform(string xml, string xsl, XsltArgumentList argsList)
        {
            XDocument selectedXml = XDocument.Parse(xml);
            XslCompiledTransform xmlTransform = new XslCompiledTransform();

            StringBuilder htmlOutput = new StringBuilder();
            XmlWriter writer = XmlWriter.Create(htmlOutput);

            xmlTransform.Load(new XmlTextReader(new StringReader(xsl)));
            xmlTransform.Transform(selectedXml.CreateReader(), argsList, writer);

            return htmlOutput.ToString();
        }

 protected void Page_Load(object sender, EventArgs e)
{

 XsltArgumentList xslArg = new XsltArgumentList();

    // Add parameters
    xslArg.AddParam("chart_url", "","Chart_Url");
    xslArg.AddParam("last", "", "Last");
    xslArg.AddParam("change", "", "Change");
    xslArg.AddParam("perc_change", "", "Perc_Change");



  string output=Transform(string.empty,"Home.xslt",xslArg );

  Response.Clear();
  Response.Write(output);

  //or:
  //string output=Transform("<xmlroot/>","Home.xslt",xslArg );
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...