Java JAXB IDREF和ID使用情况?

Java JAXB IDREF和ID使用情况?,java,xml,xsd,jaxb,Java,Xml,Xsd,Jaxb,我希望编写一个XSD,用于通过JAXB生成一些Java类。我希望生成的XML如下所示: <Appointment> <Patient ref="12345">Bob Smith</Patient> <Type>Some Appointment Type</Type> <Date>2010-02-17</Date> .... </Appointment> Patient

我希望编写一个XSD,用于通过JAXB生成一些Java类。我希望生成的XML如下所示:

<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

那么,你能喝一杯吗

还是一定要有


我会回答你的第二个问题,因为问题问得很清楚。不,简单类型不能有属性。您所寻找的是一种具有简单内容的复杂类型:

<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,你还有一点额外的工作要做。例如

  <element id="foo"><name>bar</name></element>
<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>