ОШИБКА: «Неподдерживаемый элемент XSL» http://www.w3.org/1999/XSL/Transform:for-each-group'' - PullRequest
0 голосов
/ 08 мая 2018

Я генерирую PDF из XML-документа через XSL, используя Java, и получаю следующую ошибку:

ОШИБКА: «Неподдерживаемый элемент XSL» http://www.w3.org/1999/XSL/Transform:for-each-group''

Пожалуйста, найдите мою таблицу стилей XSL ниже

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    version="3.0">

  <xsl:param name="rows-per-page" select="4"/>

  <xsl:output method="html" indent="yes" html-version="5"/>

    <xsl:template match="/receipt">
        <html>
            <head>
            <style>
                @page {size: a4 landscape;}
                tbody { page-break-after: always; }
            </style>
            </head>
            <body>

                <table >
                    <thead>
                        <tr >
                            <th >Line</th>
                            <th>Item Code</th>
                        </tr>
                    </thead>
                  <xsl:for-each-group select="order/page/line_number" group-adjacent="(position() - 1) idiv $rows-per-page">
                      <tbody>
                          <xsl:apply-templates select="current-group()"/>
                      </tbody>
                 </xsl:for-each-group>
                </table>
            </body>
        </html>
    </xsl:template>

    <xsl:template match="line_number">
        <tr style="font-size: 9px;">
            <td><xsl:value-of select="." /></td>
            <td><xsl:value-of select="following-sibling::product_code[1]" /></td>
        </tr>
    </xsl:template>

</xsl:stylesheet>

1 Ответ

0 голосов
/ 08 мая 2018

Ваша таблица стилей объявлена ​​как version="3.0". Вам понадобится процессор, который поддерживает как минимум XSLT 2.0, чтобы использовать xsl:for-each-group.

Если вы используете процессор XSLT по умолчанию из JRE, Xalan, то вы переходите на XSLT 1.0.

Обновите ваш код / ​​конфигурацию, чтобы использовать Saxon в качестве процессора XSLT для выполнения таблиц стилей XSLT 2.0 или 3.0. Существует несколько способов установить Saxon в качестве процессора XSLT в Java. Этот ответ @Wayne Burkett перечисляет их и приводит примеры.

...