当前位置: 首页 > 知识库问答 >
问题:

如何在另一个XSD中导入XSD

于意智
2023-03-14

我正试图将xsd导入到另一个xsd。我看到一些问题需要解决。我无法理解网上提供的解决方案。下面是我的XSD。

我有header.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>
<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>

异常说明:不是有效的: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”中添加适当的“import”标记。

我的项目结构是:

/src/com

请有人帮我解决一下。

共有1个答案

澹台承
2023-03-14

答对了!在与XSDs进行了大量斗争后,我找到了一种无错误的方法:

代码如下:

  • 需要将xs:import更改为xs:include
  • xs:include
  • 中删除 namespace=“”xmlns:xs=“http://www.w3.org/2001/xmlschema”

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位置。

希望有帮助!

 类似资料:
  • 我的java项目中有这段代码,它读取文件并将其转换为字符串。 它使用这个类https://commons.apache.org/proper/commons-io/apidocs/org/apache/commons/io/FileUtils.html 如何将其导入我的项目? 谢谢:)

  • null 我是否需要创建模块y的库,然后将创建的库导入模块X? 或者解决办法是别的。

  • 问题内容: 我有一个复杂的gradle脚本,该脚本封装了围绕将多个netbeans项目构建和部署到许多环境的功能。 该脚本可以很好地运行,但是从本质上来说,它是通过六个包含项目和环境信息的地图进行配置的。 我想将任务抽象到另一个文件中,以便可以在一个简单的构建文件中简单地定义地图,然后从另一个文件中导入任务。这样,我可以对多个项目使用相同的核心任务,并使用一组简单的地图来配置这些项目。 谁能告诉我

  • 非常感谢任何帮助。 编辑:我不敢相信我居然要明确声明我不想复制粘贴它。

  • 这是我的Android项目 我想将自定义包从目录应用程序导入目录示例。伙计们,怎么做???

  • 问题内容: 我有这种文件结构(目录和箭头文件之后): 主要: 型号目录: 报告目录: 现在,我想导入,但是我尝试做的错误是没有这样的模块。 我尝试了这个: 然后: 看起来这两个文件夹没有看到对方。从其他目录导入文件的方式是什么?我需要在 init .py文件中指定一些其他导入吗? 问题答案: 您可以在运行时添加到系统路径: 到目前为止,这是最简单的方法。