[英]A better way to compare XML docs?
在我当前的项目中,我们有一个庞大的内容存储库,最初以书本形式发布。 这些内容大部分以英文和多种外文发布,主要使用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等。 但是语言和工具无关紧要! 我只想找到一个更自动化的解决方案。 如果使用数据库,则没有问题。 如果我们需要切换平台,我不在乎。 这是实现问题,而不是语言问题。 谢谢!
过去,我曾使用XSLT将两段XML转换为一种通用格式,然后再与文本diff工具( Beyond Compare ) 进行比较 。
即使您需要外部数据进行转换,这也可以为您工作-您可以使用.NET XslCompiledTransform类将外部数据传递到XSL Transform,在该类中可以将其作为转换参数进行访问。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.