如何生成扩展simpleType的complexType

2024-06-16 14:30:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须用spyne实现一个公开特定wsdl的服务

现在我无法复制这个定义:

<xs:complexType name="MyType">
    <xs:simpleContent>
        <xs:extension base="xs:string">
            <xs:attribute name="version" type="xs:string"/>
        </xs:extension>
    </xs:simpleContent>
</xs:complexType>

到目前为止,我能做到的最好的是

class MyType(ComplexModel):
    __namespace__ = "uri:my-ns"
    __extends__ = primitive.Unicode
    version = XmlAttribute(primitive.Unicode)

它引发了AttributeError,但如果我“修补”models/complex.py[1],我得到:

<xs:complexType name="MyType">
    <xs:complexContent>
         <xs:extension base="xs:string">
              <xs:attribute name="version " type="xs:string"/>
         </xs:extension>
    </xs:complexContent>
</xs:complexType>

快到了!但是我的complexType有一个complexContent而不是一个simpleContent

[1]我正在使用spyne的主分支(0f587b2d606b54e41fc5cc3d33b51cc3b324a2ca),如果我添加__extends__ = primitive.Unicode,我需要将model/complex.py的第602行从:

if eattr._subclasses is None

if getattr(eattr, "_subclasses", None) is None

Tags: namenonebasestringversionextensionunicodeattribute