Bonjour,
Je me permets de partir de ce point car ma proposition diverge.
J'aborderais le problème en me disant, j'aimerai que mes documents XML
seuls et sans relations continuent à tenir debout (export/import, pas
toujours en contexte de formulaires cocoon/exist).
Je fonctionnnerai sur 2 collections, les acteurs, et les films, dans
l'esprit de 2 collections de pages html avec des liens href entre elles.
Cela ferait un XML du genre
<acteur xml:id="acteur-code1">
<nom>Chaplin, Charles</nom>
<filmo>
<film date="1929" xlink:href="film-code1">Tout de même un titre</film>
<film date="1934" xlink:href="film-code2">Pour que les docs
tiennent debout</film>
<film date="1908" xlink:href="film-code2">Même sans liens</film>
<filmo>
</acteur>
<film xml:id="film-code1">
<titre>Les charlots font du ski</titre>
<distribution>
<!-- Sur l'affiche de ce film Charlie Chaplin apparaît sous son
pseudo -->
<acteur xlink:href="acteur-code1">Charlot</film>
<acteur xlink:href="acteur-code2">Pieplu, Claude</film>
<distribution>
</acteur>
L'affichage d'une notice acteur ou d'une notice film ne coûte pas de
requêtes, il suffit de transformer le lien pour que quelque chose
réponde au clic.
Le problème est déplacé sur la production de la notice.
Tout d'abord, le lien doit être optionnel (le temps par exemple de créer
la notice d'un acteur, pendant que l'on renseigne un film). De toute
façon, dans ce genre de catalogues, il est rare d'assurer un modèle
fermé (il y a des acteurs secondaires pour lesquels on ne voudra pas
faire de notices, de même pour certains films).
J'ai une fiche acteur sous les yeux, j'entre son nom etc, pas de pb.
Pour sa filmo, il me faut un bouton qui ouvre un popup et me permet de
cherche la base des films, et rappatrier dans le formulire acteur le
titre, la date et l'identifiant. Je peux rajouter d'autres films dans la
carrière de cet acteur, laissant à plus tard de leur donner un lien (je
n'ai pas sous les yeux la fiche de tous les films, avec en particulier
leur distribution). J'ai tout de même un bouton "créer la notice film"
s'il on souhaite. Un dernier gadget gentil, c'est un proposition de
films ou dans la distribution, des acteurs avec un nom approchant ont
déjà été proposés (plein texte).
La suppression d'un acteur n'entraîne pas la suppresion de sa ligne dans
la distribution d'un film, mais uniquement de son lien-identifiant.
Une base XML se prête bien au problème initial posé
film <> auteur
Un modèle SQL aurait caricaturé le besoin. Par exemple, il obligerait à
créer une ligne pour n'importe quel acteur ou film, du coup, beaucoup
d'entrées presque vides, et l'on se trouve avec des notices pauvres et
très peu de validation.
Le problème d'une base XML, c'est que si les relations sont plus
souples, il faut assurer à la main l'intégrité relationnnelle. C'est à
cet endroit où la fonction fn:id() permet de vérifier les liens morts.
--
Frédéric Glorieux (AJLSM, http://ajlsm.com)
---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:[EMAIL PROTECTED]
Autres commandes : mailto:[EMAIL PROTECTED]