Sto generando oggetti Java da uno schema XML utilizzando xjc. Vorrei fare riferimento allo stesso elemento più volte all'interno del documento utilizzando IDREF. Vorrei anche limitare gli oggetti referenziati da IDREF a un tipo specifico. Mi piacerebbe farlo ai fini della convalida dello schema, ma anche in modo che nel codice Java, l'oggetto di riferimento sia restituito come tipo specifico invece di tipo Oggetto. Ad esempio, dire che voglio uno schema per descrivere le seguenti:specificare il tipo per IDREF nello schema XML
<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>
posso definire player
in questo modo:
<xs:element name="player" type="xs:IDREF" maxOccurs="unbounded"/>
ma poi nel codice Java, quando si tenta di recuperare un giocatore lo farà torna come tipo oggetto, e devo lanciarlo su una persona. A quel punto, se qualcuno ha erroneamente fatto riferimento a un oggetto Team, ho degli errori da trattare che potrebbero essere stati scoperti durante la convalida. Voglio specificare qualcosa di simile:
<xs:element name="player" type="xs:IDREF"
reftype="person"
maxOccurs="unbounded" />
Ma per quanto ne so, non c'è modo di specificare un tipo come ho fatto qui con l'attributo artificioso 'reftype'. Questo può essere fatto usando IDREF? Se no, c'è un altro metodo?
Un riferimento a Homestar Runner? +1 –