0

这是我指的示例代码:

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

首先,请注意,在这段代码中,所有可以基于 SAX 的东西都是基于 SAX 的:输入和输出。

另外,请注意,transformerHandler 对象是从“foo.xsl”创建的,并且该transformerHandler 用于执行从 SAX 输入到创建输出的 SAX ContentHandler 的转换。

我知道 XSLT 需要构建类似于 DOM 树的东西才能完成工作。

所以这是我的问题:我想知道 transformerHandler 是否真的在幕后构建了类似 DOM 树的东西?如果是的话,那不就是破坏了努力留在SAX-land的目的吗?

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 回答