XML/XSLT stylesheet/node
match="@*|node()"
<source lang="xml">
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>
</source>
node function: node()|@*
<source lang="xml">
File: Data.xml <?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="Transform.xslt" ?> <html>
<head> <title>A simple HTML page</title> </head>
<body>
Venus
description
- Diameter 12104 km (7505 miles)
- Moons: 0
- Mean temperature: 482C (900F)
- Length of one day: 243.01 earth days
- Length of one year: 224.7 earth days
</body>
</html> 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="html" version="4.0" indent="yes"/> <xsl:template match="node()|@*"> <xsl:copy> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:template> <xsl:template match="body"> <body> <xsl:apply-templates/>
comments </body> </xsl:template>
</xsl:stylesheet> Output: <?xml-stylesheet type="text/xsl" href="Transform.xslt" ><html>
<head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>A simple HTML page</title> </head> <body>
Venus
description
- Diameter 12104 km (7505 miles)
- Moons: 0
- Mean temperature: 482C (900F)
- Length of one day: 243.01 earth days
- Length of one year: 224.7 earth days
comments </body>
</html>
</source>