I'm looking to write an XSD which will be used to generate some Java classes via JAXB. I'd like the resulting XML to look like this:
<Appointment>
<Patient ref="12345">Bob Smith</Patient>
<Type>Some Appointment Type</Type>
<Date>2010-02-17</Date>
....
</Appointment>
So, given this schema I'm wanting it to generate a class where I can just do something like this:
Patient p = loadPatientFromDB();
Appointment a = new Appointment();
a.setPatient(p);
a.setType("Some Appointment Type");
I think what I am looking to do involves having an element which has an IDREF as an attribute and then a string as the contents of the element.
Can someone give me a hand with some of the XSD?
Thanks!
EDIT
This question could likely also be asked i开发者_StackOverflow中文版n the following manner.
Can a simpleType have an attribute, or must it be a complexType.
So, can you have
<element id="foo">bar</element>
or must you have
<element id="foo"><name>bar</name></element>
I will answer your second question, since it's very clearly asked. No, a simple type cannot have an attribute. What you are looking for is a complex type with simple content:
<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>
Edit: You can now use this type as you intended, assign it to an element called "person" and you can have <person id="foo">A Name</person>
.
As for the first question: you still have a bit of extra work if you actually want the IDs resolved. For example, see here.
精彩评论