You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JAXB编写XML Schema设置xsd:double默认值为无穷大报错如何解决

报错原因

XML Schema 1.0/1.1规范中对xsd:double类型的特殊值规定如下:

  • 正无穷大的合法字面量为INF,不允许添加前置+号
  • 负无穷大的合法字面量为-INF,你当前min的默认值写法是正确的
  • NaN的合法字面量为NaN

你代码中max的默认值写为+INF不符合规范,因此触发了值约束校验错误。

修正方案

直接将max元素的默认值修改为INF即可,修正后的XSD片段如下:

<xsd:element name="NumericParameter">
    <xsd:complexType>
      <xsd:complexContent>
        <xsd:extension base="batsignal:DetectorParameter" >
          <xsd:sequence>
            <xsd:element name="min" type="xsd:double" default="-INF"/>
            <xsd:element name="max" type="xsd:double" default="INF" />
            <xsd:element name="step" type="xsd:double" default="0x0.0000000000001P-1022" />
          </xsd:sequence>
        </xsd:extension>
      </xsd:complexContent>
    </xsd:complexType>
</xsd:element>
Double.MIN_VALUE默认值说明

XSD是平台无关的规范,没有直接引用Java常量的快捷方法,你当前使用的十六进制浮点表示0x0.0000000000001P-1022完全符合规范,和Double.MIN_VALUE的取值完全等价,也可以替换为更易读的十进制科学计数法写法2.2250738585072014E-308,两者效果完全一致。
使用修正后的定义生成JAXB类时,三个字段的默认值会自动映射为Java的Double.NEGATIVE_INFINITY、Double.POSITIVE_INFINITY和Double.MIN_VALUE,完全匹配你的需求。

内容的提问来源于stack exchange,提问作者yesennes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 09:39:02