我对用于读取符合此架构的输入文件的 Python XML 绑定感兴趣:http: //ddex.net/xml/ern/341/release-notification.xsd
不过,此 XSD 依赖于许多其他 XSD,最重要的是:http: //ddex.net/xml/20120404/ddexC.xsd和 http://ddex.net/xml/20120404/ddex.xsd
我的第一次尝试是使用generateDS。如果我使用 --no-process-includes ,我能够成功地为 release-notification.xsd 生成绑定:
./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 命名空间以某种方式混合在一起,并创建了一个循环引用。
这里有什么建议吗?