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: ...

Get Office 2003 XML now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.