【发布时间】:2014-04-03 08:32:35
【问题描述】:
假设我有架构
<xs:complexType name="superType">
<xs:sequence>
<xs:element type="s:itemType" name="item" maxOccurs="unbounded" minOccurs="1">
</xs:element>
</xs:sequence>
<xs:attribute type="s:stringNameType" name="name" use="required"/>
<xs:attribute type="s:extraType" name="extra" use="optional" default="ALL"/>
</xs:complexType>
还有我的下一个元素:
<xs:complexType name="elegantType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="s:stringNameType" name="name" use="required"/>
<xs:attribute type="s:extraType" name="extra" use="optional" default="ALL"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
如您所见,elegantType 和 superType 具有相同的属性:
<xs:attribute type="s:stringNameType" name="name" use="required"/>
<xs:attribute type="s:extraType" name="extra" use="optional" default="ALL"/>
是否可以使用扩展为该元素创建基本类型?
我尝试定义基本类型,但出现错误: 派生类型的内容类型和其基类型的内容类型必须是混合的,或者都是纯元素的。类型“superType”只是元素,但它的基本类型不是。
这是我尝试做的:
<xs:element type="s:itemType" name="item" maxOccurs="unbounded" minOccurs="1">
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
<!-- <xs:attribute type="s:stringNameType" name="name" use="required"/>
<xs:attribute type="s:extraType" name="extra" use="optional" default="ALL"/>-->
</xs:complexType>
<xs:complexType name="resourceBase" mixed="true">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute type="s:stringNameType" name="name" use="required"/>
<xs:attribute type="s:extraType" name="extra" use="optional" default="ALL"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
我的问题是我有很多元素,其中大多数都有相同的属性。我需要创建基本元素
【问题讨论】:
标签: xml xsd xsd-validation