Aktuelle Remote-Seminare mit Durchführungsgarantie: Etwas Werbung in eigener Sache Termine: 21.09.-23.09.2020, 23.11.-25.11.2020, 07.12.-09.12.2020, 22.03.-24.03.2021, 07.06.-09.06.2021, 06.09.-08.09.2021XML Einführung und Grundlagen Termine: 20.10.2020, 13.11.2020, 10.12.2020, 25.03.2021, 10.06.2021, 09.09.2021XML - der professionelle Überblick Termine: 23.11.-26.11.2020, 29.03.-01.04.2021Einstieg in die Programmierung Termine: 14.12.-16.12.2020, 07.04.-09.04.2021XML, XSLT, XPath, XSL-FO Einführung Termine: Termin nach WunschEinstieg in C#.NET Termine: 21.09.-23.09.2020, 11.01.-13.01.2021, 26.05.-28.05.2021, 27.09.-29.09.2021VB.NET für Visual Basic-Programmierer Termine: 14.12.-16.12.2020, 08.03.-10.03.2021, 19.07.-21.07.2021, 23.08.-25.08.2021XML Grundlagen, XSL-FO, SVG, DocBook, DITA Termine: Termin nach WunschJava Grundlagen Termine: 30.11.-03.12.2020, 29.03.-01.04.2021C++ für Programmiereinsteiger Termine: 10.09.2020, 11.12.2020, 16.03.2021Neues Seminar: XProc Grundlagen Termine: 21.09.-25.09.2020, 01.03.-05.03.2021Java/JSP/HTML/JDBC/XML Komplett Termine: 07.09.-09.09.2020, 21.10.-23.10.2020, 23.11.-25.11.2020, 25.01.-27.01.2021, 12.04.-14.04.2021, 26.07.-28.07.2021Python für Programmiereinsteiger Last-Minute-Seminare, noch freie Plätze Python für Programmiereinsteiger07.09.-09.09.2020 XML Einführung und Grundlagen21.09.-23.09.2020 XML, XSLT, XPath, XSL-FO Einführung14.12.-16.12.2020

XML * XML-SCHEMA * XPATH * XSL * XSL-FO * SVG * XQUERY * XPROC * ANT * DIVERSES



XPath / XPath-Funktionen / XPath: Sequenz-Funktionen / XPath: generate-id()

XPath: generate-id()

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 und .

generate-id() in XSLT 2.0 / Xpath 2.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.






Vielen Dank für Ihr Interesse an meiner Arbeit.



V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/generate_id.html