Xmlstruct : extraire et comparer la structure de documents xml

Description

Ca fait un bout de temps que je cherche à faire une version française du célèbre Robot de discussion Alice. Il existe certes des jeux AIML en français, mais je n'ai jamais réussi à les faire fonctionner. Or depuis Septembre 2007, il existe une version DotNet d'Alice avec les sources, j'ai converti le code en VB ici :
http://patrice.dargenton.free.fr/ia/alice/alicechatbot.html

Une nouvelle tentative est donc possible, et pour la première fois avec les sources complètes en VB, ce qui devrait permettre d'aller plus loin dans le diagnostique de la version française. L'idée de base est d'analyser la structure des documents aiml qui fonctionne effectivement en anglais, avec l'objectif de vérifier et d'appliquer, le cas échéant, la structure correcte aux fichiers aiml en français. Il se trouve qu'il existe un schéma xsd officiel pour valider les fichiers aiml, mais en pratique, aucun des jeux testés ne respectent complètement le schéma officiel ! (voir la doc. d'AliceVB).

Une solution plus pragmatique consiste donc à déduire le schéma selon le dernier jeu AIML qui fonctionne. Pour cela, il faut fusionner l'ensemble des fichiers aiml afin d'avoir la liste complète des formats rencontré (un simple copy /b *.aiml Cumul.aiml suffit, à condition de retirer la balise d'entête et de fin de chaque fichier, cela fonctionne si l'encodage des fichiers est identique).

En répétant la manipulation avec les fichiers en français, on obtient cette fois le schéma utilisé en français. Cependant, la comparaison des schémas Anglais et Français est à peu près illisible via l'utilitaire WinDiff. D'où l'idée de comparer plutôt via le DTD (Document Type Definition), lequel est un schéma simplifié beaucoup plus lisible. Le seul problème est que le DTD ne permet pas de gérer l'aspect récursif (hiérarchique) des fichiers aiml. Cependant, on peut contourner cette limite en renommant avec un numéro les balises susceptibles d'apparaître à plusieurs niveaux, de façon à les dissocier et à faire disparaître complètement l'aspect récursif de la structure AIML. Les fichiers AIML ainsi mis à plat ne fonctionneront plus avec le robot de discussion, mais on pourra alors extraire la DTD et vérifier, d'une part que les fichiers transformés respectent bien leur DTD (pour voir si l'extraction DTD est juste), et ensuite comparer leur DTD plus facilement qu'avec leur schéma xsd. Je n'ai pas trouvé de logiciel pour extraire le DTD (sauf peut être TRANG, cf. lien dans la doc.), alors j'en ai conçu un, mais en ignorant les attributs dans cette première version.

Voici donc un ensemble d'utilitaires pour comparer la structure de fichiers xml via WinDiff.

Source / Exemple :


Cf. zip.

Codes Sources

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.