当我在输入和输出为 SAX 的上下文中解析 XSLT 时,是否会在幕后创建 DOM 树?

发布于 2024-11-29 09:54:39 字数 462 浏览 1 评论 0原文

这是我引用的示例代码:

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

首先,请注意在此代码中所有可以基于 SAX 的内容都是基于 SAX 的:输入和输出。

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

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

所以这是我的问题:我想知道 TransformerHandler 是否真的在幕后构建类似 DOM 树的东西?如果是的话,这岂不是违背了努力留在 SAX 土地上的初衷吗?

Here is example code I am referring to:

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

First, notice that everything that can be SAX-based is SAX-based in this code: both the input and the output.

Also, notice that a transformerHandler object is created off of "foo.xsl" and that transformerHandler is used to do a transformation from the SAX input to the SAX ContentHandler that creates the output.

I had understood that XSLT requires something like a DOM tree to be built in order for it to do its work.

So here is my question: I wonder if the transformerHandler is actually building something like a DOM tree behind the scenes? If it is, doesn't that kind of defeat the purpose of trying so hard to stay in SAX-land?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

久随 2024-12-06 09:54:39

引用自 http://xml.apache.org/xalan-j/dtm.html< /a>

文档表模型 (DTM) 是文档模型的接口,专为满足 XPath 和 XSLT 实现的需求而设计。该模型背后的动机是优化性能并最小化存储。

具体来说,DTM 避免了实例化标准 DOM 表示节点树所需的对象的开销。 DTM 使用唯一的整数“句柄”来标识节点,使用整数 ID 值来表示 URL、本地名称和扩展名称,以及对字符串缓冲区的整数索引和长度引用来表示每个节点的文本值。

换句话说,它并不构建 DOM 树,而是构建一个特别适合满足 XSLT 需求的高效结构。

Quoting from http://xml.apache.org/xalan-j/dtm.html

The Document Table Model (DTM) is an interface to a Document Model designed specifically for the needs of our XPath and XSLT implementations. The motivation behind this model is to optimize performance and minimize storage.

Specifically, DTM avoids the overhead of instantiating the objects the standard DOM requires to represent a tree of nodes. DTM uses unique integer "handles" to identify nodes, integer ID values to represent URLs, local names, and expanded names, and integer index and length references to a string buffer to represent the text value of each node.

In other words, it doesn't build a DOM tree but it builds an efficient structure that is specially suited to meet the needs of XSLT.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文