generate-id() amelioré ? [XSLT] - XML/XSL - Programmation
Marsh Posté le 23-03-2006 à 10:10:57
Si les id existants commencent tous par 'id...' il n'y a pas de risque je pense.
Marsh Posté le 23-03-2006 à 12:47:10
C'est un processus recursif en quelque sorte. Les articles sont ajoutés par paquet. C'est mon generate id qui me sort des chaine du type "id11111111". Donc quelque soit le format de l'id generé (qui m'importe peu d'ailleurs), le probleme reste entier
Marsh Posté le 23-03-2006 à 22:59:34
Quel parseur utilises-tu?
Perso j'utilise MSXML et les id sont très différents...
Donc tu ajoutes des articles sans id dans un xml qui contient déjà des articles avec id, c'est bien ça?
Normalement les id générés sont uniques, je suppose que l'algo prend en compte l'endroit où se trouve le noeud dans l'arbre xml.
As-tu déjà constaté des doublons ou c'est juste une question?
Marsh Posté le 24-03-2006 à 10:05:32
j'utilise xsltproc (LINUX).
"Donc tu ajoutes des articles sans id dans un xml qui contient déjà des articles avec id, c'est bien ça?" oui
"Normalement les id générés sont uniques", au moment de la generation oui, mais il ne regarde pas s'il existe deja d'autres attribut id dans le fichier source, et donc ne donne aucune garantie sur l'unicité des id généré par rapport a ceux existants deja.
"As-tu déjà constaté des doublons ou c'est juste une question? " Oui, je l'ai constaté : 3 doublons sur 300 articles, (donc 1% on va dire).
Marsh Posté le 21-03-2006 à 15:03:39
Bonjour a tous
Je possede un fichier XML contenant une liste d'article, dont le noeud contient un attribut id unique pour chaque article.
<article id="id3452852"> ... </article>
Je le merge avec un autre fichier XML (contenant de nouveaux articles), mais ceux ci n'ont pas encore d'attribut id.
<article> ... </article>
Je souhaiterai affecter un attribut id a ces nouveaux articles, et bien sur different de ceux qui existent deja. C'est la que le bas blaisse : la fonction generate-id peut tres bien me sortir un id qui existe deja.
Avez vous une solution a mon probleme ?
Merci d'avance