我正在尝试创建一个 XML 架构以与 Web 服务软件工厂一起使用。这是一个相当简单的模式,只是一组人员对象。 (简化的)架构文件如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd"
elementFormDefault="qualified"
xmlns="http://tempuri.org/XMLSchema.xsd"
xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Persons" type="PersonsType" />
<xs:complexType name="PersonsType">
<xs:sequence>
<xs:element name="Person" type="PersonType" minOccurs="0"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="PersonType">
<xs:all>
<xs:element name="PersonName" type="xs:string" />
<xs:element name="PersonAge" type="xs:integer" />
</xs:all>
</xs:complexType>
</xs:schema>
它是 person 元素的简单集合,父元素称为 Persons。
当我尝试验证我的 .serviceContract 文件时,出现错误“文件名‘Persons.xsd’不符合 DataContactSerializer”。
有谁知道如何修复这个模式,以便它可以与 Web 服务软件工厂一起工作?对于奖励积分,我必须担心的下一个结构将是公司的递归列表。对于如何制作适用于 WSSF 的递归模式的任何建议,我们也将不胜感激。
最佳答案
您是否已尝试避免命名类型?
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd"
elementFormDefault="qualified"
xmlns="http://tempuri.org/XMLSchema.xsd"
xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Persons">
<xs:complexType>
<xs:sequence>
<xs:element name="Person" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:all>
<xs:element name="PersonName" type="xs:string" />
<xs:element name="PersonAge" type="xs:integer" />
</xs:all>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
您也可以尝试将
关于c# - XML 模式不适用于 Web 服务软件工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2186357/