gpt4 book ai didi

java - 如何在另一个 XSD 中导入 XSD

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:04:28 27 4
gpt4 key购买 nike

我正在尝试将 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>

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>

我在这里尝试导入元素 called 因为它对于所有 xsd 的 [MESSAGE1.XSD MESSAGE2.XSD 等等] 都是通用的。

异常说:不是有效的:src-resolve.4.2:解析组件'xs:reqHeader'时出错。检测到“xs:reqHeader”位于命名空间“http://www.w3.org/2001/XMLSchema”中',但来自此命名空间的组件不可从架构文档“file:/D:/Projects/workspace/Message/resources/xsd/MESSAGE1.xsd”中引用。如果这是不正确的命名空间,可能需要更改“xs:reqHeader”的前缀。如果这是正确的命名空间,则应将适当的“导入”标记添加到“file:/D:/Projects/workspace/Message/resources/xsd/MESSAGE1.XSD”。

我的项目结构是:

/src/com

/库

/resources/xsd/MESSAGE1.XSD

请有人帮我解决。

最佳答案

宾果游戏!在与 XSD 进行了多次斗争之后,我发现了一种无错误的方法:

代码如下:

  • 您需要将 xs:import 更改为 xs:include
  • xs 中删除 namespace=""xmlns:xs="http://www.w3.org/2001/XMLSchema" :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>

标题.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位置。

希望对您有所帮助!

关于java - 如何在另一个 XSD 中导入 XSD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41606718/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com