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

使用XJC编译具有多模式的XSD

公冶子琪
2023-03-14

我有一个XSD的格式:

<?xml version="1.0" encoding="utf-16"?>
<root>

    <xs:schema --->
      ..
      ..
      </xs:schema>

       <xs:schema -->
      ..
      ..
      </xs:schema -->

       <xs:schema -->
      ..
      ..
      </xs:schema -->


</root> 

当使用XJC编译器在第1行“prolog中不允许内容”进行编译时,它给出了一个错误。如果我将编码更改为“ISO-8859-1”

它给出了以下错误:

[ERROR] Unexpected <root> appears at line 2 column 10
  line 2 of ****.xsd Failed to parse a schema.

如果我从XSD中删除“root”标记,它将开始出现以下错误:

  [ERROR] The markup in the document following the root element must be well-formed.
  line 44 of file:****.xsd

未能分析架构。

我的问题是,我们是否可以使用XJC编译一个包含多个模式标记的XSD。我尝试了以下文件格式

  <?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="shiporder">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="abc" type="xs:string"/>
      <xs:element name="cdf">
      /xs:element>

    </xs:sequence>
    <xs:attribute name="orderid" type="xs:string" use="required"/>
  </xs:complexType>
</xs:element>

</xs:schema>

它对上面的工作非常好,适当地创建了类。

它与命名空间声明有关吗?

共有1个答案

百里默
2023-03-14

原则上,XSD规范允许在同一个XML文档中包含多个xs: schema元素,因此您试图做的事情并不是不合理的。在实践中,许多XSD软件(也许大多数XSD软件)都没有为模式文档做好准备,在这些文档中,xs: schema元素不是XML文档中最外层的元素,即使软件确实支持其他情况,不同的程序也不总是同意如何操作...

请参阅此堆栈溢出问题以进行进一步讨论,其中包括一个来自错误信息方的激烈争论,即根本没有支持您描述的输入类型的XSD软件。

对于XJC,您最好的选择似乎是将每个xs:schema元素放在一个单独的XML文档中,并使用(a)单个驱动程序文件依次导入或包含它们,或者(b)将它们全部放在同一个目录中,并将目录名交给XJC;它将扫描目录中的模式文件并编译它们。您还可以使用-wsdl选项执行某些操作。

 类似资料:
  • 在尝试编译xml模式时,我看到了一个异常,似乎在一些sun类中。

  • Java和Maven新手。 我试图配置我的应用程序,以便我可以通过cmd线生成一个jar,其中包含我所有的依赖项。 据我所知,我正在正确设置Pom以使用此插件:https://github.com/javafx-maven-plugin/javafx-maven-plugin 以下是我在Pom中的依赖项: 在我的

  • 我在RegexBuddy中创建了两个模式来编译输出,但在Android模式中,compile给了我一个错误。在Java7中,它编译得很好。 原始图案是 [1,[1[a-z[a-z[a-z[a-z[a-z[a-z[a-z[a-ZUU[a-z[a-z[a-z[a-z[a-z[a-z[a-z[a-z[a-z[a-z[a-z[a-z[a-z[0-0-0-9[0-9[0-9[0-9[9[9[9[0,30[0

  • 我使用的是从这里下载的官方XSD模式: http://docs.oasis-open.org/ubl/os-UBL-2.0.zip (路径:xsd/maindoc/UBL-Order-2.0.xsd) 当我使用下面的命令用XJC生成java类时,我总是在控制台上得到一个错误,我不知道如何处理。 命令: 错误: 我尝试的是不使用普通的XSD,而是使用trang.jar.生成我自己的XSD。结果很好,

  • 问题内容: 我已经在Ubuntu桌面上安装了go,在关闭计算机之前,它运行良好。 现在,当我启动机器并恢复该项目的工作时,我得到了 当我尝试构建项目时。 我在关闭电源之前所做的唯一可能会产生影响的事情是使用以下命令安装godoc 我已经通过下载文件而不是使用直接安装了 去环境 $ go版本 我仍然可以运行编译后的go代码。 这里可能出了什么问题?我该如何解决? 问题答案: 该程序应该在您的 目录中

  • 我目前正在使用maven-jaxb2-plugin v0.13.3。 插件配置有多个执行,每个执行都处理wsdl文件。其中有几个是完全独立的,但有几个只是同一企业中不同的wsdl,其模式导入公共的基本模式。 请注意,我无法更改WSDL或模式。 原始代码使用设置为true的“forceRegen”,以及所有写入相同目标目录的代码。这在命令行构建中运行良好,但正如许多人现在所知,这会导致Eclipse