Salut,
Je suis pas bien certain de comprendre ce que tu veux...
Voici ce que je comprends : tu souhaites pouvoir trier les éléments <personne> en fonction de l'id, par ordre croissant. De même, tu veux pouvoir les lister dans un ordre aléatoire.
Hum...
Il y a une chose importante à comprendre avec XML : c'est un langage de description de données. C'est à dire qu'il permet de stocker des données dans un fichier, suivant un schéma défini. C'est à peu près tout.
Tout ce qui concerne le traitement des données se fait à l'aide d'un programme dans un langage quelconque.
Donc plus simple que ce que tu décris, pas vraiment... En fait, si parviens à un résultat qui te convient avec des performances qui te conviennent, alors... Y'a pas grand chose à redire.
Il n'y a pas une méthode véritable, c'est un peu chacun sa sauce. Tu peux utiliser un tableau (PHP gérant beaucoup mieux les tableaux que les données XML, avec des fonctions de tris très efficaces), tu peux trier "manuellement" en implémentant un système de tri de ton choix... Je sais pas trop quoi te dire...
Ce qu'il faut bien garder à l'esprit, c'est que contrairement à une base de données, un document XML doit être analysé de bout en bout. On ne peut pas y échapper (en tout cas avec PHP, pour ce qui est d'autres langages, je n'en sais fichtre rien).
Cela veut dire que puisque tu es obligée de parcourir chaque élément de ton fichier XML, un par un, autant profiter de cette boucle pour commencer à trier, par exemple en utilisant un tableau dont l'index numérique est l'id de chaque <personne>. Pour un affichage aléatoire, tu peux alors dupliquer le tableau et utiliser shuffle().
J'espère que ça répond à ton interrogation.
--
Neige
Souvent la réponse à votre question se trouve dans la
doc. Commencez par là ;)