Xsd 如何正确使用Generated进行DDEX XML绑定

Xsd 如何正确使用Generated进行DDEX XML绑定,xsd,xml-parsing,xml-binding,ddex,python-generateds,Xsd,Xml Parsing,Xml Binding,Ddex,Python Generateds,我对用于读取符合此模式的输入文件的Python XML绑定感兴趣: 不过,最重要的是,此XSD依赖于许多其他XSD: 和 我的第一次尝试是使用。如果使用,我能够成功生成release-notification.xsd的绑定--没有包含以下内容的流程: ./generateDS.py --no-process-includes -o release-notification.py release-notification.xsd 然而,这给我留下了一个Python对象,它基本上是无用的,因为

我对用于读取符合此模式的输入文件的Python XML绑定感兴趣:

不过,最重要的是,此XSD依赖于许多其他XSD: 和

我的第一次尝试是使用。如果使用,我能够成功生成release-notification.xsd的绑定--没有包含以下内容的流程:

./generateDS.py --no-process-includes -o release-notification.py release-notification.xsd
然而,这给我留下了一个Python对象,它基本上是无用的,因为大多数ComplexTypes都是在中定义的

如果我在没有过程包括的情况下尝试,我会得到:

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名称空间似乎以某种方式混合在一起,并创建了一个循环引用

这里有什么建议吗?

您可能想查看哪个具有ddex lint脚本,您可以使用该脚本生成完整的python对象,这些对象根据位于的完整ERN模式进行验证


(linter也使用了引擎盖下的ddexC名称空间)。

我已经为新的发布消息创建了一个对象模型,作为我正在处理的一部分,它可能会帮助您,ddex模块应该会给您一些您可以使用的东西。我计划在某个时候将其剥离到一个单独的模块中。有关如何使用它的示例,请参见测试目录