2010-02-16 53 views
3

我在寫一個XSD,它將被用來通過JAXB生成一些Java類。我想生成的XML看起來像這樣:JAXB IDREF和ID使用情況?

<Appointment> 
    <Patient ref="12345">Bob Smith</Patient> 
    <Type>Some Appointment Type</Type> 
    <Date>2010-02-17</Date> 
    .... 
</Appointment> 

因此,鑑於這種模式,我想它來生成類在那裏我可以做這樣的事情:

Patient p = loadPatientFromDB(); 
Appointment a = new Appointment(); 
a.setPatient(p); 
a.setType("Some Appointment Type"); 

我認爲我期望做的事情包括具有IDREF作爲屬性,然後將字符串作爲元素內容的元素。

有人可以幫我一些XSD嗎?

謝謝!

編輯

這個問題可以很可能也可以通過以下方式提出。

一個simpleType可以有一個屬性,或者它必須是一個complexType。

所以,你可以有

<element id="foo">bar</element> 

,或者必須

<element id="foo"><name>bar</name></element> 

回答

4

我會回答你的第二個問題,因爲它很清楚地問道。不,一個簡單的類型不能有一個屬性。你所尋找的是一個複雜類型具有簡單內容:

<xs:complexType name="Person"> 
    <xs:simpleContent> 
     <xs:extension base="xs:string"> 
      <xs:attribute name="ref" type="xs:IDREF" use="required"/> 
     </xs:extension> 
    </xs:simpleContent> 
</xs:complexType> 

編輯:現在,您可以爲您打算使用這種類型的,其分配給所謂的「人」的元素,你可以有<person id="foo">A Name</person>

至於第一個問題:如果您確實需要解決ID,您仍然有一些額外的工作。例如,see here