XSDs - 如何有一个可能的负整数也可以是空白

XSDs - how to have a possibly negative integer that can also be blank

我正在尝试在 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>

虽然这只是 returns 如果使用空格会出错。谁能帮忙,我是这方面的新手?

谢谢

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

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

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