我正在尝试创建一个带有类型层次结构的xsd。 我希望得到的是子类型用一定的值填充基类型的属性。 这是我最好的结果:
<xs:complexType name="base_type">
<xs:attribute name="att" use="required" type="xs:string" />
</xs:complexType>
<xs:complexType name="type1_t">
<xs:complexContent>
<xs:restriction base="base_type">
<xs:attribute name="att" fixed="value1" use="required" type="xs:string" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="type2_t">
<xs:complexContent>
<xs:restriction base="base_type">
<xs:attribute name="att" fixed="value2" use="required" type="xs:string" />
</xs:restriction>
</xs:complexContent>
</xs:complexType>
“att”属性由base_type提供,在type1_t和type2_t的元素中,我希望它们分别设置为“value1”和“value2”。
容器元素如下所示:
<xs:element name="root">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="type1" type="type1_t" />
<xs:element name="type2" type="type2_t" />
</xs:choice>
</xs:complexType>
</xs:element>
现在我正在运行xjc为这段代码生成Java类,但是我在Type1T.java中得到的“fixed”属性没有表示,它只包含
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "type1_t")
public class Type1T extends BaseType { }
我原本预计
{
@Override public String getAtt() { return "value1"; }
}
? 这是(几乎)当类型由其自身生成时生成的内容(即不作为基类型的扩展)。
我做错了什么?我想做的就是不可能吗?
我的目标是从xsd自动生成所有java代码;否则我想一种实现这个的方法是手动为每个类编译创建的ObjectFactory方法中的固定值。但是,我需要阻止每次生成ObjectFactory ...
任何提示?提示?想法?