JABFreeware has touched on a method that I have used; taking the FlowDocument content and creating an rtf then build a new Word document and save. However, you may not want to touch libraries like Microsoft.Office.Interop.Word.
There are some examples out there of other methods too. For example, you might want to look at the following open source FlowDocument editor here. It is old, but still informative and converts FlowDocuments to docx. This brings up looking into the OpenXml SDK from Microsoft's site (not enough rep for more links, but Google will get you there).
Also, you might find this useful as a reference. It is a Word add-on that you can get the source code to that will allow you to convert Word documents to FlowDocuments. It's backwards from the original request, but reversing the process is a possibility.
Hope some of this helps.
EDIT:
If you really want to cheat and the documents that you will be creating are really basic, you can. However, I know this to work only with docx.
- Create a simple word document with some formatting first (as a docx).
- Extract the contents and keep everything but the /word/document.xml file.
- Open the /word/document.xml file and use that as a template for your XSLT. I made a simple one here:
FlowDocument XML
<?xml version="1.0" encoding="utf-8"?>
<FlowDocument xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<Paragraph>
<Run FontWeight="Bold" Foreground="#FF0000">Testing</Run>
</Paragraph>
<Paragraph>
<Run FontWeight="Bold" Foreground="#0000FF">Testing2</Run>
</Paragraph>
</FlowDocument>
XSLT (only partially done for demo purposes)
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<xsl:template match="/x:FlowDocument">
<?mso-application progid="Word.Document"?>
<w:document xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:body>
<w:sect>
<w:p>
<xsl:for-each select="x:Paragraph">
<w:pPr>
<w:jc w:val="center" />
<w:spacing w:after="0" w:line="240" w:lineRule="auto"/>
</w:pPr>
<w:r>
<w:rPr>
<w:rFonts w:ascii="Segoe UI" w:hAnsi="Segoe UI" w:cs="Segoe UI" />
<w:sz w:val="18" />
<w:b w:val="on" />
<w:i w:val="off" />
<w:color>
<xsl:attribute name="w:val"><xsl:value-of select="x:Run/@Foreground"/></xsl:attribute>
</w:color>
</w:rPr>
<w:t><xsl:value-of select="x:Run" /></w:t>
</w:r>
</xsl:for-each>
</w:p>
</w:sect>
</w:body>
</w:document>
</xsl:template>
</xsl:stylesheet>
- Use and XmlDocument and XamlWriter to create the xml to transform.
- Save your transformation result as a new 'document.xml' and put it in the /word directory and package everything as an archive with a .docx extension.
The biggest headache is that FlowDocuments will probably be RGBA but WordML works with RBG in the color attribute.
So, there is a way to get everything with one xslt, but it is also headache. IMHO, the code from the OpenXmlWriter application would be a much cleaner solution. Or possibly a combination of both...