0

我有一个格式的 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 中删除“根”标签,它会开始给出以下错误:

  [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>

它对上述情况非常有效,可以适当地创建类。

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

4

1 回答 1

0

原则上,XSD 规范允许在同一个 XML 文档中包含多个 xs:schema 元素,因此您尝试做的事情并非不合理。在实践中,很多 XSD 软件(可能是大多数 XSD 软件)都没有为 xs:schema 元素不是 XML 文档中最外层元素的模式文档做好准备,即使软件确实支持其他情况,不同的程序也不t 总是就如何表现达成一致。

请参阅此 Stack Overflow 问题以进行进一步讨论,包括来自误导方的激烈争论,即根本没有 XSD 软件支持您描述的那种输入。

使用 XJC,您最好的选择似乎是将每个 xs:schema 元素放在单独的 XML 文档中,并使用 (a) 单个驱动程序文件依次导入或包含它们中的每一个,或者 (b) 将它们全部放在相同的目录和手XJC的目录名称;它将扫描目录中的模式文件并编译它们。您也可以使用该-wsdl选项做一些事情。

于 2013-04-24T16:18:03.697 回答