我在w3schools上找到了以下示例。
<xs:complexContent>
<xs:restriction base="xs:integer">
<xs:attribute name="prodid" type="xs:positiveInteger"/>
</xs:restriction>
</xs:complexContent>
我正在搜索许多文档,但仍然没有得到它:当complexContent没有“mixed”属性时,该元素没有任何文本节点,因此不需要任何数据类型。但为什么<xs:restriction base="xs:integer">
?据我所知,这绝对没有什么用?
答案 0 :(得分:2)
根据XML Schema规范,我不认为上述复杂的内容片段(或链接页面上的内容片段)是正确的,因此您的关注点是有意义的。如果您使用XML Schema验证引擎进行尝试,则应该抛出错误。具有复杂内容(仅元素或混合)的复杂类型不能通过简单类型的限制来派生。
具有空内容和属性的复杂类型可以定义如下:
<xs:complexType>
<xs:attribute name="prodid" type="xs:positiveInteger"/>
</xs:complexType>
仅仅为了完整性:在技术上可行的是,派生出一个必须具有&#34;空内容的复杂类型&#34; (请注意引号)来自简单类型,但是,这必须通过扩展来完成,而简单类型必须是包含空字符串的单例空格,以便不允许任何内容。然后,获得的复杂类型将具有必须为空字符串的简单内容 - 因此严格来说,它实际上不是空内容,但在验证实例时它确实如此。
<xs:simpleType name="empty">
<xs:restriction base="xs:string">
<xs:length value="0"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType>
<xs:simpleContent>
<xs:extension base="empty">
<xs:attribute name="prodid" type="xs:positiveInteger"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>