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的选项可能是您最好的计划.

相关文章

Css3如何实现鼠标移上变长特效?(图文+视频)
css3怎么实现鼠标悬停图片时缓慢变大效果?(图文+视频)
jquery如何实现点击网页回到顶部效果?(图文+视频)
css3边框阴影效果怎么做?(图文+视频)
css怎么实现圆角边框和圆形效果?(图文+视频教程)
Css3如何实现旋转移动动画特效