在我目前的项目中,我们拥有一个最初以书籍形式发布的大型内容库。这些内容大部分都是用英语和许多外语发布的,主要使用Quark Express和后来的InDesign。此内容已导出到自定义XML结构中以供存储和将来使用。问题在于,英文XML随着时间的推移被导出,然后在结构和元数据中被编辑器增强,这使得外语XML的结构与英文版不同。例如:
英文XML:
<chapter meta="meta data added">
<section meta="some meta about the section">
<paragraph>some english paragraph</paragraph>
<list>
<li>some english list item</li>
</list>
</section>
</chapter>
外国XML:
<chapter>
<section>
<paragraph>some original foreign language paragraph</paragraph>
</section>
</chapter>
正如您所看到的,有时缺少元素以及缺少属性。问题在于,我们希望将外语结构与英语进行比较,添加缺少的元数据属性和元素,然后报告XML的非翻译部分。
当前完成此操作的过程涉及剥离元素数据并将其放入Web应用程序中。从那里我允许用户进入并匹配外语段与其英语对应物(使用Jquery允许他们只需单击该项然后匹配)并将此数据保存为属性(通过唯一ID)。那时我知道两个语言文档之间哪些元素匹配,然后我可以将外语内容流入英语结构化XML。这使我在英语结构化XML中留下了外语内容(由uniqueID标记),我可以查询没有唯一ID的元素,这样我就可以知道哪些项目需要翻译。
此过程运行正常,但它非常手动,需要有人进入并手动点击段落。通过几十万页的内容,我正在寻找进一步自动化过程的方法。是否有更好的方法来比较XML文档的结构,以便可以用较少的人工干预完成上述目标?
当前进程使用C#,ASP.Net,Linq to XML和Jquery等。但语言和工具无关紧要!我只是想找到一个更自动化的解决方案。如果它使用DB,没问题。如果我们需要切换平台,我不介意。这是实施问题而不是语言问题。谢谢!
答案 0 :(得分:1)
过去,我使用XSLT将两段XML转换为通用格式,然后将它们与文本差异工具(Beyond Compare)进行比较。
即使您需要外部数据进行转换,这也适用于您 - 您可以使用.NET XslCompiledTransform类将外部数据传递给XSL转换,可以将其作为转换参数进行访问。