如何为元素设置多个范围以及 XSD 中的默认值?

How to have multiple ranges for an element as well as a default value in XSD?

我正在写一篇XSD。如果我有这样的元素,我想将 Value 的默认值设置为整数。看起来如果我有一个元素的数字范围,我可以这样做,但如果我有多个范围,如下所示,我无法将默认值添加到 Value。有没有办法为定义了多个范围的元素添加默认值?我认为类型 xs:union 不允许这样做,但我确定如何获得默认值和一组范围。

<xs:element name="Value" default="20">
    <xs:annotation>
        <xs:documentation xml:lang="en">
            Some Random Annotation
        </xs:documentation>
    </xs:annotation>
    <xs:simpleType>
        <xs:union>
            <xs:simpleType>
                <xs:restriction base='xs:integer'>
                    <xs:minInclusive value="20"/>
                    <xs:maxInclusive value="30"/>
                </xs:restriction>
            </xs:simpleType>
            <xs:simpleType>
                <xs:restriction base='xs:integer'>
                    <xs:minInclusive value="40"/>
                    <xs:maxInclusive value="54"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:union>
    </xs:simpleType>
</xs:element>

union可以有默认值,只要和union定义的类型一致即可。在这种情况下,默认值 20 满足第一个简单类型的约束,因此没有问题。如果默认值为 200,则不允许。

默认值是元素声明的一部分,而不是类型定义的一部分;只要您作为默认值提供的值在该类型的值 space 范围内,就可以接受。 (也就是说,如果您收到错误消息,这不是原因。)