We looked at the xml->xsl-fo->pdf route, and decided instead to use dblatex->LaTeX->pdf (starting from a slightly modified DocBook XML, which therefore required additional rules in dblatex). We were very satisfied with the result, and were able to do a lot with LaTeX style sheets, including a substantial change in output format when we moved to a different publisher.
I should add that our documents were not run-of-the-mill: they were grammars, and sometimes included non-Roman fonts (Bangla) and right-to-left text (Arabic and Thaana scripts). A lot of things came together at just the right time, like XeTeX (think Unicode-aware LaTeX) and good Nasta'liq fonts. Most people don't have those problems :-).
At my work, i had to generate PDFs based on the outcome of a workflow. My first thought was to use xml, xsl-fo. I spent 100s of hours trying to get everything to work properly with Apache FOP (mostly a layout issue with the XML stylesheet. It seems really limited) [1]. In the end we went with PrinceXML [2]. Much easier solution.
You're right about that, but sadly years of "xml-abuse" in the early naughts has given xml a bad reputation. So much so that other, inferior, markups were created like json and yaml. We ain't ever going back.
Meanwhile, pdf just worked-- until you the first time you crack it open and see what's inside the pdf file. I'll never forget the horror after I committed to a time-critical project where I claimed... "Oh, I'll just extract data from the PDF, how bad could it possibly be!"
PDF is being used wrongly. For information exchange, data should be AUTHORED in a parseable format with a schema.
Then PDF should be generated from this as a target format.
There is a solution: xml, xsl-fo.