http://www.w3.org/1999/XSL/Transform

c.generateId ([current : nodeset], [root : nodeset]) : string

Mittels generateId können IDs für die Bestimmung von Daten an einer Position generiert werden. Die Methode ähnelt der XSLT-Funktion generate-id(). Das heißt das Ergebnis beschreibt den Weg durch das DOM zum gewünschten Node.

Optional können zwei Parameter gesetzt werden. Wird current nicht gesetzt, so ist current das aktuelle Node. Sollte root nicht gesetzt werden, dann wird das DocumentRoot verwendet.

<xsl:value-of select="c.generateId()" />
<xsl:value-of select="c.generateId($_element/@attribute)" />
<xsl:value-of select="c.generateId(., $_root)" />
<xsl:value-of select="c.generateId($_element/@attribute, $_root)" />

Die erste Ausgabe generiert eine ID ausgehend vom DocumentRoot bis zum aktuellen Node. Die ID könnte so aussehen: 'E0E4E7E1A5'.

Die zweite Ausagabe erstellt eine ID, die vom DocumentRoot bis zum angegebenen Node reicht. Das Node könnte schon vor oder erst nach dem aktuellen Node stehen. IDs könnten dann so aussehen: 'E0E4E7E0' oder 'E0E4E7E1E3A0'.

Die dritte und vierte Ausgabe generiert eine ID ausgehend vom angegebenen Root bis hin zum angegebenen Node. Sollte eine ID generiert werden, die an einem angegeben Root beginnt und beim aktuellen Node endet, so kann nicht nur das Root-Element angegeben werden, da es sonst als aktuelles Element und nicht als Root-Element angesehen wird. 

Wichtig: Eine ID, die mit Angabe eines Root-Elements erzeugt wurde, kann nur in einer Datensicht aufgelöst werden, die "kleiner" ist.

Beispiel: c.generateID(image, /onion:content/root) wird in einer Methode aufgerufen, die die Datensicht progressive hat. Durch die Angabe des Parameters root wird im generierten String sozusagen das Element "onion:content" nicht berücksichtigt und die ID daher so erzeugt, als wenn "root" das Wurzel-Element dieser Datensicht wäre. Das zugehörige c.resolveNode($id) wird in einer Methode mit der Datensicht content ausgeführt. Dort ist "root" bereits das Wurzel-Element. Andersherum würde die Auflösung nicht korrekt funktionieren!

Siehe auch