Salut,
Merci sadeq et Hubert.
En fonction de vos remarques, je tente d'élaborer la chose un peu différemment.
En gros, j'ai un formulaire pour établir un cv. Chaque donnée de ce formulaire (titres, labels, légendes) se trouvent dans un fichier XML. Pour certains groupes, je dois donner la possibilité de les multiplier.
Par exemple, si on prend le groupe suivant :
Code : Tout sélectionner
<experiences titre="Expériences professionnelles">
<date>Date</date>
<societe>Société</societe>
<descrprof>Descriptif</descrprof>
</experiences>... je peux avoir une ou plusieurs expériences. Tout le monde n'a pas 10 expériences différentes donc il n'y a pas d'intérêt particulier à fournir d'entrée de jeu 10 champs "date", 10 champs "société" et 10 champs "descriptif" non compressibles/extensibles.
En même temps, la multiplication des champs ne doit toucher que l'utilisateur qui le demande... et non les autres. Du coup, je ne peux pas écrire dans ce fichier XML pour modifier le nombre de champs car l'utilisateur A se retrouverait avec le nombre de champs de l'utilisateur B à son premier échange avec le serveur.
Aussi, la solution la plus réactive et prenant le moins de ressources est de le faire via JS/DOM/Ajax mais, c'est dès lors considérer cette multiplication comme optionnelle puisque tout le monde n'a pas JS. Si je procède ainsi, on sait qu'environ 10% des utilisateurs n'y ont pas accès et se retrouveront alors avec un seul groupe. mmh... ça se complique donc...
Il me faut quelquechose qui se fasse côté serveur mais qui en même temps ne soit disponible que pour l'utilisateur courant.
La solution : PHP/DOM
Je multiplie mes éléments à la volée
sans les sauvegarder dans le fichier XML et j'obtiens bien le résultat escompté. N'importe quel utilisateur peut définir ses propres expériences sans que ça touche les autres.
Une fois tous les champs renseignés et vérifiés, j'insère les données fournies par l'utilisateur (en fonction de l'arbre DOM en mémoire) au sein de la BDD. Pour améliorer la vitesse de l'application tout en soulageant le serveur, j'ajoute alors la couche JS/DOM/Ajax pour traiter la multiplication des champs.
En somme, je n'utilise la BDD que pour les données utilisateurs et non pour les différents champs, ce qui améliore la vitesse d'affichage vu qu'il n'y a qu'à parser mes documents (absence de requête SQL (ou autre

)). De même, via la couche JS/DOM/Ajax, je minimise les interactions avec le serveur pour 90% des utilisateurs.
Qu'en pensez-vous ? Cela vous semble-t-il tenir la route
Pour en revenir à cette discussion (BDD XML vs BDD relationnelle... ce qui induit plus ou moins XQuery vs SQL), j'ai cru comprendre qu'elles existent ces BDD XML gérant les conflits en mode multi-utilisateurs, la sécurité, l'intéropérabilité, etc... C'est le cas de
SQL Server 2005 il me semble mais il y en a d'autres (ouf !

). L'avantage de ce type de BDD est qu'elles implémentent des technologies telles que XQuery et XPath (voire XLink peut-être ?). Celles-ci sont formées différemment des BDD relationnelles en reprennant le concept de l'arbre XML.
Il n'y a pas si longtemps, XQuery 1.0 et XPath 2.0 sont passées au stade de recommendations, ce qui leur confère quand même une certaine maturité/fiabilité. Reste à voir comment c'est implémenté, ce que je ne sais pas pour ma part. ( c'est sans doute ce point que tu as voulu souligner, Hubert

)
Maintenant, pour le peu que j'en ai compris, XQuery et XPath permettent d'accéder plus rapidement aux données (
sauvegardées sous leur forme XML) que ne le ferait SQL et les possibilités sont plus étendues.
Je fais comme tout le monde dans ce sujet, je m'avance peut-être un peu aussi
mais je dis ça par rapport aux liens que je vous ai montré dans mon intervention précédente.
XLink, quant à lui, permet de lier directement les données contenues dans la base au document affiché, ce qui supprime les requêtes...
Ca, c'est ce qu'on m'en a dit, je n'ai pas vérifié. C'est ce qui fait que j'ai tendance à croire que ces BDD XML sont des solutions plus puissantes que les BDD relationnelles. Le seul bémol que j'y trouve, c'est la complexité induite et la remise en cause de nos habitudes.
Pour finir, il me semble que la frontière entre ces deux types de BDD se réduise étant donné que certaines BDD relationnelles implémentent XQuery.