我很难计算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&amp; XSLT here,它工作正常并给我正确的输出。
但是现在当我在SAP MII中存储这个XSLT和XML并运行它的XSLT Transformation Action块时,我得到以下错误:
XSL_Transformation_0中未捕获的异常,同时尝试调用从本地变量&#加载的null对象的方法javax.xml.transform.Transformer.transform(javax.xml.transform.Source,javax.xml.transform.Result) 39;处理器&#39;
我真的不确定是怎么回事。有人有线索吗?
由于
答案 0 :(得分:0)
基于您包含xalan
命名空间(样式表不需要),我假设 SAP MII XSLT转换操作使用Xalan作为其转换器。
看来Xalan只是XSLT 1.0。当我使用Xalan在Oxygen / XML中运行转换时,我得到:
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变换器运行时,它可以正常工作。