【问题标题】:XML Schema not working with Web Service Software FactoryXML Schema 不适用于 Web 服务软件工厂
【发布时间】:2010-02-02 17:54:52
【问题描述】:

我正在尝试创建一个 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 一起使用的递归模式的建议也将不胜感激。

【问题讨论】:

    标签: c# wcf xsd service-factory


    【解决方案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>
    

    您也可以尝试在 中将 更改为

    【讨论】:

    • @fiburt:感谢您的帮助,但我尝试了这个并得到“无法导入命名空间'tempuri.org/XMLSchema.xsd'中的“类型'Person'。根序列上的'minOccurs'必须为1。要么更改架构,以便类型可以映射到数据协定类型或使用 ImportXmlType 或使用不同的序列化程序。"
    猜你喜欢
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多