http://www.exslt.org/date/functions/difference/index.htmlで提供されているデフォルトのdate:difference EXSLTテンプレートを使用すると、いくつかの問題が発生します。問題を絞り込んで、ソースであるXSLプロセッサを見つけることができました。問題は、私がアクセスできるXSLTプロセッサが、「2011-02-28T10:00:00」と「2011-03-01T10:00:00」の日付の違いが-P27DT9Hであると言っていることです。違いは実際にはPT15Hです(この期間は、XalanやSaxonなどの他のXSLTプロセッサが正しく計算するものです-Oxygen XML Editorでテストされています)。
XSLテンプレート(date:difference)を編集して、XSLプロセッサで正しく機能させる方法はありますか?私が使用しているプロセッサはJAXP1.3だと思います。入手可能なSAPMII12.1のドキュメントから理解するのは少し難しいです。
注意:別のXSLTプロセッサをインストールすることはできません:)
編集:さらなる調査によると、JAXPはXalanを実行しています(system-property('xsl:vendor')は "Apache Software Foundation(Xalan XSLTC)"を返します)
編集:問題の原因は特定されましたが(!)、許容できる解決策を見つけることができません。date:differenceテンプレートは、「document('')/ * / ...」を使用して、xsl-documentからローカルにデータセットを取得します。「document('')」トリックは私のプロセッサでは機能しません。ローカルデータセットを変数に追加し、exslt:node-set()を使用してノードセットを作成しようとしましたが、すでにDTMの問題が発生しており、そのメソッドを追加すると、可能なデータ量が減少しますすでに以上に処理します:(