6.8.2 変換処理性能に関する注意事項

表6-14 XSLTCに関する注意事項(変換処理性能)

項番注意事項
13.2.1(1) 同一のXSLTスタイルシートを使って複数のXML文書を変換する場合」で示したケースに該当するすべての場合について,XSLTCトランスフォーマの変換処理性能がXSLTトランスフォーマより高いことを保証するものではありません。XSLTCトランスフォーマを使用する場合は,実際に使用するXSLTスタイルシートおよび変換対象のXML文書を使って性能を評価することを推奨します。
2XSLTCを使って変換する場合,次の条件がすべて重なるスタイルシートでは繰り返し処理される回数に比例してメモリ使用量が増加します。最大の繰り返し処理回数を想定してメモリ設計をしてください。
  1. <xsl:variable>や<xsl:param>で変数やパラメタに次のどちらかを設定している。
    ・結果ツリーフラグメント(select属性ではなく,要素内容として書かれたテンプレートによって定義される値)
    ・ノードセット
  2. 1.が繰り返し処理される。
例1:変数に結果ツリーフラグメントを設定した例

<xsl:for-each select="/ns1:root/ns1:Data">
 <xsl:variable name="V1">
  <xsl:element name="RTF_ROOT" namespace="">
   <xsl:copy-of select="." />
  </xsl:element>
 </xsl:variable>
 <xsl:element name="ELE1" namespace="">
  <xsl:copy-of select="$V1" />
 </xsl:element>
</xsl:for-each>


例2:パラメタに結果ツリーフラグメントを設定した例

<xsl:template match="/">
 <xsl:for-each select="/ns1:root/ns1:Data">
  <xsl:call-template name="t2">
   <xsl: with-param name="P1">
    <xsl:element name="RTF1" namespace="">
     <xsl:copy-of select="." />
    </xsl:element>
   </xsl: with-param>
  </xsl:call-template>
 </xsl:for-each>
</xsl:template>
<xsl:template name="t2">
 <xsl:param name="P1"/>
 <xsl:element name="ELE1" namespace="">
  <xsl:copy-of select="$V1" />
 </xsl:element>
</xsl:template>


例3:変数にノードセット(document()関数を使用して異なるXML文書を読み込む)を設定した例

<xsl:for-each select="/ns1:root/ns1:Data">
 <xsl:variable name="V1" select="document(@refdoc)"/>
 <xsl:element name="ELE1" namespace="">
  <xsl:copy-of select="$V1/*" />
 </xsl:element>
</xsl:for-each>