使用xs:extension& xs:限制在一起?

时间:2010-08-05 19:28:34

标签: xml schema xsd

在编写XML模式时,我试图做这样的事情

<xs:complexType name="ValueWithUnits">
    <xs:simpleContent>
        <xs:extension base="xs:double">
            <xs:attribute name="uom" fixed="second"/>
            <xs:minInclusive="0"/>
            <xs:maxInclusive="10"/>
        </xs:extension>
    </xs:simpleContent>
</xs:complexType>

不幸的是,xs:extension允许使用xs:属性,而xs:minInclusive&amp; xs:maxInclusive在xs:restriction上是允许的,但不能在一起。

这种结构的最佳方法是什么?我是否必须使用适当的单位和&amp;来定义扩展名。然后用我的min&amp; amp;最大值?

1 个答案:

答案 0 :(得分:17)

您需要单独定义双重限制

<?xml version="1.0" encoding="utf-8" ?>
<!--Created with Liquid XML Studio Developer Edition 8.1.4.2482 (http://www.liquid-technologies.com)-->
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:simpleType name="RestrictedDouble">
        <xs:restriction base="xs:double">
            <xs:minInclusive value="0" />
            <xs:maxInclusive value="10" />
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="ValueWithUnits">
        <xs:simpleContent>
            <xs:extension base="RestrictedDouble">
                <xs:attribute name="uom" fixed="second" />
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
</xs:schema>