Ошибка в вычислении разницы дат в днях в XSLT - PullRequest
0 голосов
/ 25 мая 2018

Я застрял в расчете разницы между двумя датами в XSLT.

Мой XML:

<?xml version="1.0" encoding="utf-8"?>
<LIST>
    <OUTPUT>
        <LOG>
            <item>
                <DocNo>123456789</DocNo>
                <CreationDate>2018-05-22</CreationDate>
            </item>
            <item>
                <DocNo>111222333</DocNo>
                <CreationDate>2018-05-24</CreationDate>
            </item>
        </LOG>
    </OUTPUT>
</LIST>

Мой XSLT:

<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xalan="http://xml.apache.org/xalan" version="2.0">
    <xsl:template match="/">
        <Rowsets>
            <Rowset Name="Bulk">
                <xsl:for-each select="LIST/OUTPUT/LOG/item">
                    <Row>
                        <DocumentNo>
                            <xsl:value-of select="DocNo"/>
                        </DocumentNo>
                        <CreationDate>
                            <xsl:value-of select="CreationDate"/>
                        </CreationDate>
                        <DateDiff>
                            <xsl:value-of select="days-from-duration(xs:date(CreationDate) - xs:date('2018-05-24'))"/>
                        </DateDiff>
                    </Row>
                </xsl:for-each>
            </Rowset>
        </Rowsets>
    </xsl:template>
</xsl:stylesheet>

Теперь, когдаЯ запускаю этот XML & XSLT здесь , он отлично работает и дает мне правильный вывод.

Но теперь, когда я сохраняю этот XSLT и XML в SAP MII и запускаю его, блок XSLT Transformation Action, яошибка ниже:

Необработанное исключение из XSL_Transformation_0 при попытке вызвать метод javax.xml.transform.Transformer.transform (javax.xml.transform.Source, javax.xml.transform.Result)нулевого объекта, загруженного из локальной переменной 'процессор'

Я действительно не уверен, что происходит.У кого-нибудь есть подсказка?

Спасибо

1 Ответ

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

Исходя из того, что вы включили пространство имен xalan (ненужное для вашей таблицы стилей), я предполагаю, что SAP MII XSLT Transformation Action использует Xalan в качестве преобразователя.

Похоже, Xalan только XSLT 1.0.Когда я запускаю ваше преобразование в Oxygen / XML с использованием Xalan, я получаю:

Severity: fatal
Description: Could not find function: days-from-duration
Start location: 15:119

Severity: fatal
Description: function token not found.
Start location: 15:119

Severity: fatal
Description: java.lang.NullPointerException - null

Когда я работаю с преобразователем XSLT 2.0, он работает просто отлично.

...