简要评测SDL Trados Studio 2019的第二代XML处理引擎

简谈SDL Trados Studio 2019的第二代XML处理引擎

在最新版本的SDL Studio 2019 SR2版本中加入了第二代XML处理引擎,同时此版本保留了第一代引擎,因为第二代目前还是测试阶段,目前官方文档中也没有对第二代引擎做过多的描述,只是说第二代和第一代处理结果一致,长远来看未来第二代肯定会全线替换第一代引擎。

第一代引擎起源于Trados Studio的第一个版本2009,距今已有近10年的历史,期间一直在打补丁,随着漫长的时间 补丁难度越来越大 代码越来越臃肿,SDL不得已终于决定痛改这个引擎,推出了第二代引擎。
简要评测SDL Trados Studio 2019的第二代XML处理引擎
简要评测SDL Trados Studio 2019的第二代XML处理引擎
简要评测SDL Trados Studio 2019的第二代XML处理引擎

首先由于XML的开放性因此XML引擎是很多文件解析器的基础例如DITA,RESX,ITS等

我们来直观对比一下
现在的新建类型的选择是非常多的
简要评测SDL Trados Studio 2019的第二代XML处理引擎
第一代
简要评测SDL Trados Studio 2019的第二代XML处理引擎
简要评测SDL Trados Studio 2019的第二代XML处理引擎
简要评测SDL Trados Studio 2019的第二代XML处理引擎简要评测SDL Trados Studio 2019的第二代XML处理引擎
简要评测SDL Trados Studio 2019的第二代XML处理引擎

第二代
简要评测SDL Trados Studio 2019的第二代XML处理引擎简要评测SDL Trados Studio 2019的第二代XML处理引擎
简要评测SDL Trados Studio 2019的第二代XML处理引擎
简要评测SDL Trados Studio 2019的第二代XML处理引擎从图片可见,第二代引擎的设置上最显著的一个变化是将文件类型的决定步骤,包括根节点xml命名空间等,放在了TAG设置的前面,这样是更为合理的,之前第一代是先设置TAG再决定文件类型。

另外一点第二代引擎单独给出一套模板支持带命名空间的XML,这样优化了设置。
简要评测SDL Trados Studio 2019的第二代XML处理引擎简要评测SDL Trados Studio 2019的第二代XML处理引擎简要评测SDL Trados Studio 2019的第二代XML处理引擎简要评测SDL Trados Studio 2019的第二代XML处理引擎
简要评测SDL Trados Studio 2019的第二代XML处理引擎我这里采用了一个接近2MB的大型XML文件约25W字进行试验
试验结果表明
第二代处理引擎文件转换的速度要比第一代慢
但是后续的文件分析和预翻译速度要比第一代快
另外第一代引擎生成的sdlxliff文件大小是16MB而第二代生成的sdlxliff是12MB,同样的文件体积小了4MB,有了更好的优化

再看xml嵌入内容的处理

第一代引擎的嵌入内容最开始是整合在Parser中的,根据CDATA或Document Structre Information使用规则处理
简要评测SDL Trados Studio 2019的第二代XML处理引擎
在2014还是2015版引入了独立的Embedded Content Processor作为升级版
简要评测SDL Trados Studio 2019的第二代XML处理引擎
在第二代引擎中,这个功能得到了很大的改进,沿用Embedded Content Processor但是可以根据CDATA或Document Structre Information或者指定单独TAG(XPATH)选取和使用规则
简要评测SDL Trados Studio 2019的第二代XML处理引擎
简要评测SDL Trados Studio 2019的第二代XML处理引擎

另外对于XML实体设置页面也进行了优化更直观的显示和选择,并且可以单独指定一个实体的读取和写入规则

旧版
简要评测SDL Trados Studio 2019的第二代XML处理引擎
新版
简要评测SDL Trados Studio 2019的第二代XML处理引擎

我们进一步从架构上来分析看看

简要评测SDL Trados Studio 2019的第二代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两个类别,这是本质的区别

左边是一代右边是二代
简要评测SDL Trados Studio 2019的第二代XML处理引擎
从引用关系中看到第一代引擎使用了 net.xmlcatalog库和CodePlex.XPathParser,但是在第二代中没有看到这些引用

从代码结构来看第二代引擎更抽象,因此基于次引擎的扩展会更容易,并且未来的补丁和修正要比第一代容易,总来来说第二代引擎替换第一代是未来趋势,第一代不久后肯定会被放弃,劝大家早日熟悉和使用第二代引擎。