2010-03-09 103 views
1

在我目前的項目中,我們有一個最初以書籍形式發佈的大型內容存儲庫。大部分內容都以英文和許多外語發佈,主要使用Quark Express和後來的InDesign。此內容已導出到自定義XML結構以供存儲和將來使用。問題在於,英文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到XML和Jquery等等。但語言和工具無關緊要!我只想找到一個更自動化的解決方案。如果它使用數據庫,沒問題。如果我們需要切換平臺,我不介意。這是一個實施問題,而不是語言問題。謝謝!

回答

1

在過去,我已經使用XSLT將兩段XML轉換爲通用格式,然後再與文本比較工具(Beyond Compare)進行比較。

即使您需要外部數據執行轉換,也可以爲您工作 - 您可以使用.NET XslCompiledTransform類將外部數據傳遞到XSL Transform,在該類中可以作爲變換的參數進行訪問。

+0

這聽起來很有趣。你將什麼樣的外部數據傳遞給變換?我不確定我是否遵循你的迴應。 – 2010-03-09 23:18:09

+0

@TimC:如果你願意,你可以傳遞許多不同的東西。我只提到它,因爲你說當前的進程使用「C#,ASP.Net,Linq到XML和JQuery等等」。我想你可能會使用它們,因爲在處理XML之前需要額外的數據。例如,如果在運行轉換之前需要一個或多個查找表,則可以將查找表作爲可在轉換期間引用的XML文檔傳遞。 – 2010-03-10 00:19:17