Incidentally, I did get tables working fairly well without too much work,
though I can't vouch much for how I did it, due to my limited XSL knowledge.

In dbk2wp.xsl, my changes were:
- implement an 'align' parameter for <para> and <simpara> elements to be
passed to make-paragraph
- changed the <entry> template to recognize the align= attribute and pass it
through the call to apply-templates for the cell contents
- changed the <table> template to pass a role= attribute to make-table as
the 'style' parameter

In dbk2wordml.xsl, my changes were:
- in make-paragraph, use 'align' to generate a paragraph alignment element
- in make-table, use 'style' parameter to select a table style

As straight bug fixes, there are several spots where <simpara> elements are
not handled properly (i.e., in <entry> and <listitem>), so I made trivial
fixes to those templates.  There also seem to be a couple spots in
dbk2wp.xsl where apply-templates is missing a mode='doc.body' attribute (in
the templates for admonitions and for varlistentry).  Without that, I get
errors like "simpara encountered in note, but no template matches", or
"varlistentry encountered in variablelist, but no template matches".

I'm actually working with stylesheets that were modified to generate Word
2007 OOXML, that I found here:

http://www.brians-brain.org/projects/org-to-docx.html

There seems to be little development activity on these stylesheets, so I'm
not sure how to proceed from here.  Some of my changes would apply easily to
the official distribution, though I have not tried to implement the reverse
transformations since I don't have a need for those.  Are patches welcome?

-- Dave



On Mon, Feb 28, 2011 at 12:56 PM, Steve Ball <[email protected]>wrote:

> Hi David,
>
> Although I have not yet checked, I believe the problem is that the content
> of the cells is not in a <para>. That is, your DocBook should look like:
>
> <thead><row><entry><para>a1</para></entry><entry><para>a2</para>
> </entry></row></thead>
>     <tbody><row><entry><para>b1</para></entry><entry><para>b2</para>
> </entry></row></tbody>
>
> As for being able to produce professional looking tables, there is some
> work to do in setting up table column widths and borders properly. However,
> YMMV.
>
> Cheers,
> Steve Ball
>
> On 01/03/2011, at 7:16 AM, David Hinds wrote:
>
> I'm trying to convert a very simple docbook file to WordML using the
> roundtrip XSL stylesheets.  I'm having trouble with tables: all cell
> contents are missing after the conversion.
>
> Here is my input document:
>
> <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article PUBLIC
> "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/doc\
> book/xml/4.5/docbookx.dtd">
> <article lang="en">
> <table frame='all'><title>Sample Table</title>
>   <tgroup cols="2">
>     <colspec colname='c1'/><colspec colname='c2'/>
>     <thead><row><entry>a1</entry><entry>a2</entry></row></thead>
>     <tbody><row><entry>b1</entry><entry>b2</entry></row></tbody>
>   </tgroup>
> </table>
> </article>
>
> This renders ok in HTML with:
>
> xsltproc --path .../docbook-xsl/html -o test.html \
>   docbook.xsl test.xml
>
> but with this:
>
> xsltproc --path .../docbook-xsl/roundtrip -o test.wml \
>   --stringparam wordml.template template.xml \
>   dbk2wordml.xsl test2.xml
>
> the cells in the resulting table are all empty, i.e. the resulting WordML
> looks like:
>
>             <w:tc>
>               <w:tcPr>
>                 <w:tcW w:w="" w:type="dxa"/>
>               </w:tcPr>
>               <w:p/>
>             </w:tc>
>
> I get the same result with either xsltproc or saxon.  I am using
> docbook-xsl-1.76.1.
>
> My long term goal is to be able to programmatically generate reports as
> templated, styled Word documents from asciidoc source files, with docbook as
> an intermediate format, in a linux environment.  I need relatively few
> features: headers, body text, simple bullet lists, PNG images, and
> reasonably professional-looking tables (where that means I need control over
> column alignment and borders).
>
> -- Dave
>
>
>
>

Reply via email to