2010-12-04 31 views
1

J'essaie de générer un schéma en utilisant jaxb de mes classes POJO existantes et jusqu'à maintenant son fonctionnement bien maintenant j'ai une exigence où je dois déclarer un type d'attribut est mon XSD mais la valeur de l'attribut devrait être l'une des valeurs prédéfinies. ci-dessous est le cliché instantané de code de ma classeQuestion sur Jaxb 2.x SchemaGen

private String destinationID; 
private String contactNo; 
private String type; 
@XmlAttribute 
private String name; 

mon exigence est que le nom doit contenir toute la valeur predeifned un schéma semblable à celui

<xsd:attribute name="type" 
     type="simpleType.Generic.ProductReferenceType" use="required" /> 
<xsd:simpleType name="simpleType.Generic.ProductReferenceType"> 
    <xsd:restriction base="xsd:string"> 
     <xsd:enumeration value="OFFER" /> 
     <xsd:enumeration value="SELLER" /> 
     <xsd:enumeration value="DEFINITION" /> 
    </xsd:restriction> 
</xsd:simpleType> 

je suis incapable de savoir ce que les choses i besoin de faire dans ma classe pour atteindre ce cas

merci à l'avance

Répondre

2

Vous pouvez définir un enum comme ceci:

@XmlType(name="simpleType.Generic.ProductReferenceType") 
public enum ProductReferenceType { 
    OFFER, 
    SELLER, 
    DEFINITION 
} 

puis utilisez simplement que dans votre classe:

@XmlAttribute 
public ProductReferenceType type; 

Cela va générer XSD comme suit:

<xs:simpleType name="simpleType.Generic.ProductReferenceType"> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="OFFER"/> 
     <xs:enumeration value="SELLER"/> 
     <xs:enumeration value="DEFINITION"/> 
    </xs:restriction> 
    </xs:simpleType> 

et

<xs:attribute name="type" type="simpleType.Generic.ProductReferenceType"/> 

Bonne chance dans votre projet !

+0

Merci !!!!, j'ai déjà implidé certains de ce genre de faire votre réponse comme accecpted afin que d'autres qui cherchent une telle chose peuvent obtenir des avantages –