无法生成类,因为找不到具有复杂类型的顶级元素

时间:2016-08-10 06:20:28

标签: c# xml xsd xsd.exe

我正在尝试使用xsd.exe从xsd文件创建类,但得到这个:

  

警告:无法生成类,因为找不到具有复杂类型的顶级元素。

<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2008 sp1 (http://www.altova.com) by (EMBRACE) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://comp.com/service/model/extension" targetNamespace="http://comp.com/service/model/extension">
    <xs:complexType name="attachment">
        <xs:sequence>
            <xs:element name="fileIdentifier" type="xs:string" minOccurs="0"></xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="metadataSystem">
        <xs:sequence>
            <xs:element name="activityId" type="xs:string" minOccurs="0"></xs:element>
            <xs:element name="from" type="xs:long" minOccurs="0"></xs:element>
            <xs:element name="href" type="xs:string" minOccurs="0"></xs:element>
            <xs:element name="performers" type="xs:long" minOccurs="0"></xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:schema>

我有哪些顶级元素? 如果我添加:

<xs:element name="attachment" type="attachment" />

我明白了:

  

缺少类型“附件”

This question没有帮助,添加元素标记会抛出新错误。

1 个答案:

答案 0 :(得分:0)

声明元素时,必须使用其完全限定名称引用类型,即绑定到目标命名空间的前缀ns1attachment之前丢失输入属性。

这是常见的混淆源,因为类型声明( name 属性)总是仅使用本地名称完成,命名空间部分始终是架构的目标命名空间(如果可用)

<xs:element name="attachment" type="ns1:attachment" />

如果类型的名称空间被声明为具有xmlns属性的默认名称空间,则只能省略前缀。