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

使用XJC编译具有多模式的XSD,xsd,xjc,Xsd,Xjc,我有一个XSD的格式: <?xml version="1.0" encoding="utf-16"?> <root> <xs:schema ---> .. .. </xs:schema> <xs:schema --> .. .. </xs:schema --> <xs:schema -->

我有一个XSD的格式:

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

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

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

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


</root> 
未能分析架构

我的问题是,我们是否可以使用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>

/xs:element>
对于上面的内容,它工作得非常好,适当地创建了类


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

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

有关进一步的讨论,请参阅,其中包括一个来自错误信息方的激烈争论,即根本没有支持您描述的输入类型的XSD软件

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

  [ERROR] The markup in the document following the root element must be well-formed.
  line 44 of file:****.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>