0

これが私が参照しているコード例です:

http://xml.apache.org/xalan-j/usagepatterns.html#sax

まず、このコードでは、入力と出力の両方で、SAX ベースにできるものはすべて SAX ベースであることに注意してください。

また、TransformerHandler オブジェクトが「foo.xsl」から作成され、transformerHandler を使用して、SAX 入力から出力を作成する SAX ContentHandler への変換が行われることに注意してください。

XSLT が機能するには、DOM ツリーのようなものを構築する必要があることは理解していました。

では、私の質問は次のとおりです。transformerHandler が実際に DOM ツリーのようなものを裏で構築しているのだろうか? もしそうなら、それはSAXの世界にとどまるために一生懸命努力する目的を打ち砕くものではありませんか?

4

1 に答える 1

0

http://xml.apache.org/xalan-j/dtm.htmlからの引用

ドキュメント テーブル モデル (DTM) は、XPath および XSLT 実装のニーズに合わせて特別に設計されたドキュメント モデルへのインターフェイスです。このモデルの背後にある動機は、パフォーマンスを最適化し、ストレージを最小限に抑えることです。

具体的には、DTM は、ノードのツリーを表すために標準 DOM が必要とするオブジェクトをインスタンス化するオーバーヘッドを回避します。DTM は一意の整数「ハンドル」を使用してノードを識別し、整数 ID 値を使用して URL、ローカル名、拡張名を表し、文字列バッファーへの整数インデックスと長さ参照を使用して各ノードのテキスト値を表します。

つまり、DOM ツリーを構築するのではなく、XSLT のニーズを満たすのに特に適した効率的な構造を構築します。

于 2011-08-19T12:58:32.143 に答える