XML Schema无法与Web Service Software Factory一起使用

时间:2010-02-02 17:54:52

标签: c# wcf xsd service-factory

我正在尝试创建一个与Web服务软件工厂一起使用的XML架构。这是一个相当简单的模式,只是一组人物对象。 (简化)模式文件如下所示:

<?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>

这是一个简单的人物元素集合,其中包含一个名为Persons的父元素。

当我尝试验证我的.serviceContract文件时,我收到错误'文件名'Persons.xsd'不符合DataContactSerializer'。

是否有人知道如何修复此架构以便它可以与Web服务软件工厂一起使用?而对于奖励积分,我不得不担心的下一个结构将是一个递归的公司列表。关于如何制作适用于WSSF的递归模式的任何建议也将受到赞赏。

1 个答案:

答案 0 :(得分:1)

您是否已尝试避免使用命名类型?

<?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>

您也可以尝试更改&lt; xs:all&gt;到&lt;序列&gt;在你的&lt; Person&gt;。