Я написал схему, которая содержит следующие типы: Person
и Car
. Автомобиль имеет атрибут идентификатора, а Person имеет атрибут IDREF, который относится к идентификатору автомобиля.Как заставить тип атрибута IDREF для реального целевого типа с помощью xjc
Я добавил привязки директивы в Person, так что атрибут автомобиля является автомобиль вместо объекта, но он не работает (выглядит как <jxb:property>
работает только для элементов, а не атрибуты):
<xsd:complexType name="Person">
<xsd:annotation>
<xsd:appinfo>
<jxb:property name="car">
<jxb:baseType name="com.example.Car"/>
</jxb:property>
</xsd:appinfo>
</xsd:annotation>
<xsd:attribute name="car" type="xsd:IDREF"/>
</xsd:complexType>
<xsd:complexType name="Car">
<xsd:attribute name="id" type="xsd:ID"/>
</xsd:complexType>
Когда я генерировать классы Java из этой схемы с XJC, я получаю следующие классы:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Person")
public class Person {
@XmlAttribute(name = "car")
@XmlIDREF
@XmlSchemaType(name = "IDREF")
protected Object car;
public Object getCar() {
return car;
}
public void setCar(Object value) {
this.car = value;
}
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Car")
public class Car {
@XmlAttribute(name = "id")
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
@XmlID
@XmlSchemaType(name = "ID")
protected String id;
public String getId() {
return id;
}
public void setId(String value) {
this.id = value;
}
}
есть ли способ сказать XJC сужать тип Person.car на автомобиль вместо объекта?
возможно дубликат [указать тип для IDREF в схеме XML] (http://stackoverflow.com/questions/16285036/specify-type -для-IDREF-в-XML-схемы) –