微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

XSD:将属性限制为xs:float或“”

我正在尝试在XSD中定义一个元素类型,我想要一个可选属性,如果存在,可以包含一个浮点数,或者为空(但仍然存在).

即:

<xs:element name="MyElement">
    <xs:complexType>
        <xs:attribute name="optionalFloatAttribute" type="xs:float" use="optional"/>
    </xs:complexType>
</xs:element>

需要“修复”以允许以下所有xml: –

<MyElement/>
 or
 <MyElement optionalFloatAttribute=""/>
 or
 <MyElement optionalFloatAttribute="3.14159"/>

我能看到这样做的唯一方法是将类型更改为xs:string,并将xs:restriction与正则表达式一起使用.但这对我来说似乎并不理想.有没有更好的办法?

我必须能够支持xml的这些变体 – 程序和现有的xml是遗留的,我试图反向创建一个模式,以匹配我在我们必须视为有效的xml时看到的无数变体.

解决方法

我不认为有办法处理这个并使用xs:float.从根本上说,它归结为空字符串不是有效数字的事实.您通常期望值为0,或者元素完全丢失.作为以下问题的答案有一个很好的解释:

Empty elements for primitve datatypes forbidden in XSD

似乎使用xs:string和regexp的选项可能是您最好的计划.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。