【问题标题】:JAXB IDREF and ID usage?JAXB IDREF 和 ID 用法?
【发布时间】:2010-02-16 21:45:50
【问题描述】:

我正在寻找一个 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>

【问题讨论】:

    标签: java xml xsd jaxb


    【解决方案1】:

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

    <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”的元素,您就可以拥有&lt;person id="foo"&gt;A Name&lt;/person&gt;

    至于第一个问题:如果您真的想要解析 ID,您仍然需要做一些额外的工作。例如,see here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-25
      • 1970-01-01
      • 2013-08-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多