XPath / XPath-Funktionen / XPath: Sequenz-Funktionen / XPath: generate-id()
![]() |
![]() |
➪ Die generate-id()-Funktion generiert eine Zeichenkette, die einen Node (zum Beispiel Element, Attribut, Kommentar) eindeutig benennt. Ist der Node leer, so ist auch die Zeichenkette leer.
Auf dieser Seite:In XSLT 1.0/XPath 1.0 hat dieser Aufruf...
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<root>
<xsl:for-each select="//Mensch">
<m id="{generate-id()}">
<xsl:for-each select="child::*[name() !='Kauf']">
<xsl:element name="{name()}">
<xsl:attribute name="id">
<xsl:value-of select="generate-id()"/>
</xsl:attribute>
<xsl:value-of select="."/>
</xsl:element>
</xsl:for-each>
</m>
</xsl:for-each>
</root>
</xsl:template>
</xsl:stylesheet>
... dieses Resultat:
<root>
<m id="d0e13">
<id id="d0e17">1</id>
<name id="d0e20">Holzflos</name>
<vorname id="d0e23">Hugo</vorname>
<Gehalt id="d0e26">234.56</Gehalt>
<idOrt i d="d0e29">1</idOrt>
</m>
<m id="d0e197">
<id id="d0e199">4</id>
<name id="d0e202">Nixlos</name>
<vorname id="d0e205">Nicole</vorname>
<Gehalt id="d0e208">1234.56</Gehalt>
<idOrt id="d0e211">1</idOrt>
</m>
</root>
Siehe auch xsl:number und Gruppieren in XPath 1.0/XSL 1.0.
In XSLT 2.0/Xpath 2.0 kann die generate-id()-Funktion Fehler verursachen, wenn einige Items der Sequenz aus Zeichenketten oder Zahlen bestehen.
<xsl:template match="/">
<root>
<xsl:for-each select="//Mensch, 'Hallo'">
<m id="{generate-id()}"/>
</xsl:for-each>
</root>
</xsl:template>
Die Fehlermeldung lautet dann beispielsweise:
Programmname: Saxon-EE 9.7.0.19
Fehlerlevel: fatal
XPTY0004: Required item type of first argument
of generate-id() is node();
supplied value has item type xs:string
URL: http://www.w3.org/TR/xpath20/#ERRXPTY0004
wg / 4. Oktober 2018
Fragen? Anmerkungen? Tipps?
Bitte nehmen Sie Kontakt zu mir auf.
V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn
☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de