我正在寻找一个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。
那么,你有吗
<element id="foo">bar</element>
或者你必须
<element id="foo"><name>bar</name></element>
答案 0 :(得分: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”的元素,您可以拥有<person id="foo">A Name</person>
。
至于第一个问题:如果你真的想要解析ID,你还有一些额外的工作。例如,see here。