<xslTutorial creator="nicmila@idoox.com">
<index keywords="generate-id() xsl:copy xsl:attribute"/>
<description>Function generate-id generates id conforming to XML spec. <stylesheet id='id3'/> uses this function to add id to all elements in source XML. </description>
<xmlSource id="id1">
<AAA name='top'>
<BBB pos='1' val='bbb'>11111</BBB>
<BBB>22222</BBB>
</AAA>
<AAA name='bottom'>
<BBB>33333</BBB>
<BBB>44444</BBB>
</AAA>
</xmlSource>
<attValues>
<value match="">
</value>
</attValues>
<xslStylesheet id="id2">
<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>
</xslStylesheet>
<xslStylesheet id="id3">
<xsl:template match="*">
<xsl:copy select=".">
<xsl:attribute name="id">
<xsl:value-of select="generate-id()"/>
</xsl:attribute>
<xsl:for-each select="@*">
<xsl:attribute name="{name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:for-each>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
</xslStylesheet>
</xslTutorial>