Я пытаюсь использовать spyne из основной ветки, поскольку выпущенные версии несовместимы с python3, и у меня есть модели, определенные следующим образом:
class currency(ComplexModel):
data = XmlData(Decimal)
class mntCurrency(currency):
code = XmlAttribute(String)
class CreditLmt(ComplexModel):
curr = mntCurrency
Я подключил эти модели к простой службе HelloWorld, которая возвращает CreditLmt в ответ. Но когда я пытаюсь запустить свой мыльный сервер, spyne жалуется на следующее:
lxml.etree.XMLSchemaParseError: Элемент '{http://www.w3.org/2001/XMLSchema}extension': содержимое недействительно. Ожидается (аннотация?, ((группа | все | выбор | последовательность)?, ((атрибут | группа атрибутов)*, любой атрибут?)))., строка 16
Это правильно, потому что spyne генерирует следующий xsd:
<xs:complexType name="mntCurrency">
<xs:complexContent>
<xs:extension base="tns:currency">
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute name="code" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
<xs:sequence>
<xs:element name="test" type="xs:token" minOccurs="0" nillable="true"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
Я использую XmlData, потому что хочу получить такой ответ:
<tns:currency code="826">10.0</tns:currency>
Итак, как мне определить мои модели?