如何在S9API中改变XdmNode基础URI?

我为Saxon的S9API提供了一个自制的缓存。XdmNode 实例,实现 get, put, moveremove 按URI操作。的 move 操作允许移动一个 XdmNode 从一个URI到另一个URI。

我的问题是 XdmNode 内部保留了文档的基础URI。如何更新底层的基础URI?NodeInfo? 当底层节点是一个 DOMNodeWrapper,基础URI可以更新。但例如 TinyDocumentImpl 是不可改变的。

是否有一种解决方案,可以更新 TinyDocumentImpl 涉及到通过制作树的完整副本来构建一个新的文档?

解决方案:

当这个问题第一次出现时,我错过了这个问题,因为缺乏 “saxon “标签。

一个选择是使用 LinkedTree 作为您所选择的树型;链接树是可以变异的,而且您所选择的 DocumentImpl 类有 setBaseURI() 方法。您可以使用 DocumentBuilder.setTreeModel(). (但要小心使用,如果你在转换过程中改变了一个节点的属性,后果是不可预知的。)

另一个选择是将一个 TreeInfo 在…中 net.sf.saxon.tree.wrapper.RebasedDocument,它创建了一个原始节点的虚拟副本,除了有一个不同的基本URI之外,其他都是一样的。虚拟副本的内存成本几乎为零,但在导航树时有一个小的开销。

给TA打赏
共{{data.count}}人
人已打赏
未分类

Haskell的函数连接问题

2022-9-8 2:01:40

未分类

如何安全地将.pfx证书添加到aws lambda中?

2022-9-8 2:01:42

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索