Tôi đang tạo các đối tượng Java từ một lược đồ XML bằng cách sử dụng xjc. Tôi muốn tham khảo cùng một yếu tố nhiều lần trong tài liệu bằng IDREF. Tôi cũng muốn hạn chế các đối tượng được IDREF tham chiếu đến một loại cụ thể. Tôi muốn làm điều này cho mục đích xác nhận lược đồ, nhưng cũng như vậy trong mã Java, đối tượng được tham chiếu được trả về dưới dạng một kiểu cụ thể thay vì kiểu Object. Ví dụ, nói rằng tôi muốn có một giản đồ để mô tả như sau:chỉ định loại cho IDREF trong lược đồ 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>
tôi có thể xác định player
như thế này:
<xs:element name="player" type="xs:IDREF" maxOccurs="unbounded"/>
nhưng sau đó trong mã Java, khi tôi cố gắng để lấy một cầu thủ nó sẽ quay trở lại làm đối tượng kiểu và tôi phải truyền nó cho một người. Tại thời điểm đó, nếu ai đó đã tham chiếu nhầm đối tượng Nhóm, tôi có lỗi để giải quyết vấn đề đó có thể đã bị bắt gặp khi xác thực. Tôi muốn chỉ định một cái gì đó như thế này:
<xs:element name="player" type="xs:IDREF"
reftype="person"
maxOccurs="unbounded" />
Nhưng như xa như tôi có thể nói, không có cách nào để xác định một kiểu như tôi đã làm ở đây với các thuộc tính giả tạo 'reftype'. Điều này có thể được thực hiện, bằng cách sử dụng IDREF? Nếu không, có phương pháp nào khác không?
Một ref to Homestar Runner? +1 –