情報: XSL 変換のパフォーマンスを向上させるテクニック

文書翻訳 文書翻訳
文書番号: 815124
すべて展開する | すべて折りたたむ

概要

向上させるのには、いくつかの方法を掲載、拡張スタイル シート言語 (XSL) 変換のパフォーマンス。XSL は、関数型言語です。XSL は、一般的な言語の機能をサポートしていません。のたとえば、戻り値、またはグローバル XSL をサポートしていません。XSL ではありませんがオブジェクト指向言語で、モジュール化されているプロセッサ サイクルのコストです。ないです。XSL のためのデバッグ、デバッグしたがってになります難しい。

詳細

XSL 変換のパフォーマンスを左右するのには使用するシナリオ。この資料に記載されている方法は、全般的なガイドライン。各チューニングの結果を測定することを確認してください。のみテストは、特定の方法、パフォーマンスが向上するかどうかを証明できるか不正解です。Msxsl.exe コマンド ライン ユーティリティを使用してのテスト、および実行することができます。XSL 変換をコマンドライン Microsoft XSL プロセッサを使用します。は、msxsl.exe ユーティリティは、Microsoft XML パーサーを実行するのには、4.0 (msxml4.dll) を呼び出すトランス フォームです。次の MSDN からこのユーティリティをダウンロードすることができます。サイト:
ドキュメントですか。FamilyID = の 2fb55371-c94e-4373-b0e9-db4816552e41 & DisplayLang = en

