代码之家  ›  专栏  ›  技术社区  ›  Jeff Hornby

XML架构不适用于Web服务软件工厂

  •  3
  • Jeff Hornby  · 技术社区  · 15 年前

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

    <?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元素集合,父元素名为person s。

    当我试图验证我的.serviceContract文件时,出现错误“文件名persons.xsd”与DataContactSerializer不兼容。

    有人知道如何修复这个模式,以便它能与web服务软件工厂一起工作吗?对于加分,我要担心的下一个结构是公司的递归列表。关于如何生成与wssf一起工作的递归模式的任何建议也将受到赞赏。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Filburt kukabuka    15 年前

    你已经试过避免命名类型了吗?

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

    此外,您还可以尝试将<person>中的<xs:all>更改为<sequence>。