2016-05-12 3 views
0

Я создаю файлы xsd и преобразовываю классы Java из этих xsd-файлов с помощью JAXB. В следующем примере, ClassB был определен/объявлен в какой банке файл, и я хочу, чтобы ссылаться на него в моей XSD, как это:Ссылка на любой внешний класс java от xsd

<complexType name="ClassA"> 
    <sequence> 
    <element name="objB" type="ClassB" minOccurs="0" maxOccurs="unbounded"/> 
    </sequence> 
</complexType> 

Разрешается ли это? Каков наилучший способ получить к нему доступ?

ответ

0

Это должно работать:

<xs:complexType name="ClassBType" abstract="true"> 
    <xs:annotation> 
     <xs:appinfo> 
     <jaxb:class name="ClassB" implClass="fully.qualified.package.name.ClassB"/> 
     </xs:appinfo> 
    </xs:annotation> 
    </xs:complexType> 
    <!-- 

    --> 
    <xs:complexType name="ClassA"> 
    <xs:complexContent> 
     <xs:extension base="ClassBType"> 
    . 
    . 
    Any optional <xs:attribute> elements 
    . 
    . 
     </xs:extension> 
    </xs:complexContent> 
    </xs:complexType> 

Сгенерированный Java-код будет создан файл с именем ClassA.java, который выглядит как:

public class ClassA extends ClassB { 
. 
. 
. 
}