分類法を表すデータ モデルがあります。分類法は、次のようなカテゴリの階層です。
Food
+- Pasta
+- Spaghetti
これを次のように表現したい。
<taxonomy>
<category id="cat001" name="Food"/>
<category id="cat002" name="Pasta">
<parentCategory>
<category ref="cat001"/>
</parentCategory>
</category>
<category id="cat003" name="Spaghetti">
<parentCategory>
<category ref="cat002"/>
</parentCategory>
</category>
</taxonomy>
これを XML スキーマ (XSD) で表現する最良の方法は何ですか?
また、JAXB を使用するときに次のようなものを取得できるようにするにはどうすればよいですか
class Category {
String name;
Category parentCategory;
}
さらに、私の分類法が厳密なツリーではなく、スパゲッティがパスタとヌードルの下に来るように、複数の親関係が存在する可能性があるグラフである場合はどうなるでしょうか。
<taxonomy>
<category id="cat001" name="Food"/>
<category id="cat002" name="Pasta">
<parentCategories>
<category ref="cat001"/>
</parentCategories>
</category>
<category id="cat003" name="Noodles">
<parentCategories>
<category ref="cat001"/>
</parentCategories>
</category>
<category id="cat004" name="Spaghetti">
<parentCategories>
<category ref="cat002"/> <!-- Pasta -->
<category ref="cat003"/> <!-- Noodles -->
</parentCategory>
</category>
</taxonomy>
JAXBを使用すると、次のようなものを生成したいと思います
class Category {
String name;
List<Category> parentCategories;
}
Java コードは、説明のために簡略化されていることに注意してください。JAXB コード生成では、カテゴリ プロパティを持つparentCategory などのコンテナー オブジェクトを使用してもかまいません