我正在尝试将xsd导入另一个xsd。我看到一些问题需要导入。我无法理解网上提供的解决方案。下面是我的XSD。
我有HEADER.xsd。所有其他xsd都是常见的。
HEADER.XSD
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Header" type="reqHeader"/>
<xs:complexType name="reqHeader">
<xs:sequence>
<xs:element name="MsgId" type="xs:string" minOccurs="0"/>
<xs:element name="MsgDesc" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
MESSAGE1.XSD
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:import namespace="" schemaLocation="\resources\xsd\HEADER.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" />
<xs:element name="Message">
<xs:complexType>
<xs:sequence>
<xs:element name="Header" type="xs:reqHeader" />
<xs:element name="Body">
<xs:complexType>
<xs:sequence>
<xs:element name="User">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="Name" minOccurs="1"/>
<xs:element type="xs:int" name="DOB" minOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
这里我试图导入被调用的元素,因为它对于所有xsd都是常见的[MESSAGE1.XSD MESSAGE2.XSD等]。
异常说:不是有效的:src-resolve.4.2:解析组件错误&#39; xs:reqHeader&#39;。检测到&#39; xs:reqHeader&#39;在名称空间&#39; http://www.w3.org/2001/XMLSchema&#39;中,但此命名空间中的组件无法从架构文档&file:/ D:/ Projects / workspace / Message / resources / xsd / MESSAGE1引用。 XSD&#39 ;.如果这是不正确的命名空间,可能是&#39; xs:reqHeader&#39;的前缀。需要改变。如果这是正确的命名空间,那么适当的导入&#39;标签应添加到&#39;文件:/ D:/Projects/workspace/Message/resources/xsd/MESSAGE1.XSD'。
我的项目结构是:
/ SRC / COM
/ lib中
/resources/xsd/MESSAGE1.XSD
请有人帮我解决。
答案 0 :(得分:4)
宾果!在与XSD进行了很多战斗后,我发现了一种无错误的方式:
以下是代码:
xs:import
更改为xs:include
namespace=""
行xmlns:xs="http://www.w3.org/2001/XMLSchema"
和xs:include
MESSAGE1.xsd
<xs:schema attributeFormDefault="unqualified"
elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="header.xsd" />
<xs:element name="Message">
<xs:complexType>
<xs:sequence>
<xs:element name="Header" type="reqHeader" />
<xs:element name="Body">
<xs:complexType>
<xs:sequence>
<xs:element name="User">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="Name" minOccurs="1" />
<xs:element type="xs:int" name="DOB" minOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
HEADER.xsd
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Header" type="reqHeader" />
<xs:complexType name="reqHeader">
<xs:sequence>
<xs:element name="MsgId" type="xs:string" minOccurs="0" />
<xs:element name="MsgDesc" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
请根据您当地档案的位置修改XSD位置。
希望它有所帮助!