【问题标题】:Do not remove trailing zero after fraction in xsd不要删除 xsd 中小数后的尾随零
【发布时间】:2019-07-12 11:08:59
【问题描述】:

xsd 中的fractiondigits 删除我不想要的尾随零。请帮助

我正在使用下面的代码来限制我的十进制值

<xs:simpleType name="Decimal_15_2">
    <xs:restriction base="xs:decimal">
        <xs:totalDigits value="15"/>
        <xs:fractionDigits value="2"/>
    </xs:restriction>
</xs:simpleType>

预期结果为

<principalAmount>500.00</principalAmount>

但实际输出是

<principalAmount>500</principalAmount>

【问题讨论】:

  • 什么进程的实际输出?你有一个模式和一个实例文档,但你没有告诉我们你正在做什么处理,用什么软件产品。
  • 这是我将字符串解析为 XML 的 TIBCO 流程。
  • 然后你需要标记问题(或在论坛上提出)知道该软件产品的人会找到它。
  • 谢谢迈克尔。我使用正则表达式找到了解决方案。干杯..!!!

标签: xml xsd schema


【解决方案1】:

我不知道相关的 TIBCO 产品规范对此有何规定,但它并未违反任何 XSD 规则。 fractionDigits 方面限制了值空间,而不是词法空间:value='2' 表示该值必须是 0.01 的精确倍数,而不是该值必须用两位十进制数字写入。您的工具已生成对您的架构有效的输出。

您可以使用pattern facet 将词汇空间限制为包含两个十进制数字,但我非常怀疑任何实例生成器都会注意到这一点,因为生成符合特定正则表达式的字符串是相当具有挑战性的任务。

【讨论】:

    【解决方案2】:

    根据 W3C.org - 前导零和尾随零对于十进制数据类型是可选的。

    参考 - W3C.org
    阅读文章 - SUPPRESSION OF LEADING AND TRAILING ZEROES IN TYPE R DECIMAL NUMBER
    IBM 的另一篇文章 - standards rules for Leading or Trailing zeroes

    【讨论】:

    • 谢谢.. 但由于业务需求,我必须保留尾随零,尽管它是可选的。我在模式中使用了简单的正则表达式来限制我的输出。模式是
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    • 1970-01-01
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多