generate-id() generates id conforming to XML spec : generate id « XSLT stylesheet « XML Tutorial






File: Data.xml
<?xml version="1.0" encoding="utf-8"?>
<data>

    <AAA name="top">
      <BBB pos="1" val="bbb">11111</BBB>
      <BBB>22222</BBB>
    </AAA>
    <AAA name="bottom">
      <BBB>33333</BBB>
      <BBB>44444</BBB>
    </AAA>
</data>
File: Transform.xslt

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet
      version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
      <DIV>
        <B>
          <xsl:text>generate-id(//AAA)  : </xsl:text>
        </B>
        <xsl:value-of select="generate-id(//AAA)  "/>
      </DIV>
      <DIV>
        <B>
          <xsl:text>generate-id(//BBB)  : </xsl:text>
        </B>
        <xsl:value-of select="generate-id(//BBB)  "/>
      </DIV>
      <DIV>
        <B>
          <xsl:text>generate-id(//AAA[1])  : </xsl:text>
        </B>
        <xsl:value-of select="generate-id(//AAA[1])  "/>
      </DIV>
      <DIV>
        <B>
          <xsl:text>generate-id(//*[1])  : </xsl:text>
        </B>
        <xsl:value-of select="generate-id(//*[1])  "/>
      </DIV>
      <DIV>
        <B>
          <xsl:text>generate-id(//xslTutorial/*[1])  : </xsl:text>
        </B>
        <xsl:value-of select="generate-id(//xslTutorial/*[1])  "/>
      </DIV>
    </xsl:template>
</xsl:stylesheet>

Output:

<?xml version="1.0" encoding="UTF-8"?><DIV><B>generate-id(//AAA)  : </B>d2e3</DIV><DIV><B>generate-id(//BBB)  : </B>d2e5</DIV><DIV><B>generate-id(//AAA[1])  : </B>d2e3</DIV><DIV><B>generate-id(//*[1])  : </B>d2e1</DIV><DIV><B>generate-id(//xslTutorial/*[1])  : </B></DIV>








5.56.generate id
5.56.1.Assign value from generate-id(.) to attribute
5.56.2.for-each select=/addressbook/address[generate-id(.)=generate-id(key(zipcodes, zip)[1])]
5.56.3.generate-id() generates id conforming to XML spec
5.56.4.uses generate-id() to add id to all elements in source XML.