简要评测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,但是在第二代中没有看到这些引用

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Visual Studio 2019中实现socket通信,需要添加ws2_32.lib库。可以通过在工程下添加ws2_32.lib来引用该库。同时,在代码中使用头文件#include <WinSock2.h>来包含所需的功能。 在使用socket通信时,需要注意版本问题。在Visual Studio 2019中,由于版本的原因,原先的代码sockAddr.sin_addr.S_addr = inet_addr("127.0.0.1");可能会导致编译错误。可以将其改为sockAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");以解决这个问题。 此外,为了确保编译成功,还可以将属性->C/C++->常规->SDL检查设置为否。这样可以避免一些与SDL检查相关的编译问题。 总结起来,在Visual Studio 2019中实现socket通信,需要添加ws2_32.lib库,使用#include <WinSock2.h>头文件,并将原始代码中的sockAddr.sin_addr.S_addr = inet_addr("127.0.0.1");改为sockAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");。同时,根据需要可以将属性->C/C++->常规->SDL检查设置为否。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Visual Studio 2019 C++实现socket通信,添加ws2_32.lib库,新手代码](https://blog.csdn.net/xiaoye_csdn/article/details/90946634)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值