У меня есть XML-файл
<results xmlns="zwierzeta">
<animal family="kurowate" genus="tetrao">
<name>skrzekot</name>
<food>wszystkożerca</food>
</animal>
<animal family="kurowate" genus="lyrurus">
<name>cietrzew</name>
<status>zagrożony</status>
<food>wszystkożerca</food>
<lifespan>15</lifespan>
</animal>
<animal family="kurowate" genus="tetrao">
<name>głuszec</name>
<status>zagrożony</status>
<food>wszystkożerca</food>
<lifespan>12</lifespan>
</animal>
</results>
И я пытаюсь создать простую таблицу с тремя столбцами: имя, статус, еда.
Мой xsl-файл:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns="zwierzeta" xmlns:a="anatomia">
<xsl:template match="/">
<fo:root>
<fo:layout-master-set>
<fo:simple-page-master master-name="wzorzec1" page-width="210mm" page-height="297mm" margin-top="1cm" margin-bottom="1cm" margin-left="1cm" margin-right="1cm">
<fo:region-body margin="3cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="wzorzec1">
<fo:flow flow-name="xsl-region-body" font-family="Arial">
<fo:block font-size="20" text-align="center">Raport</fo:block>
<fo:table border="1pt solid black" text-align="center" border-spacing="2pt">
<fo:table-header>
<fo:table-row>
<fo:table-cell border="1pt solid black"> <fo:block>Nazwa</fo:block> </fo:table-cell>
<fo:table-cell border="1pt solid black"> <fo:block>Status</fo:block> </fo:table-cell>
<fo:table-cell border="1pt solid black"> <fo:block>Odzywianie</fo:block> </fo:table-cell>
</fo:table-row>
</fo:table-header>
<fo:table-body>
<xsl:apply-templates select="animal"/>
</fo:table-body>
</fo:table>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
<xsl:template match="animal">
<fo:table-row>
<fo:table-cell border="1pt solid black">
<fo:block><xsl:value-of select="name"/></fo:block>
</fo:table-cell>
<fo:table-cell border="1pt solid black">
<fo:block><xsl:value-of select="status"/></fo:block>
</fo:table-cell>
<fo:table-cell border="1pt solid black">
<fo:block><xsl:value-of select="food"/></fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:template>
</xsl:stylesheet>
Это дает мне ошибку:
Not valid: org.apache.fop.fo.ValidationException: "fo:table-body" is missing child elements. Required content model: marker* (table-row+|table-cell+) (See position 1:975)
Я понимаю, что проблема в том, что часть apply-templates не оценивается.Но я не знаю, почему это происходит.Я пытался скопировать разные файлы, которые работали правильно и меняли имена элементов, но это не помогло.