我正在尝试编写一个XML模式,该模式将验证程序可以转换为一组pipes and filters的XML配置文件。所有"端点"在数据源管道中,应该能够被动(仅响应请求生成数据)或活动(它们通过自动生成自己的请求以指定的速率连续生成数据)。
这意味着如果我们假设Constant
,SimulatedSource
和NullSource
是可以在这些配置文件中指定的数据源端点元素的示例,则以下XML应被视为有效:
<Constant>5</Constant>
<Constant updateRate="100">5</Constant>
<SimulatedSource updateRate="200" />
<NullSource />
我遇到的问题是定义架构以验证Constant
元素 - 这些元素只允许数字内容但允许可选{{1} }属性。在XML Schema中,我编写了以下基类型:
updateRate
我已经<!-- Generic source type -->
<xs:complexType name="BaseSourceType">
<xs:attribute name="updateRate" type="xs:double" />
</xs:complexType>
开始了,但我不确定如何继续:
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>
)