Creating Word Documents
It’s very easy to create Word documents from XSLT. We saw the definitive “Hello, World” example for WordprocessingML in Chapter 2. Example 3-1 shows the “Hello, World” example for creating a Word document from XSLT.
Example 3-1. Creating a Word document from XSLT
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml">
<xsl:template match="/">
<xsl:processing-instruction name="mso-application">
<xsl:text>progid="Word.Document"</xsl:text>
</xsl:processing-instruction>
<w:wordDocument>
<xsl:attribute name="xml:space">preserve</xsl:attribute>
<w:body>
<w:p>
<w:r>
<w:t>Hello, World!</w:t>
</w:r>
</w:p>
</w:body>
</w:wordDocument>
</xsl:template>
</xsl:stylesheet>As you can see, there’s little to it, beyond
slapping
xsl:stylesheet and
xsl:template elements around the
w:wordDocument element. The only additional
provisions you need to make are for generating the
mso-application
PI and the xml:space="preserve" directive in the
result. (Using the
xsl:attribute
element as opposed to a literal xml:space
attribute ensures that whitespace will be preserved in the result but
not in the stylesheet.)
Obviously, Example 3-1 isn’t terribly interesting in its own right. What is interesting is how you can extend it. With XSLT’s power and a basic knowledge of WordprocessingML at your disposal, you can create dynamic Word documents quite easily. We’ll take a look at one example of doing this: ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access