jjzjj

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

coder 2024-06-27 原文

我整天都在寻找这个问题的答案。 我正在为中等大小的 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/

有关xml - EXSLT:没有更多的 DTM ID 可用的更多相关文章

  1. ruby - 难道Lua没有和Ruby的method_missing相媲美的东西吗? - 2

    我好像记得Lua有类似Ruby的method_missing的东西。还是我记错了? 最佳答案 表的metatable的__index和__newindex可以用于与Ruby的method_missing相同的效果。 关于ruby-难道Lua没有和Ruby的method_missing相媲美的东西吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7732154/

  2. ruby-on-rails - 如何从 format.xml 中删除 <hash></hash> - 2

    我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为

  3. ruby-on-rails - rails 目前在重启后没有安装 - 2

    我有一个奇怪的问题:我在rvm上安装了ruby​​onrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(

  4. ruby - 在没有 sass 引擎的情况下使用 sass 颜色函数 - 2

    我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re

  5. ruby-on-rails - 如何使辅助方法在 Rails 集成测试中可用? - 2

    我在app/helpers/sessions_helper.rb中有一个帮助程序文件,其中包含一个方法my_preference,它返回当前登录用户的首选项。我想在集成测试中访问该方法。例如,这样我就可以在测试中使用getuser_path(my_preference)。在其他帖子中,我读到这可以通过在测试文件中包含requiresessions_helper来实现,但我仍然收到错误NameError:undefinedlocalvariableormethod'my_preference'.我做错了什么?require'test_helper'require'sessions_hel

  6. 没有类的 Ruby 方法? - 2

    大家好!我想知道Ruby中未使用语法ClassName.method_name调用的方法是如何工作的。我头脑中的一些是puts、print、gets、chomp。可以在不使用点运算符的情况下调用这些方法。为什么是这样?他们来自哪里?我怎样才能看到这些方法的完整列表? 最佳答案 Kernel中的所有方法都可用于Object类的所有对象或从Object派生的任何类。您可以使用Kernel.instance_methods列出它们。 关于没有类的Ruby方法?,我们在StackOverflow

  7. ruby-on-rails - Rails 3,嵌套资源,没有路由匹配 [PUT] - 2

    我真的为这个而疯狂。我一直在搜索答案并尝试我找到的所有内容,包括相关问题和stackoverflow上的答案,但仍然无法正常工作。我正在使用嵌套资源,但无法使表单正常工作。我总是遇到错误,例如没有路线匹配[PUT]"/galleries/1/photos"表格在这里:/galleries/1/photos/1/edit路线.rbresources:galleriesdoresources:photosendresources:galleriesresources:photos照片Controller.rbdefnew@gallery=Gallery.find(params[:galle

  8. ruby-on-rails - 有没有办法为 CarrierWave/Fog 设置上传进度指示器? - 2

    我在Rails应用程序中使用CarrierWave/Fog将视频上传到AmazonS3。有没有办法判断上传的进度,让我可以显示上传进度如何? 最佳答案 CarrierWave和Fog本身没有这种功能;你需要一个前端uploader来显示进度。当我不得不解决这个问题时,我使用了jQueryfileupload因为我的堆栈中已经有jQuery。甚至还有apostonCarrierWaveintegration因此您只需按照那里的说明操作即可获得适用于您的应用的进度条。 关于ruby-on-r

  9. ruby - 没有类方法获取 Ruby 类名 - 2

    如何在Ruby中获取BasicObject实例的类名?例如,假设我有这个:classMyObjectSystem我怎样才能使这段代码成功?编辑:我发现Object的实例方法class被定义为returnrb_class_real(CLASS_OF(obj));。有什么方法可以从Ruby中使用它? 最佳答案 我花了一些时间研究irb并想出了这个:classBasicObjectdefclassklass=class这将为任何从BasicObject继承的对象提供一个#class您可以调用的方法。编辑评论中要求的进一步解释:假设你有对象

  10. ruby - 没有轨道的 ActiveRecord 时区 - 2

    我在非Rails项目中使用ActiveRecord。在Rails中,我可以这样做:config.time_zone='EasternTime(US&Canada)'config.active_record.default_timezone='EasternTime(US&Canada)'但如果我不使用rails,我该如何设置时区? 最佳答案 ActiveRecord::Base.default_timezone='EasternTime(US&Canada)' 关于ruby-没有轨道的A

随机推荐