MapForce - 将 dayTimeDuration 添加到 dayTimeDuration
MapForce - Add dayTimeDuration to dayTimeDuration
我正在尝试使用 mapforce 生成 xslt 2.0 文件。映射添加了 2 个 dayTimeDuration 元素,这样做会导致以下错误;
core.add(xs:dayTimeDuration、xs:dayTimeDuration)没有匹配项。检查参数类型。
支持:+(xs:double, xs:double) -> xs:double
我认为 xslt 2.0 支持添加 2 dayTimeDurations。有没有办法使用 mapforce 做到这一点?
干杯
炖菜
联系 Altova(MapForce 的制造商)之后;
虽然 XPath 2 确实提供了一个 subtract-dayTimeDurations 操作,但目前还没有在 MapForce 中作为函数提供。
遇到几乎相同的问题,首先尝试添加 functx-library,但看到它在生成的 xslt2 代码中创建了绝对路径,这不是很好。
嗯,事实证明你可以实现那个功能,但首先你必须做一些修改...
找到您的 Mapforce 安装目录和 MapForceLibraries 子目录。从中打开 "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>
正如您所见,"sources" 和 "targets" 元素似乎定义了输入和输出数据类型。实际上,他们只为 "xs:decimal" 实现了 "add" 功能。您可以 copy/paste 这个组件,然后重命名它并提供新的输入输出数据类型,在您的情况下它们都是 "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>
您的新函数现在应该出现在 "math functions" 中并且应该可以很好地使用。
我正在尝试使用 mapforce 生成 xslt 2.0 文件。映射添加了 2 个 dayTimeDuration 元素,这样做会导致以下错误;
core.add(xs:dayTimeDuration、xs:dayTimeDuration)没有匹配项。检查参数类型。 支持:+(xs:double, xs:double) -> xs:double
我认为 xslt 2.0 支持添加 2 dayTimeDurations。有没有办法使用 mapforce 做到这一点?
干杯 炖菜
联系 Altova(MapForce 的制造商)之后; 虽然 XPath 2 确实提供了一个 subtract-dayTimeDurations 操作,但目前还没有在 MapForce 中作为函数提供。
遇到几乎相同的问题,首先尝试添加 functx-library,但看到它在生成的 xslt2 代码中创建了绝对路径,这不是很好。
嗯,事实证明你可以实现那个功能,但首先你必须做一些修改...
找到您的 Mapforce 安装目录和 MapForceLibraries 子目录。从中打开 "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>
正如您所见,"sources" 和 "targets" 元素似乎定义了输入和输出数据类型。实际上,他们只为 "xs:decimal" 实现了 "add" 功能。您可以 copy/paste 这个组件,然后重命名它并提供新的输入输出数据类型,在您的情况下它们都是 "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>
您的新函数现在应该出现在 "math functions" 中并且应该可以很好地使用。