2016-03-29 9 views
0

私は3つのxsdスキーマがあるとしましょう:CommonSchema.xsd、A.xsd、B.xsd。 CommonSchema.xsdには、A.xsdとB.xsdで再利用したい要素がいくつかあります。 そして、私は手段org.jvnet.jaxb2.maven2プラグインによって生成されたコードを再利用したいのです。 私は生成されたJavaコードにこのような何かを取得したい:CommonSchema.javajaxb xsdスキーマの再利用

にA.javaとB.javaから

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

またはプライベート参照

はそれを行うための最善の方法は何ですか? ありがとうございます

答えて

1

通常のように共通のXMLスキーマ "com.xsd"を作成します。複合型のTypeCommonが含まれていて、そのターゲット名前空間が "a:b"であるとします。次に、 "com.xsd"のものを使用する別のXMLスキーマファイルはs.thを使用します。 like

<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> 
関連する問題