Whether you would be better
to transform your XML directly to 'Formatting Objects' or to
transform it indirectly ( to 'Docbook' or something similar with an
off-the-shelf transformation to xsl-fo ) is a moot point.
I wouldn't go down that route, via DocBook.
Of course this all depends a _lot_ on the quality of the HTML. HTML
3.2 with presentation guff all over it is a lot more trouble to work
with than pure-semantics HTML 4 + CSS. This is true for any processing
toolset. HTML 4 with a bad case of "divitis" is actually one of the
easiest targets for conversion to XSL:FO. Bad practice for coding
semantic HTML, but a closer match to your target here.
HTML is somewhat more generalised than DocBook, so converting
"upwards" to DocBook is unlikely to have any more structure implied in
it than is simply inferred automatically from the HTML. DocBook isn't
some fantastic panacea anyway - I've rarely used it in practice, as
its minor advantages over HTML are all too often outweighed by being
yet another format. Unless you need book-level structuring, if all you
need is inline markup, paragraphs and headings, then HTML 4 gives you
nearly as much anyway.
I'd consider going from HTML to DocBook if I was concatenating a
number of pages to make one single DocBook representing the whole set
as a site, but very rarely for single page stuff.
As to the use of pre-existing transforms for DocBook to XSL:FO, then
these are certainly available and well-done, but they're not as useful
as one might think. This is for two reasons: they're not as necessary
as one might think, and it's not so hard to do without them.
The off-the-shelf DocBook stylesheets have a big advantage in that
they're competent, full implementations of all DocBook elements. Now
most of us just don't need that, because we only author a tiny subset
of DocBook anyway. I've never used the <kitchen-sink> element,
although I'm sure DocBook has one somewhere. This is particularly the
case for auto-generated DocBook out of HTML. Secondly, it's not that
hard to write a minimal XSLT to make simple (i.e. little formatting
subtlety) XSL:FO. Thirdly it's harder to make XSL:FO with complex
formatting. If you don't need this, either use the pre-exisitng
stylesheet or write your own - neither is impossibly hard. If you _do_
need complex formatting, you probably have to write your own XSLT
whether you like it or not.