2010-03-09 5 views
1

Dans mon projet actuel, nous avons un grand référentiel de contenu qui a été initialement publié sous forme de livre. Une grande partie de ce contenu a été publié en anglais et dans de nombreuses langues étrangères, en utilisant principalement Quark Express et plus tard InDesign. Ce contenu a été exporté dans une structure XML personnalisée pour le stockage et l'utilisation future. Le problème est que le XML anglais a été exporté puis amélioré dans la structure et les métadonnées au fil du temps par les éditeurs, ce qui a laissé la structure du XML en langue étrangère différente de la version anglaise. Par exemple:Une meilleure façon de comparer les documents XML?

Anglais 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 étranger:

<chapter> 
    <section> 
     <paragraph>some original foreign language paragraph</paragraph> 
    </section> 
</chapter> 

Comme vous pouvez le voir, il y a parfois éléments manquants ainsi que attributs manquants. Le problème est qu'à ce stade, nous voulons comparer la structure de la langue étrangère à l'anglais, ajouter les attributs et les éléments de métadonnées manquants, puis faire un rapport sur les parties non traduites du XML.

Le processus actuel consiste à supprimer les données de l'élément et à les placer dans une application Web. De là, je permets à un utilisateur d'entrer et de faire correspondre un paragraphe de langue étrangère avec son homologue anglais (en utilisant Jquery pour leur permettre de cliquer sur l'élément puis la correspondance) et sauvegarder ces données en tant qu'attribut (par ID unique). À ce stade, je sais quels éléments correspondent entre les documents en deux langues et puis je peux transmettre le contenu en langue étrangère dans le XML structuré anglais. Cela me laisse avec le contenu en langue étrangère (marqué par uniqueID) à l'intérieur du XML structuré anglais que je peux interroger pour les éléments sans un identifiant unique afin que je puisse savoir quels éléments doivent être traduits.

Ce processus fonctionne très bien, mais il est assez manuel, nécessitant quelqu'un d'entrer et de cliquer à la main sur les paragraphes. Avec des centaines de milliers de pages de contenu à parcourir, je cherche des moyens d'automatiser davantage le processus. Existe-t-il de meilleurs moyens de comparer les documents XML pour la structure afin que les objectifs ci-dessus puissent être complétés avec moins d'intervention manuelle?

Le processus actuel utilise entre autres C#, ASP.Net, Linq to XML et Jquery. Mais le langage et les outils ne sont pas pertinents! Je veux juste trouver une solution plus automatisée. S'il utilise une base de données, pas de problème. Si nous devons changer de plateforme, cela ne me dérange pas. C'est une question de mise en œuvre plutôt que de langage. Merci!

Répondre

1

Dans le passé, j'ai utilisé XSLT pour transformer deux morceaux de XML dans un format commun avant de les comparer avec un outil de diff textuel (Beyond Compare). Cela peut fonctionner pour vous même si vous avez besoin de données externes pour effectuer la conversion - vous pouvez transmettre des données externes à une transformation XSL à l'aide de la classe .NET XslCompiledTransform, où vous pouvez accéder en tant que paramètres de la transformation.

+0

Cela semble très intéressant pour moi. Quel type de données externes passez-vous dans la transformation? Je ne suis pas sûr de suivre cette partie de votre réponse. –

+0

@TimC: vous pourriez passer beaucoup de choses différentes si vous le vouliez. Je ne le mentionne que parce que vous dites que votre processus actuel utilise "C#, ASP.Net, Linq to XML et Jquery entre autres choses". Je pensais que vous pourriez les utiliser parce que vous aviez besoin de données supplémentaires avant de pouvoir traiter le XML. Un exemple serait si vous avez besoin d'une ou plusieurs tables de recherche avant de pouvoir exécuter la transformation - vous pouvez passer dans les tables de recherche en tant que documents XML qui pourraient être référencés pendant la transformation. –

Questions connexes