Минимальный пример для преобразования этого фрагмента XML в таблицу XSL-FO:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="fo xhtml"
version="3.0">
<xsl:output indent="yes"/>
<xsl:template match="/">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="sample">
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="sample">
<fo:flow flow-name="xsl-region-body">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
<xsl:template match="values">
<fo:table>
<fo:table-column column-width="*"/>
<fo:table-column column-width="*"/>
<fo:table-column column-width="*"/>
<fo:table-header>
<fo:table-row>
<fo:table-cell>
<fo:block font-weight="bold">Step</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block font-weight="bold">Step description</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block font-weight="bold">Expected result</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-header>
<fo:table-body>
<fo:table-row>
<xsl:apply-templates/>
</fo:table-row>
</fo:table-body>
</fo:table>
</xsl:template>
<xsl:template match="item">
<fo:table-cell>
<fo:block>
<xsl:value-of select="html/xhtml:p"/>
</fo:block>
</fo:table-cell>
</xsl:template>
</xsl:stylesheet>
В https://xsltfiddle.liberty -development.net / gWmuiJ4 , который преобразует ваш входной фрагмент в FO
<?xml version="1.0" encoding="UTF-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="sample">
<fo:region-body/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="sample">
<fo:flow flow-name="xsl-region-body">
<fo:block>
<fo:table>
<fo:table-column column-width="*"/>
<fo:table-column column-width="*"/>
<fo:table-column column-width="*"/>
<fo:table-header>
<fo:table-row>
<fo:table-cell>
<fo:block font-weight="bold">Step</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block font-weight="bold">Step description</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block font-weight="bold">Expected result</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-header>
<fo:table-body>
<fo:table-row>
<fo:table-cell>
<fo:block> i am a step</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>i am a desc</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block>i am a res</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
, который отображается как таблица, вам нужно будет добавить атрибуты, чтобы иметь границы.
Чтобы вставить этот подход в существующую таблицу стилей, вы должны принять во внимание входное пространство имен и добавить префиксные выражения или выбрать выражения, как вы это делали в других частях таблицы стилей, а затем вам нужно только вставить последние два шаблоны в таблицу стилей и убедитесь, что вы используете <xsl:apply-templates/>
или <xsl:apply-templates select="values"/>
(опять же, с любым необходимым префиксом пространства имен) в том месте, где вы хотите вставить таблицу в контексте родителя элемента values
.