パフォーマンスを向上させるテクニック

  • ページをレンダリングするのには、最も一般的なコード パスを識別します。これらのパスを最適化します。セクションでは、高度な再利用を最適化します。[XSL]。
  • その代わりにサブ要素を使用する、使用場所属性します。考えられる。要素ではなく属性を使用すると、パフォーマンスが向上します。時緩やかに型指定されるため XPath の一致を実行する、属性は高速です。これは、スキーマの検証は容易になります。
  • 他の明示的なパスの代わりに使用"//"可能な限り。XML データのサイズが大きいと、"//"再帰 decedent の検索は非常に高価な。特定の XPath 式は、高速実装されています。
  • 属性の値と一致すると、列挙子を使用します。属性。ビットとしては、複数の属性名を使用してこれらの値を設定するのには true または false.たとえば。
    <element_name attr1="1" attr2="1" attr3="0">
  • スクリプトを使用しないでください。ダウン グレードのスクリプトを使用して、パフォーマンス。
  • パフォーマンスを向上させるために名前で直接比較します。の例を使用して、次のコードを使用するのではなく。
    ./info[type='title']
    次のコードを使用します。
    ./title
    ときは次のとおりの名前を使用するのではなく、値を比較します。
    Select="*[name()='sample']"
    次のコードを使用します。
    Select="sample"
    名前空間を XPath の処理のため、これらは正確には等価です。
  • 高速 MSXML、バージョン 3.0 以降のすべてのバージョンであります。インデックスの明示的なフィルターをします。パフォーマンスの向上に依存、親の子リスト内の要素の位置。使用するのではなく、次の。
    /child_element
    次を使用します。
    /child_element[1]
  • 各クエリを評価するのではなく、パラメーターを使用します。時間です。
  • XSL 変換できる複数のオプション、ただし、すべてこれらの適切な実行可能性があります。たとえば、次の代わりに変換:
    <xsl:output method="html"/>
    次の変換を使用します。
    <xsl:output method="html" indent="no" />
    多くの不要なインデントを提供するためパフォーマンスを向上させる空白文字を出力します。既定の属性のインデントの値です。 [はい].
  • インライン テンプレートを使用 for each または mode 属性 いるときは、確かに、 テンプレートの適用 1 つのテンプレートに一致します。たとえば。
    <xsl:apply-templates select="//xa:Axes/xa:Axis[@name='Axis1']" />
    <xsl:template match="//xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple">
    次に一致する各ノードの場合。
    "//xa:Axes/xa:Axis[@name='Axis1']"
    次の式:
    "//xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple"
    他のすべてのテンプレートと同じモードで表示されます。プロセッサを起動します。既定のテンプレートを実行します。すべてのテキスト ノードをコピーし、次を呼び出します。
    <xsl:apply-templates>
    すべての要素。したがって、すべての子の元のノードセットを一致する式が評価されます。式に一致するではない、簡単な作業。パフォーマンスを向上させるには、次のようにコードを書き直します。
    <xsl:apply-templates select="//xa:Axes/xa:Axis[@name='Axis1']/xa:Tuples/xa:Tuple" mode="Axis1"/>
    <xsl:template match="*" mode="Axis1">
  • 以下のテンプレートを使用します。これは、実行時に当てはまります、同じテンプレートの 2 つ以上の時間です。あるいくつかのパフォーマンスを向上きつい for each テンプレートの数のテンプレートを検索するには、ループ小さい。
  • 使用を削減します。 xsl: 選択/xsl:when/xsl: それ以外の場合.パフォーマンスが影響を受けるとき多くの選択を分類を通じて、 それ以外の場合 句です。したがって、一致します。 、しを使用しないようにしてください。 それ以外の場合 場合は、特定の値が存在することを知る。
  • xsl:variables は動的な値です。これらの変数ではありません。キャッシュ、および XSL で参照されるたびを実行します。明示的な型xsl:variable のキャストには、パフォーマンスが向上します。行うことができますにキャストを入力 string()boolean() 機能します。たとえば。
    <xsl:variable name="_attr" select="string( /node/child[ @attr ] )">
  • MSXML Vs。System.Xml
    • MSXML パーサーは異なります XmlReaderXmlWriter.
    • MSXML は、ドキュメント オブジェクト モデルに XML データを読み込みます(DOM)。この DOM ツリーのデータは XPath を簡単にナビゲートできます、編集および保存されているバックアップまたは XSL の変換。これが簡単にできます。開発およびメモリの使用量をさらに強力な機能と速度です。
    • XmlReaderXmlWriter 連のリーダーとライターです。開発者が状態を維持します。手動で読み取りと XML データを作成する場合。これは、メモリを最小限に抑えることができます。使用率およびパフォーマンスを向上させるため、します。
    • MSXML パーサーにも SAX (シンプルな API をサポートしていますXML). SAX はシーケンシャルです。します。NET framework もサポート、DOM を使用して、 XmlDocument クラスです。
    • 最適の使用率に依存します。NETフレームワークと XML のために仕事をします。

  • この方法でデータベースのパフォーマンスに関連しています。MSXML および System.Xml のパフォーマンスを改善するには、検索 pre-joiningフィールドを次のコードに示すように:
    <?xml version="1.0" encoding="UTF-8"?>
    <AllLocalDescriptor xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
    <Descriptor key="AMC_Labels_" ID="AMC" Name="-2000" TypeName="Labels" LCID="">
      AMC
    </Descriptor>
    <Descriptor key="AMC_Labels_3082" ID="AMC" Name="-2000" TypeName="Labels" LCID="3082">
      AMC
    </Descriptor>
    @ キーの種類 ID を宣言することでスキャンを避けることができます。
    desc = doc.getNodeFromID("AMC_Labels_3082")

関連情報

詳細については、以下を参照してください。開発者 (MSDN) Web サイト。
XSLT 開発者用ガイド
http://msdn2.microsoft.com/en-us/library/ms759204.aspx
機能の拡張XSL
http://msdn2.microsoft.com/en-us/library/aa468550.aspx
XSLT のパフォーマンスの詳細については、Microsoft では、記事を表示するのには、次の資料番号をクリックします。ナレッジ ベース:
325689情報: パフォーマンスの XSLT変換では。NET Framework
331026 方法: パフォーマンスのチューニングを Xslt スタイル シート。System.Xml を使用して NET

プロパティ

文書番号: 815124 - 最終更新日: 2011年7月28日 - リビジョン: 4.0
キーワード:?
kbinfo kbperformance kbxml kbmt KB815124 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:815124
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com