XPath 3.0, XPath 2.0, XPath 1.0 / 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