Как правильно использовать GenerateDS для привязки DDEX XML

Меня интересует привязка Python XML для чтения входных файлов, соответствующих этой схеме: http://ddex.net/xml/ern/341/release-notification.xsd

Этот XSD зависит от ряда других, но самое главное: http://ddex.net/xml/20120404/ddexC.xsd и http://ddex.net/xml/20120404/ddex.xsd

Моя первая попытка с использованием generateDS. Я могу успешно сгенерировать привязку для release-messages.xsd, если я использую --no-process-includes с:

./generateDS.py --no-process-includes -o release-notification.py release-notification.xsd

Однако это оставляет меня с объектом Python, который в основном бесполезен, так как большинство ComplexTypes определены в ddexC.xsd.

Если я попробую это без --no-process-includes, я получу:

RuntimeError: Extension/restriction recursion detected.
Suggest you check definitions of types ArtistRole and ArtistRole.

Определение, на которое ссылаются, является этим:

<xs:element name="ArtistRole" maxOccurs="unbounded" type="ddexC:ArtistRole">
....
<xs:complexType name="ArtistRole">
      <xs:simpleContent>
         <xs:extension base="ddex:ArtistRole">
....

Поэтому кажется, что пространства имен ddex и ddexC каким-то образом перепутаны, и создается циклическая ссылка.

Любой совет здесь?

2 ответа

Вы можете проверить https://github.com/ddexnet котором есть скрипт ddex lint, который вы можете использовать для генерации полных объектов Python, которые проверяются по полной схеме ERN, расположенной по адресу http://ddex.net/xml/2010/ern-main/32.

(Линтер также использует пространство имен ddexC под капотом).

Я создал объектную модель для сообщения New Release как часть DDEXUI, над которой я работаю, и который может вам помочь. Модуль ddex должен дать вам то, что вы можете использовать. Я планирую раздеть его в отдельный модуль в какой-то момент. Пример того, как его использовать, см. В тестовой директории.

Другие вопросы по тегам