EXSLT date: разница "ошибка" при смене месяца - PullRequest
0 голосов
/ 02 марта 2011

У меня возникают некоторые проблемы при использовании даты по умолчанию: разностный шаблон EXSLT, предоставленный на http://www.exslt.org/date/functions/difference/index.html. Я смог сузить проблему и найти источник: мой XSL-процессор.Проблема в том, что процессор XSLT, к которому у меня есть доступ, говорит, что разница между датами «2011-02-28T10: 00: 00» и «2011-03-01T10: 00: 00» равна -P27DT9H, когдана самом деле разница в PT15H (эта длительность - то, что правильно вычисляют другие процессоры XSLT, такие как Xalan и Saxon - протестировано с помощью Oxygen XML Editor).

Теперь есть способ отредактировать шаблон XSL (дата: разница)заставить его нормально работать с моим процессором XSL?Я думаю, что процессор, который я использую, - это JAXP 1.3 - это немного сложно понять из доступной документации по SAP MII 12.1.

Примечание: невозможно установить другой процессор XSLT:)

Редактировать: Дальнейшие исследования показали, что "под капотом" JAXP использует Xalan (системное свойство ('xsl: vendor') возвращает "Apache Software Foundation (Xalan XSLTC)")

Редактировать:Источник проблемы был идентифицирован (!), Но я не могу найти какое-либо приемлемое решение.Шаблон date: разница использует «document ('') / * / ...» для локального получения набора данных из xsl-документа.Трюк "document ('')" просто не будет работать с моим процессором.Я попытался добавить локальный набор данных в переменную и создать набор узлов с помощью exslt: node-set (), но я уже сталкиваюсь с проблемами DTM, и добавление этого метода уменьшает объем данных, которые я могуобрабатывать даже больше, чем уже: (

1 Ответ

0 голосов
/ 14 марта 2011

Давайте закроем это, просто для удовольствия :) Решением было поместить «структуру» в переменную и затем использовать exslt: node-set, чтобы превратить ее в набор узлов.Это израсходует много ресурсов, но это то, что вы получаете, когда используете очень ограниченную (и старую!) Систему.

...