这个xsd元素有什么问题?
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="MessageInfoType">
<xsd:sequence>
<xsd:element minOccurs="0" maxOccurs="1" name="TimeStamp" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="GetData">
<xsd:annotation>
<xsd:documentation>Send data</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element minOccurs="1" name="MessageInfo" type="xsd:MessageInfoType" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
获取错误未声明MessageInfoType。
答案 0 :(得分:2)
错误消息
src-resolve.4.2:解析组件错误&#39; xsd:MessageInfoType&#39;。它 检测到&#39; xsd:MessageInfoType&#39;在命名空间中 &#39; http://www.w3.org/2001/XMLSchema&#39;,但来自此命名空间的组件 不能从架构文档中引用 XSD文件名 。如果这是 错误的命名空间,也许是&#39; xsd:MessageInfoType&#39;的前缀。需求 要改变。如果这是正确的命名空间,那么适当 &#39;进口&#39;标签应该添加到 XSD文件名 。
在引用组件但在给定名称空间中找不到时发生。
在您的情况下,您通过向MessageInfoType
添加不必要的名称空间前缀以及在XSD根元素上添加不必要的默认名称空间前缀来阻止成功引用type="xsd:MessageInfoType"
。
如何解决:从xsd:schema
删除默认命名空间声明,并在type="xsd:MessageInfoType"
声明中从MessageInfo
删除命名空间前缀:
<?xml version="1.0" encoding="utf-8"?>
<xsd:schema elementFormDefault="qualified"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="MessageInfoType">
<xsd:sequence>
<xsd:element name="TimeStamp" type="xsd:string"
minOccurs="0" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
<xsd:element name="GetData">
<xsd:annotation>
<xsd:documentation>Send data</xsd:documentation>
</xsd:annotation>
<xsd:complexType>
<xsd:sequence>
<xsd:element name="MessageInfo" type="MessageInfoType"
minOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
然后错误消息就会消失。