2009-12-29 16 views
1

Je cherche une bibliothèque pour m'aider à analyser et à transformer des DTD en utilisant Python. La seule chose que j'ai trouvé jusqu'à présent est xmlproc, mais cela semble ancien et ne semble pas supporter la sérialisation des DTD. Il y a this pour Java mais je préfère une solution Python.Transformer des DTD avec Python

Edit: par « sérialisation » de DTDs Je veux dire que, idéalement, je voudrais être en mesure d'analyser la DTD à une sorte de structure Python, fonctionner sur cette structure, puis écrire le résultat à une DTD .

+0

"sérialisation des DTD"? Le texte de la DTD n'est-il pas juste? Qu'entendez-vous par "sérialisation des DTD"? –

Répondre

0

Je ne connais pas de processeur de bout en bout pour les DTD, mais là encore, je n'utilise que rarement des DTD, ce qui n'est pas surprenant.

Amara peut analyser les DTD, mais je ne sais pas quel niveau d'accès vous pouvez avoir ou si les résultats peuvent être sérialisés. Je suppose qu'ils le peuvent, mais ce n'est pas basé sur la réalité. libxml2, qui est disponible en Python comme lxml est quelque chose d'autre à étudier, mais j'ai encore moins d'expérience avec cela. Il semble à partir de la documentation libxml que vous auriez accès à la DTD complète.

Une autre possibilité est de convertir la DTD en XSD avec one of many programs puis d'utiliser un processeur XML standard pour manipuler l'arbre et le renvoyer à la DTD. Je m'inquiète de la perte que cela pourrait être. À un niveau croissant de difficulté, si vous voulez écrire un analyseur vous-même pour la grammaire DTD, considérez PyParsing ou PLY.

0

Vous pouvez envisager de convertir votre DTD en l'un des formats XML. À ce stade, vous pouvez le traiter avec ElementTree, ou n'importe quelle boîte à outils XML que vous préférez.

J'ai eu une bonne expérience avec RelaxNG, qui est assez concis et simple. Il y a une liste d'outils de conversion sur son site: http://relaxng.org/#conversion

Si vous préférez le schéma XML, voici ce qui est disponible: http://www.w3.org/XML/Schema

Si vous avez affaire à des documents de tiers ou DTD, cela ne peut travailler pour vous . Si c'est à l'interne, essayez-le. Les schémas XML sont beaucoup plus agréables à utiliser.