Имеет почти такую же проблему, сначала попытался добавить functx-library, но увидел, что она создает абсолютный путь в сгенерированном xslt2-коде, что не очень хорошо.
Ну, оказывается, можно реализовать эту функцию, но сначала вы должны сделать некоторые изменения ...
Найдите каталог установки MapForce и MapForceLibraries -subdirectory. Из того, что открыть «core.mff», и найти
<group name="math functions">
<component name="add" growable="true" growablebasename="value">
<sources>
<datapoint name="value1" type="xs:decimal"/>
<datapoint name="value2" type="xs:decimal"/>
</sources>
<targets>
<datapoint name="result" type="xs:decimal"/>
</targets>
Как может показаться на «источники» и «цели» элементы, кажется, определить в- или из типов данных. Как бы то ни было, они только реализовали «add» -функцию для «xs: decimal». Вы можете скопировать/вставить этот компонент, затем переименовать его и предоставить новые типы данных, в вашем случае они оба «xs: dayTimeDuration». Обратите внимание, что существуют реализации для каждого поддерживаемого языка, но вы можете опустить те, которые не нужны. Вот должно работать:
<component name="addDayTimeDuration" growable="true" growablebasename="value">
<sources>
<datapoint name="value1" type="xs:dayTimeDuration"/>
<datapoint name="value2" type="xs:dayTimeDuration"/>
</sources>
<targets>
<datapoint name="result" type="xs:dayTimeDuration"/>
</targets>
<implementations>
<implementation language="xslt">
<operator value="+"/>
</implementation>
<implementation language="xslt2">
<operator value="+"/>
</implementation>
<implementation language="builtin">
<function name="Core_Add"/>
</implementation>
</implementations>
<description>
<short>result = value1 + value2</short>
<long>Result is the dayTimeDuration value of adding value1 and value2.</long>
</description>
</component>
Ваша новая функция должна появиться в «математические функции» и должны быть хорошо использовать.
https://www.w3.org/TR/xpath-functions-30/#func-add-dayTimeDurations предполагает, что это возможно. Я понятия не имею о MapForce. Возможно, лучше спросить на форуме поддержки. –
Мартин, спасибо за подтверждение, можно в xslt 2.0. Я его разместил на своем форуме, но не получил никаких ответов. – stew