XSD中禁止的原始数据类型的空元素

在处理Web服务响应时,我遇到了Apache CXF的解析错误。它归结为返回一个空元素:
<myValue />
元素定义如下:
<xsd:element name="myValue" type="xsd:float" minOccurs="0">
现在我已经在CXF邮件列表上看到XSD规范不允许空值:   好吧,没有解决方法   这不是一个错误。一个空的   element对任何Decimal都无效   或日期类型或类似的东西。   因此,它应该抛出异常。   你有什么期望呢? 现在出现了一个问题:我在XML Schema规范中哪里可以找到这个约束?     
已邀请:
  我在哪里可以在XML Schema规范中找到这个约束? http://www.w3.org/TR/xmlschema-2/#float-lexical-representation   浮点值具有词汇   表示由a组成   尾数跟随,可选地,由   字符“E”或“e”,后跟一个   指数。   ...   指数和指数的表示   尾数必须遵循词汇规则   用于整数和小数。   ...   特殊价值观积极和   负无穷大而不是数字   有词汇表示INF,-INF   和NaN,分别。 所以
xs:float
至少需要一个尾数为
xs:decimal
......   decimal有词法表示   由有限长度的序列组成   十进制数字(#x30-#x39)   以小数分隔的句点   指示符。可选的前导标志是   允许。 ......并且空字符串不是有效的
xs:decimal
。 如果您没有此元素的值,则应尽量不要包含此元素。您的模式似乎允许省略此元素,因为
minOccurs
具有值
0
。其他解决方案是插入合适的替换值,如
0
NaN
。     
这不是一个明确的约束。 您应该能够将xsd更改为
<xsd:element name="myValue" type="xsd:float" minOccurs="0" default="0" />
然后能够为浮动提供一个空元素,而不会导致xml无效。 上面的示例意味着如果元素为空,则其值为0.注意,默认属性不适用于缺少的元素:缺少元素只是缺失,它们是否具有声明的默认值。 http://www.w3.org/TR/xmlschema-0/#OccurrenceConstraints   如果元素没有任何内容,则架构处理器为元素提供的值等于默认属性的值。但是,如果元素未出现在实例文档中,则架构处理器根本不提供该元素。 到目前为止我还没有使用过这个,但是为了防止个人错过了w3c规范,我已经在线验证器检查了一个带有默认值的空xs:float元素的xml被接受了(至少是这个在线验证器) :http://www.freeformatter.com/xml-validator-xsd.html)。     

要回复问题请先登录注册