我正在尝试从下面提到的xsd生成jaxb类。
<?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定义。
答案 0 :(得分:0)
您可以使用<Link/>
编译来使用另一个episode
中的现有(已生成)类型。
首先,您必须使用
执行schema
NewXMLSchema5.xsd
然后使用该剧集生成xjc -episode newschema.episode NewXMLSchema5.xsd
Page.xsd
这样,xjc Page.xsd -extension -b newschema.episode
不会生成,而是从上一代使用。
请参阅此link以获得类似的答案。