MapForce - 将dayTimeDuration添加到dayTimeDuration

时间:2016-02-05 04:34:18

标签: xslt altova map-force

我正在尝试使用mapforce生成xslt 2.0文件。映射正在添加2个dayTimeDuration元素,这样做会导致以下错误;

core.add(xs:dayTimeDuration,xs:dayTimeDuration)不匹配。检查参数类型。  支持:+(xs:double,xs:double) - > XS:双

我认为xslt 2.0支持添加2 dayTimeDurations。有没有办法使用mapforce?

干杯 炖

2 个答案:

答案 0 :(得分:1)

有几乎相同的问题,首先尝试添加functx-library但是看到它在生成的xslt2-code中创建绝对路径,这不是很好。

嗯,事实证明你可以实现这个功能,但首先你必须做一些修改......

找到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>

你可以看出&#34;来源&#34;和&#34;目标&#34;元素似乎定义了输入和输出数据类型。事实上,他们只实现了&#34;添加&#34; -function for&#34; xs:decimal&#34;。您可以复制/粘贴此组件,然后重命名它并提供新的输入数据类型,在您的情况下,它们都是&#34; xs:dayTimeDuration&#34;。请注意,每种受支持的语言都有实现,但您可以省略那些不需要的语言。这里&#39; S 应该做些什么:

<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>

您的新功能现在应该出现在&#34;数学函数&#34;并且应该很好用。

答案 1 :(得分:0)

联系Altova(MapForce的制造商); 虽然XPath 2确实提供了subtract-dayTimeDurations操作,但目前这不是作为MapForce中的函数提供的。