如何在 IIB 中将字符串转换为带有两位小数的十进制

How to transform String to decimal with two fractional digits in IIB

我正在 IBM Integration Bus 中处理映射,我想将字段字符串从 DFDL 格式转换为带有两个小数位的十进制。但是我希望两个小数位出现,即使它们是零。

例如:

我在 DFDL 上的字符串:0058700 预期结果:587.00

我尝试了以下 xpath 代码

($valor cast as  xs:decimal?) div 100

但是没用,没有显示小数点后两位 (即:587)

我还尝试用模式定义一个简单类型:

<simpleType name="D10"> 
      <restriction base="decimal">
        <totalDigits value="10"/>
        <fractionDigits value="2"/>
        <pattern value="[0-9]{1,12}[.][0-9]{2}"/>
      </restriction>
    </simpleType>

如果您的 DFDL 描述格式的字符串是“0058700”,但其逻辑值实际上是“587.00”,那么您需要使用 dfdl:textNumberPattern 属性 来告诉 DFDL 是这种情况. “####0V00”的模式应该可以解决问题。 'V' 表示(虚拟)小数点的位置。