There are plenty of use cases for processing Word documents in which both the input and output are Word documents. Since XSLT is a particularly suitable tool for incrementally processing XML, it also works quite nicely for modifying Word documents. An important tool for making incremental modifications to a document is the identity transformation. Example 3-9 shows the canonical identity transformation, exactly as it appears in the XSLT recommendation itself (http://www.w3.org/TR/xslt#copying).
Example 3-9. The identity transformation, identity.xsl
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="@*|node( )"> <xsl:copy> <xsl:apply-templates select="@*|node( )"/> </xsl:copy> </xsl:template> </xsl:stylesheet>
What is the identity transformation? Shown in Example 3-9, it’s a
with one template rule that effectively copies the source tree to the
result tree unchanged. Here’s how it works. The
single template rule, with its pattern
matches all elements, attributes, comments, text, and processing
instructions in the source tree. Each time the template rule fires, a
shallow copy of the node is created (using the
xsl:copy element), and templates are applied to
all of the node’s attributes and children. Thus, the
entire source document is recursively copied, one node at a time.
(This powerful template rule and variations of it also appear in
Chapter 4, in Example 4-9,
saveDataOnly.xsl, and ...