从eclipse生成jaxb xsd时出错

时间:2016-12-21 16:59:19

标签: jaxb

我正在尝试从下面提到的xsd生成jaxb类。

Page.xsd

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema elementFormDefault="qualified" version="1.0" targetNamespace="http://www.m.com/a"  xmlns:xs="http://www.w3.org/2001/XMLSchema">
 <xs:import schemaLocation="NewXMLSchema5.xsd"/> 

  <xs:element name="collection" type="tns:collection"/>

  <xs:element name="links" type="tns:links"/>


  <xs:complexType name="collection">
    <xs:complexContent>
      <xs:extension base="basePage">
        <xs:sequence>
          <xs:element ref="tns:links" minOccurs="0"/>
          <xs:element name="element" type="xs:anyType" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="pageData" type="PageData" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="type" type="xs:string"/>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="links">
    <xs:all/>
  </xs:complexType>
</xs:schema>

在上面的xsd中,扩展名basePage定义在NewXMLSchema5.xsd下。由于NewXMLSchema5.xsd,当我为Page.xsd生成jaxb类时,它为page.xsd和NewXMLSchema5.xsd生成jaxb类。

我的要求是我只需要为Page.xsd生成jaxb类。它应该忽略在page.xsd中导入的NewXMLSchema5.xsd。但是在NewXMLSchema5.xsd中应该可以使用basePage定义。

任何人都可以建议如何忽略page.xsd中的NewXMLSchema5.xsd,并且应该在page.xsd中提供相同的basePage定义。

1 个答案:

答案 0 :(得分:0)

您可以使用<Link/>编译来使用另一个episode中的现有(已生成)类型。

首先,您必须使用

执行schema
NewXMLSchema5.xsd

然后使用该剧集生成xjc -episode newschema.episode NewXMLSchema5.xsd

Page.xsd

这样,xjc Page.xsd -extension -b newschema.episode 不会生成,而是从上一代使用。

请参阅此link以获得类似的答案。