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