6

XslTransform は、XslCompiledTransform を支持して Microsoft によって廃止されたようです。理論的には、アプリケーションの実行中に変換を 1 つだけ行っていた場合、XSLT を (XslTransform を介して) 解釈する方が、コンパイルするよりも高速ではないでしょうか? もしそうなら、XslCompiledTransform に加えられた改善がそれを補う以上のものであるほど、XslTransform はひどく書かれていますか?

4

5 に答える 5

2

XslTransform の (遅い) 実行時間と XslCompiledTransform のコンパイル時間に加えて、その (速い) 実行時間があります。この比較を最終的に決定する理論的な方法はありません。

理論によると、実行時間は入力と必要な操作に依存し、コンパイル時間は XSLT の複雑さに依存します。簡単な入力と複雑な XSLT を 1 回実行すると、XslTransform の方が確実に高速であることが実際に確認されています。

ただし、実際のすべてのアプリケーションでは、XslTransform が推奨されておらず、修正されることのない欠陥が含まれている可能性があるという事実のためだけに、XslCompiledTransform が必要になります。実際、XslTransform の下では奇妙な動作をし、XslCompiledTransform の下では完全に動作するスタイルシートがいくつかありました。

于 2009-03-05T08:59:43.507 に答える
1

XslTransform は廃止され、フレームワークの将来のバージョンから削除される可能性があるため、どのような場合でも XslCompiledTransform を使用する必要があります。

于 2009-03-05T09:05:50.387 に答える
-1

どちらにも長所と短所があります。私は両方を使用していますが、異なるシナリオで使用しています。XslTransform を使用して出力を XML コントロール変数に渡し、出力をリテラル コントロールに書き込みますが、ページ上の XML コントロールに渡す必要がある場合は、XslCompiledTransform が必要です。これは、両方の方法の出力が異なるためです。

  System.Web.UI.WebControls.Xml objXML = new System.Web.UI.WebControls.Xml();
        System.IO.StringWriter objTextWriter = new System.IO.StringWriter();
        System.Web.UI.HtmlTextWriter objHtmlTextWriter = new System.Web.UI.HtmlTextWriter(objTextWriter);
        XslTransform objTrans = new XslTransform();
        objTrans.Load(HttpContext.Current.Server.MapPath(strXslFileName));
        objXML.TransformArgumentList = objArgsList;
        objXML.Transform = objTrans;
        objXML.Document = objOutputXml;
        objXML.RenderControl(objHtmlTextWriter);
        return objTextWriter.ToString();



 XslCompiledTransform objTrans = new System.Xml.Xsl.XslCompiledTransform();
        System.IO.StringWriter objStringReader = new System.IO.StringWriter();
        objTrans.Load(HttpContext.Current.Server.MapPath(strXslFileName));
        objTrans.Transform(objOutputXml, objArgsList, objStringReader);
        return objStringReader.ToString().Replace("&lt;br&gt;", "<BR/>");
于 2014-08-01T10:28:17.570 に答える