0

カスタム ActionResult を使用して、コントローラー アクションから XML を返しています。

    public class XmlActionResult : ActionResult
{
    /// <summary>
    /// This class is a custom ActionResult that outputs the content of an XML document to the response stream
    /// </summary>

    private readonly XDocument _document;
    public Formatting Formatting { get; set; }
    public string MimeType { get; set; }

    public XmlActionResult(XDocument document)
    {
        _document = document;
        MimeType = "text/xml";
        Formatting = Formatting.None;

    }

    public override void ExecuteResult(ControllerContext context)
    {
       context.HttpContext.Response.Clear();
       context.HttpContext.Response.ContentType = MimeType;

       using(var writer = new XmlTextWriter(context.HttpContext.Response.OutputStream, null)
           {
               Formatting = Formatting

           })

        _document.WriteTo(writer);
    }
}

これにより、XML ツリーがブラウザーに出力されます。XML を変換する XSL ファイルがありますが、スタイルシートを XML 出力に適用するにはどうすればよいですか?

4

1 に答える 1

0

XslCompiledTransformXSLT 1.0 スタイルシートを適用するために使用するか、Saxon 9 や XmlPrime などのサードパーティの XSLT 2.0 プロセッサを使用して XSLT 2.0 スタイルシートを適用します。

XDocument の拡張メソッドを呼び出して、Transformメソッドの最初の引数として XDocument を渡すことができます。XslCompiledTransformCreateNavigator

XslCompiledTransform proc = new XslCompiledTransform();
proc.Load("sheet.xsl");
poc.Transform(_document.CreateNavigator(), null, context.HttpContext.Response.OutputStream);

using System.Xml.XPath;拡張メソッドを使用するには、ディレクティブが必要です。また、変換結果に応じて (たとえば、コンテンツ タイプ text/html の HTML であるか、コンテンツ タイプ application/xhtml+xml の XHTML であるか、またはその他の形式であるか)、ブラウザーに送信する ContentType を変更して、変換結果は適切に解析およびレンダリングされます。

于 2012-12-16T12:40:24.013 に答える