我正在尝试将 xsd 导入另一个 xsd。我看到一些需要导入的问题。我无法理解网络中提供的解决方案。下面是我的 XSD。
我有 HEADER.xsd。这对于所有其他 xsd 都是常见的。
头文件.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>
Run Code Online (Sandbox Code Playgroud)
消息1.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>
Run Code Online (Sandbox Code Playgroud)
在这里,我试图导入被调用的元素,因为它对所有 xsd 的 [MESSAGE1.XSD MESSAGE2.XSD 等] 都很常见。
异常表示:无效:src-resolve.4.2:解析组件“xs:reqHeader”时出错。检测到“xs:reqHeader”位于命名空间“ http://www.w3.org/2001/XMLSchema ”中,但无法从架构文档“file:/D:/Projects/workspace/”中引用来自该命名空间的组件消息/资源/xsd/MESSAGE1.xsd'。如果这是不正确的命名空间,则可能需要更改“xs:reqHeader”的前缀。如果这是正确的命名空间,则应将适当的“import”标记添加到“file:/D:/Projects/workspace/Message/resources/xsd/MESSAGE1.XSD”。
我的项目结构是:
/src/com
/lib
/resources/xsd/MESSAGE1.XSD
请有人帮我解决它。
答对了!在与 XSD 进行了大量斗争后,我发现了一种无错误的方法:
这是代码:
xs:import为xs:includenamespace=""和xmlns:xs="http://www.w3.org/2001/XMLSchema"xs:includeMESSAGE1.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>
Run Code Online (Sandbox Code Playgroud)
头文件
<?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>
Run Code Online (Sandbox Code Playgroud)
请根据您本地文件的位置修改 XSD 位置。
希望能帮助到你!