2016-03-29 6 views
0

Предположим, у меня есть три схемы xsd: CommonSchema.xsd, A.xsd, B.xsd. В CommonSchema.xsd У меня есть некоторые элементы, которые я хочу повторно использовать в A.xsd и B.xsd. И из-за причины я хочу повторно использовать код, сгенерированный плагином org.jvnet.jaxb2.maven2. Я хочу, чтобы получить что-то подобное в сгенерированном коде Java:jaxb xsd schemas reusing

A extends CommonSchema {...} 
B extends CommonSchema {...} 

или частные ссылки из A.java и B.java к CommonSchema.java

Каков наилучший подход, чтобы сделать это? Заранее спасибо

ответ

1

Вы пишете общую схему XML «com.xsd», как обычно. Предположим, что он содержит сложный тип TypeCommon, а его целевое пространство имен - «a: b». Затем другой файл XML Schema, использующий материал из «com.xsd», будет использовать s.th. например

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      xmlns:ns="a:b" 
      targetNamespace="x:y"> 

    <xs:import schemaLocation="com.xsd" namespace="a:b"/> 

    <xs:complexType name="TypeX2"> 
     <xs:sequence> 
     <xs:element name="name" type="ns:TypeCommon"/> 
     </xs:sequence> 
    </xs:complexType> 
</xs:schema> 

Иерархия классов является результатом сложного расширения типа, например,

<xs:complexType name="TypeA"> 
    <xs:complexContent> 
    <xs:extension base="ns:TypeCommon"> 
    <xs:sequence> 
     <xs:element name="foo" type="xs:string"/> 
    </xs:sequence> 
    <xs:attribute name="bar" type="xs:int" fixed="1"/> 
    </xs:extension> 
    </xs:complexContent> 
</xs:complexType> 
Смежные вопросы