This is another copy, I simplified your block nesting (but still not completely). I think I added most of the spacing/alignment back in. (I note that you were using space-before/space-after [or margins] at top/bottom of tables cells, these were discarded as being conditional. You also used margins when you wanted start-indent/end-indent). I also added padding="2pts" to all cells and fixed the line-heights to reflect the heights you had specified in the block-containers. This actually makes it a pretty decent-looking form. As stated on the prior copy -- We don't process expressions, so I pre-calculated the values. I serialized the nested table and moved the rotated table cell out of the table (It should have worked, but didn't, I need to debug that one). I also got rid of a lot of your block-containers, but didn't add the spacing back into the block within the container (this may have destroyed something you were trying to show, because some of them had odd positioning or dimensions relative to the table-cell they were placed in). On comment someone should make in this session is: "The simpler you make your XSL-FO, the greater your chance of getting what you expect. In particular, one should avoid nesting of blocks, tables, inlines, & wrappers; unless absolutely necessary. Use blocks rather than block-containers if that is adequate, etc." These samples have some wrappers that set no properties; some empty inline and wrapper elements; 2,3,4-level nesting of fo:blocks (some of which set no additional info, thus are totally redundant); and a large number of block-containers that are unnecessary. I think you would get more-consistent results across all vendors if the files were as clean/simplified as possible.