Mega Code Archive

 
Categories / XML Tutorial / XSLT StyleSheet
 

Assign value from generate-id( ) to attribute

File: Data.xml <?xml version="1.0"?> <greet>  <greeting xml:lang="en">Welcome</greeting>  <greeting xml:lang="fr">Bienvenue</greeting>  <greeting xml:lang="es">Bienvenido</greeting>  <greeting xml:lang="de">Willkommen</greeting> </greet> 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:output method="xml" indent="yes" />   <xsl:output doctype-system="greeting.dtd" />   <xsl:template match="greet">     <xsl:element name="greeting">       <xsl:apply-templates select="greeting" />     </xsl:element>   </xsl:template>   <xsl:template match="greeting">     <xsl:element name="welcome">       <xsl:attribute name="xml:lang"><xsl:value-of           select="@xml:lang" />       </xsl:attribute>       <xsl:attribute name="id"><xsl:value-of           select="generate-id(.)" />       </xsl:attribute>       <xsl:value-of select="current()" />     </xsl:element>   </xsl:template> </xsl:stylesheet> Output: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE greeting   SYSTEM "greeting.dtd"> <greeting>    <welcome xml:lang="en" id="d2e3">Welcome</welcome>    <welcome xml:lang="fr" id="d2e6">Bienvenue</welcome>    <welcome xml:lang="es" id="d2e9">Bienvenido</welcome>    <welcome xml:lang="de" id="d2e12">Willkommen</welcome> </greeting>