在XML模式中,是否可以从复杂类型继承内容,但将内容限制为数值?

在XML模式中,是否可以从复杂类型继承内容,但将内容限制为数值?,xml,xsd,Xml,Xsd,我正在尝试编写一个XML模式,该模式将验证程序可以转换为一组XML配置文件的XML配置文件。数据源管道中的所有“端点”都应该能够是被动的(仅在响应请求时生成数据)或主动的(它们通过自动生成自己的请求以指定的速率连续生成数据) 这意味着,如果我们假设常量、模拟源和空源是可以在这些配置文件中指定的数据源端点元素的示例,则应认为以下XML有效: <Constant>5</Constant> <Constant updateRate="100">5</Const

我正在尝试编写一个XML模式,该模式将验证程序可以转换为一组XML配置文件的XML配置文件。数据源管道中的所有“端点”都应该能够是被动的(仅在响应请求时生成数据)或主动的(它们通过自动生成自己的请求以指定的速率连续生成数据)

这意味着,如果我们假设
常量
模拟源
空源
是可以在这些配置文件中指定的数据源端点元素的示例,则应认为以下XML有效:

<Constant>5</Constant>
<Constant updateRate="100">5</Constant>
<SimulatedSource updateRate="200" />
<NullSource />
我已开始使用ConstantSourceType,但我不确定如何继续:

<xs:complexType name="ConstantSourceType">
    <xs:complexContent>
        <xs:extension base="BaseSourceType">
        </xs:extension>
    </xs:complexContent>
</xs:complexType>

一个临时解决方案可以是:

<xs:complexType name="ConstantSourceType">
    <xs:simpleContent>
        <xs:extension base="xs:double">
            <xs:attribute name="updateRate" type="xs:double" />
        </xs:extension>
    </xs:simpleContent>
</xs:complexType>

但是,我不赞成此解决方案,因为这意味着每当我更改应视为其基本类型的内容(
BaseSourceType
)时,我都需要手动更新此类型定义

<xs:complexType name="ConstantSourceType">
    <xs:simpleContent>
        <xs:extension base="xs:double">
            <xs:attribute name="updateRate" type="xs:double" />
        </xs:extension>
    </xs:simpleContent>
</xs:complexType>