Я думаю, что проблема может заключаться в том, что 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-FO с использованием XSL-T.
Надеюсь, это поможет.