有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Saxon s9api:什么时候期待TinyDocumentImpl与DocumentImpl

我的公司在我们的产品中大量使用XSLT,我们即将从Java的javax迁移出去。xml API和Saxon的s9api。正因为如此,我一直在探索新的API,并找出我们需要做哪些更改

让我烦恼的一件大事是撒克逊人的NodeInfo。具体来说,对于整个XML文档,有两种实现:TinyDocumentImpl和DocumentImpl。它们不共享一个公共API,我还没有找到关于何时使用这两种API的好文档

所以我的问题是:我应该在什么时候看到一个和另一个?什么样的规则决定给定的Saxon操作返回哪一个

另外一点:到目前为止,在我的实验中,每当我使用Saxon DocumentBuilder加载文档时,我都会看到TinyDocumentImpl,但我看到DocumentImpl是MessageListener2实现的XdmNode参数的基础节点信息,它接收xsl:message的输出


共 (1) 个答案

  1. # 1 楼答案

    Saxon的NodeInfo接口应该包含操作节点通常需要的所有方法。事实上,对于大多数s9api应用程序,您不需要下拉到更高级别的XdmNode接口下面。NodeInfo接口有许多不同的具体实现,包括您提到的DocumentImplTinyDocumentImpl,但是除非您有非常充分的理由,否则您不应该关心具体的实现,因为它可能会根据配置设置,甚至是您使用的Saxon版本而改变

    你还没有说你想用这些节点做什么,但我认为它可能可以通过NodeInfoXdmNode上可用的方法来实现

    还有一点额外的信息:TinyDocumentImpl代表“小树”中的一个文档节点,这是Saxon的默认树模型。DocumentImpl是“链接树”中的一个文档节点,用于提供好处的情况。xsl:message指令(根据规范)生成一个XML文档,但在绝大多数情况下,XML文档只包含一个文档节点和一个文本节点。在这种情况下,构建LinkedTree比构建TinyTree性能更好,所以我们选择了这个选项。但正如我之前所说,你真的不想知道