gpt4 book ai didi

xml - EXSLT:没有更多的 DTM ID 可用

转载 作者:数据小太阳 更新时间:2023-10-29 02:03:15 24 4
gpt4 key购买 nike

我整天都在寻找这个问题的答案。我正在为中等大小的 XML 文档(~1.5MB,~1000 个元素)创建样式表,这给我带来了很多麻烦。它是关于为不同的加工厂设备创建事件时间线图。XML 是通过 SAP MII QueryTempalte thingy 生成的,并且采用/Rowsets/Rowset/Row 格式。所有这些数据都以/Equipments/Equipment/Event 格式处理并存储在本地节点集中。然后将此节点集处理成 HTML,然后在浏览器中呈现。现在,我开始遇到一些麻烦。我可以轻松地提取过去 5 天的数据,这从 MII 中产生了约 900 行数据,并被处理为我的节点格式,结果不到 900 行。但是第二次我点击了从 MII 获取的 1017 行,样式表将只呈现大约一半,然后停止并出现“没有更多的 DTM ID 可用”异常。现在,MII 服务器只运行 JDK 1.5.x,而且我已经读到,这可能是个问题——唯一的问题是,我对此无能为力。所以现在我在这里问:有没有办法优化我的代码?我附上了我的 XSL 和示例 XML 的一些链接。

XSL:http://pastie.org/1566517示例 XML:http://pastie.org/1566522

现在,示例 XML 可能不会产生任何“有趣”的视觉结果,并且无法重现错误。但如果有人能发现明显的优化,我很想知道:)我一直在想,替换/移动 startOffset、endOffset 等的计算会很好,但我不知道该怎么做。

希望有人能帮助我! :)

最佳答案

跟进

我们在不同的应用程序中也遇到过这个问题,错误的基础是一样的。如上所述,基本问题是 xalan, Apache project 的限制。用于处理 xslt 文档。尽管很少触发该限制,但它是由于耗尽了最大数量的 65535(相当于 16 位)DTM id 而导致的。在上面的应用程序中,这显然是通过使用 SAP 中的资源分配效率功能来避免的,但这不适用于其他应用程序,例如我们正在使用的应用程序。

改变 Xalan

总而言之,65K DTM id 限制已经存在了一段时间(大约 2003 年),被打了补丁,然后在 2.7 分支中丢失了补丁。当前最新版本 2.7.2 存在此问题。在最基本的层面上,文档 ID 是一个 32 位整数。修复是源代码更改,增加了为 DTM 预留的位数。更深入的讨论可以查看here .建议的破解方法是将节点位数更改为 12,从而将 DTM 的数量增加到 20,从而将总 DTM 增加到 1048576。步骤是

  • 下载xalan source
  • 解压并修改 src/org/apache/xml/dtm/DTMManager.java,方法是修改设置 IDENT_DTM_NODE_BITS 的行。
  • 构建 xalan。您可能需要安装 ant 和 set the classpath appropriately .新的 jar 将位于构建目录中。
  • 将之前的 xalan jar 替换为刚刚构建的那个。

关于xml - EXSLT:没有更多的 DTM ID 可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5004967/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com