Mega Code Archive

 
Categories / XML Tutorial / XSLT StyleSheet
 

Uses generate-id() to add id to all elements in source XML

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="*">       <xsl:copy>         <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> </xsl:stylesheet>   Output: <?xml version="1.0" encoding="UTF-8"?><data id="d2e1">     <AAA id="d2e3" name="top">       <BBB id="d2e5" pos="1" val="bbb">11111</BBB>       <BBB id="d2e8">22222</BBB>     </AAA>     <AAA id="d2e12" name="bottom">       <BBB id="d2e14">33333</BBB>       <BBB id="d2e17">44444</BBB>     </AAA> </data>