我正在尝试使用 XSD.EXE 工具从 xsd 文件创建一个类。但由于某种原因我收到此错误。
警告:无法生成类,因为没有顶级元素
发现复杂类型。
我环视了堆栈,发现我可以在复杂类型元素上放置一个类型,但我似乎无法让我工作。这是 xsd 文件
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.unece.org/cefact/namespaces/StandardBusinessDocumentHeader"
xmlns="http://www.unece.org/cefact/namespaces/StandardBusinessDocumentHeader"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:complexType name="DocumentIdentification">
<xs:sequence>
<xs:element name="Standard" type="xs:string"/>
<xs:element name="TypeVersion" type="xs:string"/>
<xs:element name="InstanceIdentifier" type="xs:string"/>
<xs:element name="Type" type="xs:string"/>
<xs:element name="MultipleType" type="xs:boolean" minOccurs="0"/>
<xs:element name="CreationDateAndTime" type="xs:dateTime"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
Thanks!
您的 XSD 仅定义了一种类型(正如 Sergio 也建议的那样)。因此,它不能用于 XML 验证,除非它是由另一个 XSD 导入的。同样,其他工具如xsd.exe
将无法用它做任何明智的事情。
您可以将此与具有接口定义但没有接口实现的 C# 库进行比较。
您可以通过多种方式解决此问题。考虑到您当前的代码,我会建议一些类似的内容:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.unece.org/cefact/namespaces/StandardBusinessDocumentHeader"
xmlns="http://www.unece.org/cefact/namespaces/StandardBusinessDocumentHeader"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:complexType name="DocumentIdentification">
<xs:sequence>
<xs:element name="Standard" type="xs:string" />
<xs:element name="TypeVersion" type="xs:string" />
<xs:element name="InstanceIdentifier" type="xs:string" />
<xs:element name="Type" type="xs:string" />
<xs:element name="MultipleType" type="xs:boolean" minOccurs="0" />
<xs:element name="CreationDateAndTime" type="xs:dateTime" />
</xs:sequence>
</xs:complexType>
<xs:element name="DocumentIdentification" type="DocumentIdentification" />
</xs:schema>
尽管您可以考虑重命名类型名称,以防止读者混淆。一种常见的模式是为类型名称添加后缀Type
,就你而言,DocumentIdentificationType
.
上面的代码可以导入xsd.exe
没有任何问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)