Вы получаете сообщение об ошибке, потому что xsd:restriction
недопустимо в качестве дочернего элемента xsd:element
.Попробуйте добавить xsd:restriction
к xsd:simpleType
, а затем укажите этот тип в xsd:element
.
Вы могли бы добавить xsd:simpleType
непосредственно к xsd:element
, но, поскольку вы используете одно и то же ограничение 3 раза, имеет смысл поместить его в simpleType внеэлементы.
Вот пример.Я назвал простой тип "stackOverflowTest":
<xsd:schema elementFormDefault="qualified" version="1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="company_donation_request" type="company_donation_requestType" />
<xsd:complexType name="company_donation_requestType">
<xsd:sequence>
<xsd:element name="order" type="orderType"></xsd:element>
<xsd:element name="donation" type="donationType"></xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="donationType">
<xsd:sequence>
<xsd:element name="campaign_key" type="stackOverflowTest" minOccurs="1" maxOccurs="1"/>
<xsd:element name="amount" type="xsd:decimal" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="orderType">
<xsd:sequence>
<xsd:element name="id" type="stackOverflowTest" minOccurs="1" maxOccurs="1"/>
<xsd:element name="fulfillment_date" type="stackOverflowTest" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="stackOverflowTest">
<xsd:restriction base="xsd:string">
<xsd:minLength value="2"/>
<xsd:maxLength value="255"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
Надеюсь, это поможет.