xjcを使用してXMLスキーマからJavaオブジェクトを生成しています。 IDREFを使用して、同じ要素をドキュメント内で複数回参照したいと思います。また、IDREFによって参照されるオブジェクトを特定のタイプに制約したいと思います。私は、スキーマ検証の目的でこれをやりたいと思っていますが、Javaコードでは、参照されるオブジェクトがObject型の代わりに特定の型として返されるようにしたいと思います。例えば、私は、スキーマは次のことを説明したいと言う:XMLスキーマでIDREFのタイプを指定します。
<teams>
<team id="team1">
<coach>coachz</coach>
<player>homestar</player>
<player>marzipan</player>
<player>strongsad</player>
<player>strongbad</player>
</team>
<team id="team2">
<coach>bubs</coach>
<player>homesar</player>
<player>thecheat</player>
<player>poopsmith</player>
<player>bubs</player>
</team>
<team id="allstars">
<coach>poopsmith</coach>
<player>coachz</player>
<player>bubs</player>
<player>kingoftown</player>
<player>strongbad</player>
</team>
</teams>
<people>
<person id="coachz">Coach Z</person>
<person id="homesar">Homesar</person>
<person id="homestar">Homestar</person>
<person id="strongbad">Strong Bad</person>
<person id="strongsad">Strong Sad</person>
<person id="marzipan">Marzipan</person>
<person id="bubs">Bubs</person>
<person id="kingoftown">King of Town</person>
<person id="poopsmith">The Poopsmith</person>
<person id="thecheat">The Cheat</person>
</people>
私はこのようなplayer
を定義することができます。
<xs:element name="player" type="xs:IDREF" maxOccurs="unbounded"/>
が、その後Javaコードで、私はそれがするプレーヤーを取得しようとすると、タイプオブジェクトとして戻ってきて、それを人にキャストしなければなりません。その時点で、誰かが誤ってTeamオブジェクトを参照した場合、その検証に遭遇した可能性があるエラーに対処しています。私はこのような何かを指定します:
<xs:element name="player" type="xs:IDREF"
reftype="person"
maxOccurs="unbounded" />
をしかし、私の知る限り、私は不自然な属性「reftype」で、ここで行っているようなタイプを指定する方法はありません。これは、IDREFを使って行うことができますか?そうでない場合、別の方法がありますか?
ホームスターランナーへの参照? +1 –