【发布时间】:2019-08-18 17:20:25
【问题描述】:
我正在尝试使用 master 分支中的 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':内容不是 有效的。预期是(注释?,((组|全部|选择|序列)?, ((attribute | attributeGroup)*, anyAttribute?))).,第 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>
那么我该如何定义我的模型呢?
【问题讨论】: