【问题标题】:how to apply XSL to XML with xsltargument using c#?如何使用 c# 将 XSL 应用于带有 xsltargument 的 XML?
【发布时间】:2012-06-14 06:26:51
【问题描述】:

我有一个用户控件,我想在其中将页面 url 传递给我的 XSL 工作表并将其应用于我的 XML 文件。因此它应该产生一些 HTML 输出。请解释如何做到这一点?

xml file name: myXml.xml 
Xsl file name: mwXsl.xsl
Parameter to be passed by usercontrol(.cs) file: url of parent page.

我已经定义了 XSL 样式表。我只需要将参数传递给该文件。在 usercontrol(ascx) 文件中我有这个代码

<asp:Xml ID="BControl" runat="server" DocumentSource="/wsitemap.sitemap" TransformSource="/Bread.xslt"></asp:Xml>

其中 wsitemap.sitemap 是一个 XML 文件。如果我的 XSLT 得到参数,上面的代码将能够产生所需的输出。所以我需要 C# 代码。

在用户控件(.cs 文件)中我有:

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)
    {
        string curPageId = Page.Request.Url.AbsoluteUri;
        XsltArgumentList xslArgs = new XsltArgumentList();
        xslArgs.AddParam("curPage", "", curPageId);
        string output=Transform("wsitemap.sitemap","bread.xslt",xslArgs);
        Response.Clear(); Response.Write(output);
    }

但此代码不起作用,请告诉我任何其他方法

【问题讨论】:

    标签: c# asp.net .net


    【解决方案1】:

    您可以使用 XsltArgumentList C# 类来传递参数。您可以在那里添加所有参数并传递给 xsl。

    请查看以下 SO 链接,

    Passing parameters to XSLT Stylesheet via .NET

    【讨论】:

      猜你喜欢
      • 2011-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多