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]

Répondre à