XSD - 如何使用可能为空的负整数

时间:2015-03-05 14:59:57

标签: xml xsd

我试图在XSD中编写一些代码,以允许一个整数字符,可以是-1到9或空白。

我尝试过使用

<xs:simpleType name="RdrInteger1Include-1AllowBlank">
    <xs:restriction base="xs:integer">
        <xs:minInclusive value="-1"/>
        <xs:maxInclusive value="9"/>
        <xs:whiteSpace value="collapse"/>
        <xs:pattern value="[0-9]{0,1}"/>
    </xs:restriction>
</xs:simpleType>

虽然如果使用空白,这只会返回错误。任何人都可以帮忙,我是这个人的完全新手吗?

由于

2 个答案:

答案 0 :(得分:2)

创建一个包含两个成员的联合类型。一个是您在上面定义的类型;另一个是xsd:string的限制,它只接受空字符串,或一个空格,或一系列空白字符(无论你理解为空白)。该类型的用户应指向union,而不是整数限制。

由于两个成员类型的词汇空间是不相交的,因此在实践中,在定义联合时,将它们置于哪个顺序并不重要。

答案 1 :(得分:2)

Michael Sperberg-McQueen给了你一个可能的答案。另一种可能性是定义一个数据类型,该数据类型是(您的受限制的)整数的列表,其中列表的长度被约束为0到1(包括0和1)。两种解决方案都将验证相同的输入文档,但它们会以不同的方式为数据分配类型,如果使用数据绑定技术和/或模式感知的XSLT / XQuery处理数据,这可能会影响可用性。例如,如果@x是此类型的属性,那么在模式感知XPath中,如果使用my(list)解决方案,测试(@ x = -1)将按预期工作,但会引发Michael的类型错误(在属性值为空的情况下解决方案。