EXSLT date: разница "ошибка" при смене месяца
У меня возникают некоторые проблемы при использовании даты по умолчанию: шаблон 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.
NB: невозможно установить другой процессор XSLT:)
Изменить: Дальнейшие исследования показали, что "под капотом", JAXP работает Xalan (системное свойство ('xsl:vendor') возвращает "Apache Software Foundation (Xalan XSLTC)")
Изменить: Источник проблемы был определен (!), Но я не могу найти какое-либо приемлемое решение. Шаблон date: разница использует "document('')/*/..." для локального получения набора данных из xsl-документа. Трюк "document('')" просто не будет работать с моим процессором. Я попытался добавить локальный набор данных в переменную и создать набор узлов с помощью exslt:node-set(), но я уже сталкиваюсь с проблемами DTM, и добавление этого метода уменьшает объем данных, которые я могу справиться даже больше чем уже:(
1 ответ
Давайте закроем это, просто для удовольствия:) Решением было поместить "структуру" в переменную и затем использовать exslt:node-set, чтобы превратить ее в набор узлов. Это пожирает много ресурсов, но это то, что вы получаете, когда используете очень ограниченную (и старую!) Систему.