代码之家  ›  专栏  ›  技术社区  ›  Tim C

比较XML文档的更好方法?

  •  1
  • Tim C  · 技术社区  · 14 年前

    在我当前的项目中,我们有一个大型的内容存储库,最初是以书籍形式发布的。这些内容大多以英语和多种外语出版,主要使用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中保留了外语内容(用unique id标记),我可以查询没有唯一ID的元素,这样我就可以知道哪些项目需要翻译。

    这个过程可以很好地工作,但是它是相当手工的,需要有人进入并手动点击段落。随着几十万页的内容需要浏览,我正在寻找进一步实现过程自动化的方法。是否有更好的方法来比较XML文档的结构,以便在较少的人工干预下完成上述目标?

    当前进程使用C、ASP.NET、Linq to XML和JQuery等。但是语言和工具是无关的!我只想找到一个更自动化的解决方案。如果它使用数据库,没问题。如果我们需要交换平台,我不介意。它是一个实现问题,而不是语言问题。谢谢!

    1 回复  |  直到 14 年前
        1
  •  1
  •   John Saunders    14 年前

    在过去,我使用XSLT将两段XML转换为一种通用格式,然后将它们与文本差异工具进行比较。( Beyond Compare )

    即使您需要外部数据来进行转换,这也可以为您工作-您可以使用.NET XSLCompiledTransform类将外部数据传递给XSL转换,在该类中可以将其作为转换的参数进行访问。