[XSLT] unieke id genereren met generate-id() zonder node-set

Pagina: 1
Acties:

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Bestaat er een mogelijkheid om met de xslt functie generate-id() een ID te genereren die uniek is zonder dat ik daarvoor een aparte node set hoef te geven? Ik weet eigenlijk al wel dat dat niet kan, maar mischien bestaat er toch wel een truukje voor zodat het wel mogelijk is. Ik genereer namelijk uit een node met daarin 1 child node een steeds een redelijk stuk HTML met daarin een aantal elementen die allen een eigen unieke id moeten krijgen. Deze ID geef ik ook mee aan een aantal JS functies die iets met de elementen uitvoeren of wijzigen als ergens op geklikt wordt bijvoorbeeld. Het lijkt me een beetje vreemd dat ik voor ieder ID dat ik wil genereren een element moet gaan aanmaken.

Het lijkt me verder niet echt nodig om iets van code er bij te geven, dat zou toch niet echt veel meer informatie geven. Geen dat de uitleg van het probleem zou ondersteunen in ieder geval.

Noushka's Magnificent Dream | Unity


  • djc
  • Registratie: December 2001
  • Laatst online: 08-09-2025

djc

generate-id() maakt voor elke source node een uniek ID, dus niet voor result nodes. Het is specifiek bedoeld om nodes mee te identificeren, dus wat jij bedoelt kan niet met die functie. Wellicht moet je zelf eerst door de source heenlopen met een SAX parser om er wat ID's aan toe te voegen.

Rustacean


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 22-03 18:12
Ik heb wel een paar oplossingen die het probleem oplossen, maar ik had in het begin eigenlijk verwacht van de functie dat deze voor iedere keer dat je hem aanroept dat ie dan een unieke id genereert.

De oplossing die ik nu gebruik is dit:

code:
1
<xsl:variable name="id" select="concat('id1_',generate-id())"/>


of iets dergelijks. Dat werkt wel. Ik moet dan wel voor iedere unieke id die ik wil genereren zelf even een unieke string maken (id2, id3, etc) maar dat maakt niet zo veel uit.

Noushka's Magnificent Dream | Unity