XSLT の最適化を行っているときに、親ノードのルックアップを回避することで、XSLT の実行時間が 1 時間から約 20 秒に短縮されることがわかりました。
関連するパラメーターを渡して必要な決定を下し、パフォーマンスを向上させることで、xsl行の下を回避しました。
<xsl:if test="parent::node() = /test">
...
</xsl:if>
私は saxon8.jar ライブラリを使用して、SAX ベースの XML 解析を使用する XSLT を実行しています。
SAX はプッシュ ベースであるため、参照を戻すにはコストがかかることを理解しています。しかし、コストとここに含まれるアルゴリズムについて、もう少し洞察を得たいと思います。
また、私の XSL では、実行のさまざまなステップで Xpath を使用して同じフォワード ノードを何度も参照しています。では、なぜこれが親ノードの参照のようにボトルネックにならなかったのでしょうか?