解决问题的最佳方法是使用验证查看器/编辑器检查XSL FO。当您打开它们时,许多(例如oXygen)将向您显示XSL
FO结构中的错误,并且它们将描述问题(与报告的错误一样)。
在您的情况下,您显然有一个fo:table-body作为fo:block的子级。它不可能是。一个fo:table-
body只有一个有效的父对象fo:table。您可能缺少fo:table标记,或者在该位置错误地插入了fo:block。
我认为我做的事情可能略有不同。我会将XHTML内容内联到XSL
FO中,就在您需要的位置。然后,我将创建一个标识转换,复制所有基于fo的内容,但使用XSL转换XHTML部分。这样,您实际上可以在像oXygen这样的XSL编辑器中逐步进行转换,并查看错误发生的位置以及原因。像任何其他骗子一样。
注意:您可能还希望查看其他XSL,尤其是在HTML可能具有任何style =“”
CSS属性的情况下。如果不是纯HTML的情况,那么您将需要一种更好的方法,使用CSS到FO处理HTML。
http://www.cloudformatter.com/css2pdf基于此完整的转换。该常规样式表可在此处获得:http : //xep.cloudformatter.com/doc/XSL/xeponline-fo-
translate-2.xsl
我是该样式表的作者。它的功能远远超出您的要求,但是具有相当复杂的解析递归,可以将CSS样式转换为XSL FO属性。



