2009-12-29 5 views
1

Я ищу библиотеку, которая поможет мне разобрать и преобразовать DTD с помощью Python. Единственное, что я нашел до сих пор, это xmlproc, но это кажется древним и, похоже, не поддерживает сериализацию DTD. Для Java существует this, но я бы предпочел решение Python.Преобразование DTD с Python

Edit: на «сериализации» из ОТД я имею в виду, что в идеале я хотел бы быть в состоянии разобрать DTD в какой-то структуры Python, работать на этой структуре, а затем записать результат обратно в ОТД ,

+0

«Сериализация DTD»? Не являются ли только текст DTD? Что вы подразумеваете под «сериализацией DTD»? –

ответ

0

Я не знаю сквозного процессора для DTD, но потом я так редко использую DTD вообще, так что это не удивительно.

Amara может анализировать DTD, но я не знаю, какой уровень доступа вы можете иметь к ним или если результаты могут быть сериализованы. Я предполагаю, что они могут, но это не основано на реальности. libxml2, который доступен в Python как lxml - это что-то еще для исследования, но у меня есть еще меньше опыта с этим. Из документации libxml видно, что у вас будет доступ к полному DTD.

Другая возможность - преобразовать DTD в XSD с помощью one of many programs, а затем использовать обычный XML-процессор для управления деревом и вернуть его обратно в DTD. Я беспокоюсь о том, как это может быть потеряно.

При растущем уровне сложности, если вы собираетесь самостоятельно написать парсер для грамматики DTD, рассмотрите PyParsing или PLY.

0

Возможно, вам стоит рассмотреть возможность преобразования DTD в один из форматов на основе XML. В этот момент вы можете обработать его с помощью ElementTree или любого другого инструментария XML, который вы предпочитаете.

У меня был хороший опыт работы с RelaxNG, который довольно краток и прост. Там приведен список инструментов преобразования на своем сайте: http://relaxng.org/#conversion

Если вы предпочитаете схему XML, вот что имеется: http://www.w3.org/XML/Schema

Если вы имеете дело с третьей стороной документов или ОТД, это может не работать для вас , Если это внутри, сделайте снимок. Схемы на основе XML гораздо приятнее для работы.