简要评测SDL Trados Studio 2019的第二代XML处理引擎
简谈SDL Trados Studio 2019的第二代XML处理引擎
在最新版本的SDL Studio 2019 SR2版本中加入了第二代XML处理引擎,同时此版本保留了第一代引擎,因为第二代目前还是测试阶段,目前官方文档中也没有对第二代引擎做过多的描述,只是说第二代和第一代处理结果一致,长远来看未来第二代肯定会全线替换第一代引擎。
第一代引擎起源于Trados Studio的第一个版本2009,距今已有近10年的历史,期间一直在打补丁,随着漫长的时间 补丁难度越来越大 代码越来越臃肿,SDL不得已终于决定痛改这个引擎,推出了第二代引擎。
首先由于XML的开放性因此XML引擎是很多文件解析器的基础例如DITA,RESX,ITS等
我们来直观对比一下
现在的新建类型的选择是非常多的
第一代
第二代从图片可见,第二代引擎的设置上最显著的一个变化是将文件类型的决定步骤,包括根节点xml命名空间等,放在了TAG设置的前面,这样是更为合理的,之前第一代是先设置TAG再决定文件类型。
另外一点第二代引擎单独给出一套模板支持带命名空间的XML,这样优化了设置。我这里采用了一个接近2MB的大型XML文件约25W字进行试验
试验结果表明
第二代处理引擎文件转换的速度要比第一代慢
但是后续的文件分析和预翻译速度要比第一代快
另外第一代引擎生成的sdlxliff文件大小是16MB而第二代生成的sdlxliff是12MB,同样的文件体积小了4MB,有了更好的优化
再看xml嵌入内容的处理
第一代引擎的嵌入内容最开始是整合在Parser中的,根据CDATA或Document Structre Information使用规则处理
在2014还是2015版引入了独立的Embedded Content Processor作为升级版
在第二代引擎中,这个功能得到了很大的改进,沿用Embedded Content Processor但是可以根据CDATA或Document Structre Information或者指定单独TAG(XPATH)选取和使用规则
另外对于XML实体设置页面也进行了优化更直观的显示和选择,并且可以单独指定一个实体的读取和写入规则
旧版
新版
我们进一步从架构上来分析看看
第二代引擎的程序集就是这些
第一代引擎属于Sdl.FileTypeSupport下的Native 类(Sdl.FileTypeSupport下分Native 和Bilingual两个类别)文件集是 Sdl.FileTypeSupport.Native.Xml_1_2.dll
其中XmlParser继承自AbstractNativeFileParser, INativeContentCycleAware, ISettingsAware, ISubContentPublisher
第二代引擎独立出来在Sdl.FileTypeSupport.Filters下面文件集是 Sdl.FileTypeSupport.Filters.Xml_2.dll
其中XmlParser继承自AbstractNativeFileParser, INativeContentCycleAware, ISettingsAware, ISubContentPublisher
AbstractBilingualFileTypeComponent, IBilingualParser, IParser, IDisposable, IBilingualFileTypeComponent, INativeContentCycleAware, ISettingsAware, IPublishSubcontent, ISubContentPublisher
也就是说属于Bilingual两个类别,这是本质的区别
左边是一代右边是二代
从引用关系中看到第一代引擎使用了 net.xmlcatalog库和CodePlex.XPathParser,但是在第二代中没有看到这些引用
从代码结构来看第二代引擎更抽象,因此基于次引擎的扩展会更容易,并且未来的补丁和修正要比第一代容易,总来来说第二代引擎替换第一代是未来趋势,第一代不久后肯定会被放弃,劝大家早日熟悉和使用第二代引擎。