Bonjour je suis devant un petit probleme xml / objet. Est il possible de faire de l heritage en xml. Je m'explique, je dispose d'un objet "data" qui contient une liste de "field". L'objet "field" est abstrait et peut etre specialisé en stringfield ou numeriquefield.
J utilse l'API Castor pour generer le model objet à partir d'un fichier xml, . J'aimerais conserver cette idee d'heritage de telle maniere à avoir le fichier xml suivant:

Fichier xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
<data  id="data1">
			<numericfield value="FIELD1" />
	                <simplefield value="FIELD2" />
	                <numericfield value="FIELD3" />
			<simplefield value="FIELD4" />
 
		</data>
Code class
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
public class Data(){
    List <Field> fieldList;
 
    public  Data(){
        fieldList = new ArrayList<Field>()
      }
 }
 
 
public class abstract Field(){
    public  Field
       super();
      }
 }
 
public class SimpleField extends Field{
    public  SimpleField
       super();
      }
 }
 
public class NumericField extends Field{
    public  NumericField
       super();
      }
 }
Code xsd
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<xs:element name="data">
		<xs:annotation>
			<xs:documentation>A set</xs:documentation>
		</xs:annotation>
		<xs:complexType>
			<xs:sequence>
				<xs:element ref="field" minOccurs="0" maxOccurs="unbounded" />
			</xs:sequence>
			<xs:attribute name="id" type="xs:string" use="required" />
		</xs:complexType>
	</xs:element>
 
 
	<xs:element name="stringfield">
		<xs:complexType>
			<xs:attribute name="value" type="xs:string" />
		</xs:complexType>
	</xs:element>
 
	<xs:element name="numericfield">
		<xs:complexType>
			<xs:attribute name="value" type="xs:string" />
                        <xs:attribute name="valuenum" type="xs:float" />
		</xs:complexType>
	</xs:element>
 
 
<xs:element name="field">?????