【问题标题】:getting error while generating jaxb xsd from eclipse从 Eclipse 生成 jaxb xsd 时出错
【发布时间】:2016-12-21 16:59:19
【问题描述】:

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

页面.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。但是 basePage 定义应该在 NewXMLSchema5.xsd 中可用。

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

【问题讨论】:

    标签: jaxb


    【解决方案1】:

    您可以使用episode 编译来使用来自另一个schema 的现有(已生成)类型。

    首先,您必须使用

    执行 NewXMLSchema5.xsd
    xjc -episode newschema.episode NewXMLSchema5.xsd
    

    然后使用剧集生成Page.xsd

    xjc Page.xsd -extension -b newschema.episode
    

    这样,baseType 就不会生成,而是使用上一代的。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-13
      相关资源
      最近更新 更多