名前の異なる 3 つの異なるルート要素があり、それらを foo、bar、baz と呼びましょう。これらの可能なルート要素はすべて同じ型を持ち、単純に fooBarOrBazType と呼ばれます。
XSD からクラスを生成すると、最初の要素だけが fooBarOrBazType で作成されます。そのため、その型を作成でき、シリアル化すると foo と呼ばれます。bar または baz の生成されたエントリが表示されません。
これは、すべてのルート要素が同じスキーマにある場合と、異なる xsd ファイルに分割されている場合の両方で発生します。
すべての異なる名前の要素が独自の対応するクラスを取得するように生成する方法はありますか?
3つの異なるタイプが作成されるように、ある種の継承を使用する必要がありますか? この継承を修正するにはどうすればよいですか?
どうやら、次を使用して自分で見つけました。
<xs:element name="foo">
<xs:complexType>
<xs:complexContent>
<xs:extension base="p:fooBarBazType"/>
</xs:complexContent>
</xs:complexType>
で十分でした。