File: Data.xml
<chapter>
<para>para1</para>
<figure>
<title>title 1</title>
<graphic fileref="pic1.jpg" />
</figure>
<para>para2</para>
<sect1>
<para>para3</para>
<figure>
<title>"He Lights"</title>
<graphic fileref="pic2.jpg" />
</figure>
<para>line 1</para>
<sect2>
<para>line 2</para>
<figure>
<title>title 2</title>
<graphic fileref="pic1.jpg" />
</figure>
</sect2>
</sect1>
</chapter>
File: Transform.xslt
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" omit-xml-declaration="yes" />
<xsl:template match="chapter | sect1 | sect2">
<xsl:copy>
<xsl:attribute name="uid">
<xsl:value-of select="generate-id(.)" />
</xsl:attribute>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Output:
<chapter uid="d2e1">
<para>para1</para>
<figure>
<title>title 1</title>
<graphic fileref="pic1.jpg"/>
</figure>
<para>para2</para>
<sect1 uid="d2e17">
<para>para3</para>
<figure>
<title>"He Lights"</title>
<graphic fileref="pic2.jpg"/>
</figure>
<para>line 1</para>
<sect2 uid="d2e33">
<para>line 2</para>
<figure>
<title>title 2</title>
<graphic fileref="pic1.jpg"/>
</figure>
</sect2>
</sect1>
</chapter>
|