Bonjour !
Je souhaite créer puis lire un fichier xml. Pour cela j'utilise JAXB.
Mon problème est le référencement d'objets :
J'ai une liste d'ordres de fabrication (OF) à gérer, j'ai donc crée cette liste d'OF dans mon .xsd.
Un OF est caractérisé par plusieurs attributs, dont une liste d'OF prédécesseurs.
Le but est d'avoir accès facilement aux données des OF prédécesseur sans se retaper une recherche dans la liste des OF.
Pour cela j'ai donc rajouté dans les attributs d'un OF la liste de types OF dans mon .xsd, pour contenir les prédecesseurs :
Cela a, lors de la génération de mon fichier xml, l'effet de dupliquer les données, ce qui est logique. Voici un extrait du fichier xml qui est généré, j'ai séléctioné un OF de la liste qui a un prédécesseur :
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 <xsd:complexType name="liste_des_OF_type"> <xsd:sequence> <xsd:element name="OF" maxOccurs="unbounded" type="OF_type"/> </xsd:sequence> <xsd:attribute name="nombre" type="xsd:int"/> </xsd:complexType> <xsd:complexType name="OF_type"> <xsd:sequence> <xsd:element name="date_due" type="xsd:date"/> <xsd:element name="type_pieces" type="xsd:string"/> <xsd:element name="nombre_pieces" type="xsd:int"/> <xsd:element name="priorite" type="xsd:int"/> <xsd:element name="preemption" type="xsd:int"/> <xsd:element name="date_disponibilite" type="xsd:date"/> <xsd:element name="predecesseur" minOccurs="0" maxOccurs="unbounded" type="OF_type"/> </xsd:sequence> <xsd:attribute name="id" type="xsd:string"/> </xsd:complexType>
Or, j'ai déja le descriptif complet de l'OF 7 plus haut dans ma liste des OF.
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 <OF id="REF-7"> <date_due>2011-03-27+02:00</date_due> <type_pieces>GAM-3</type_pieces> <nombre_pieces>63</nombre_pieces> <priorite>2</priorite> <preemption>1</preemption> <date_disponibilite>2011-03-27+02:00</date_disponibilite> <liste_des_predecesseurs nombre="0"/> </OF> <OF id="REF-8"> <date_due>2011-03-27+02:00</date_due> <type_pieces>GAM-3</type_pieces> <nombre_pieces>192</nombre_pieces> <priorite>9</priorite> <preemption>0</preemption> <date_disponibilite>2011-03-27+02:00</date_disponibilite> <liste_des_predecesseurs nombre="1"> <predecesseur id="REF-7"> <date_due>2011-03-27+02:00</date_due> <type_pieces>GAM-3</type_pieces> <nombre_pieces>63</nombre_pieces> <priorite>2</priorite> <preemption>1</preemption> <date_disponibilite>2011-03-27+02:00</date_disponibilite> <liste_des_predecesseurs nombre="0"/> </predecesseur> </liste_des_predecesseurs> </OF>
De plus, quand je fais la lecture de mon fichier xml, l'objet OF 7 sera crée en double, une fois pour la liste des prédécesseurs, une fois pour la liste des OF.
Je voulais donc savoir, s'il existe ou non un systeme de référence à placer dans mon schéma xsd pour éviter cette duplication.
La seule piste de réponse que j'ai trouvé est l'utilisation de key, mais si j'ai bien compris, celles-ci ne garantissent que la correspondances entre identifiant, et ne référence rien. Ca fait deux jours que je cherche et rien -_-
En espérant avoir été assez clair, je vous remercie de vos réponse.
Partager