2016-12-28 5 views
0

私は複合型の階層を持っています。例えばタイプ別のxsd要素名

: コンクリート型BusinessAddressベースアドレスとベースア​​ドレスを持つ要素StreetNumber、StreetNameと郵便番号 コンクリート型HomeAddress

種類HomeAddressとBusinessAddressは、任意の付加的な要素を持っているだけではありませんと 抽象タイプ住所タイプは異なります。

XMLに複数のアドレスタイプを使用することはできますか? XSDで

<HomeAddress> 
... 
</HomeAddress> 

<HomeAddress> 
... 
</HomeAddress> 

<xs:element name="address" type="Address" maxOccurs="unbounded"/> 

私は要素名が実際のタイプに基づいて動的になりたいです。

答えて

0

は「抽象的」属性およびxsを使用します。拡張要素:

<xs:complexType name="address" abstract="true"> 
    ... 
</xs:complexType> 

<xs:complexType name="homeAddress"> 
    <xs:complexContent> 
    <xs:extension base="mynamespace:address"></xs:extension> 
    </xs:complexContent> 
</xs:complexType> 
+0

Javaのような、サブタイプは、スーパータイプに割り当てることができますか?どのように実際のタイプが分かっていますか? –

+0

はい。 OX継承の概念が1:1をXML型にマッピングする方法を理解するために、jaxb(Javaの場合)やxsd.exe(C#の場合)などのシリアライゼーションコード生成ツールでXSDを実行してみてください。 "実際のタイプ"に関しては、homeAddressはアドレスなので、両方ともです。他の複雑なサブタイプ(例:「businessAddress」)を上記の例に追加してください。 –

+0

可能な複製http://stackoverflow.com/questions/5020313/polymorphism-in-xsd-schema-and-jaxb-classes –

関連する問題