我认为问题可能是 xsl-fo 不完整。该错误是在将 XML 转换为 XSL-FO 时发生还是在处理 XSL-FO 时发生?
另外,fo:root
如果元素位于xsl:stylsheet
. 不过,这可能特定于 XSL 处理器。(我正在使用撒克逊语。)
我对 Antenna House 没有任何经验,但我使用具有类似扩展的 RenderX。
下面是 XML 文件、XSL 样式表和生成的 XSL-FO 的示例。(这在 RenderX 中运行良好。)
XML 文件
<?xml version="1.0" encoding="UTF-8"?>
<root/>
XSL 样式表
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:rx="http://www.renderx.com/XSL/Extensions">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/root">
<fo:root>
<rx:meta-info>
<rx:meta-field name="title" value="Some Title"/>
<rx:meta-field name="author" value="DevNull"/>
<rx:meta-field name="subject" value="Some Subject"/>
<rx:meta-field name="keywords" value="abc def ghi jkl"/>
</rx:meta-info>
<fo:layout-master-set>
<fo:simple-page-master master-name="my-page">
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="my-page">
<fo:flow flow-name="xsl-region-body">
<fo:block/>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
</xsl:stylesheet>
XSL-FO 输出
<?xml version="1.0" encoding="UTF-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:rx="http://www.renderx.com/XSL/Extensions">
<rx:meta-info>
<rx:meta-field name="title" value="Some Title"/>
<rx:meta-field name="author" value="DevNull"/>
<rx:meta-field name="subject" value="Some Subject"/>
<rx:meta-field name="keywords" value="abc def ghi jkl"/>
</rx:meta-info>
<fo:layout-master-set>
<fo:simple-page-master master-name="my-page">
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="my-page">
<fo:flow flow-name="xsl-region-body">
<fo:block/>
</fo:flow>
</fo:page-sequence>
</fo:root>
我认为如果您将 renderx 扩展 ( rx:
) 换成天线房屋扩展,它应该可以工作。也许您应该先尝试渲染 XSL-FO,然后再尝试使用 XSL-T 生成 XSL-FO。
希望这可以帮助。