0

ページの 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 スタイルシートを定義しました。そのファイルに引数を渡す必要があるだけです。ユーザーコントロール(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);
    }

しかし、このコードは機能していません。他のアプローチを教えてください

4

1 に答える 1

0

XsltArgumentList引数を渡すために、C#クラスを使用しています。そこにすべてのパラメーターを追加して、xslに渡すことができます。

次のSOリンクを調べてください。

.NETを介してXSLTスタイルシートにパラメーターを渡す

于 2012-06-14T06:31:25.993 に答える