Bonjour,
je me demande comment passer par XSLT d'une structure hiérarchique :
<couple>
<maman/>
<papa/>
</couple>
<couple>
<maman/>
<papa/>
</couple>
à une structure plus plate qui reconstituent les couples grâce à des attributs de type ID/IDREF (on aurait pu aussi prendre des éléments de type ID/IDREF) :
<maman idref="pap1"/>
<maman idref="pap2"/>
<papa id="pap1"/>
<papa id="pap2"/>
?
D'ailleurs, cette dernière structure équivaut (pour mes besoins de couplage) à :
<maman id="mam1"/>
<maman id="mam2"/>
<papa idref="mam1"/>
<papa idref="mam2"/>
(ce qui à mon sens suggère que la solution avec les ID/IDREF est peu adaptée à mon besoin. La solution ID/IDREF "dit" quelque chose de plus précis que la bonne vieille hiérarchie).
Il faut non seulement générer des id (avec generate-id() je suppose) et les attributs qui y renvoient, mais aussi il faut que les données générées soient typées au sens de XSD (types xs:ID et xs:IDREF). Là, il faut se mettre à XSLT 2.0... ??
********
Enfin, mon affaire est encore plus compliquée voire immorale puisqu'en principe, d'après mes données, une même maman ou un même papa peut appartenir à plus d'un couple.
<couple>
<maman>Vénus</maman>
<papa>Vulcain</papa>
</couple>
<couple>
<maman>Nerio</maman>
<papa>Mars</papa>
</couple>
<couple>
<maman>Vénus</maman>
<papa>Mars</papa>
</couple>
Apparemment, je dois donc utiliser des types IDREFS (au pluriel) :
<maman idrefs="pap1 pap2">Vénus</maman>
<maman idrefs="pap1">Nerio</maman>
<papa id="pap1">Vulcain</papa>
<papa id="pap2">Mars</papa>
ou l'équivalent :
<maman id="mam1">Vénus</maman>
<maman id="mam2">Nerio</maman>
<papa idrefs="mam1">Vulcain</papa>
<papa idrefs="mam1 mam2">Mars</papa>
********
Dernier souci : je ne vois pas comment faire en XSD pour empêcher les mères célibataires, c'est-à-dire obliger tout élément avec un ID à être référencé par au moins un IDREF(S). Un IDREF a besoin d'un ID, mais pas l'inverse. J'imagine une solution (très dissuasive) : chaque élément peut avoir un ID et un IDREF. Avec cela, papa renvoie à maman et maman renvoie à papa. Beaucoup beaucoup de redondance.
Merci de m'aider à m'y retrouver dans ces histoires de famille et d'adultère XML...
Je précise que, derrière cet exemple, il y a en fait des données plus sérieuses (métadonnées de thèses électroniques).
Je précise aussi que ma préférence allait d'emblée à une solution hiérarchique, mais c'est peut-être un préjugé d'amateur. D'où ce message.
Bonne journée.
Yann Nicolas
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Received on Fri Oct 15 11:55:01 2004