我有一个类似的复杂类型:
<xsd:complexType name="NightlyRate">
<xsd:complexContent>
<xsd:extension base="com:Money">
<xsd:attribute name="night" type="com:Number" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
现在,我想将一个子元素添加到“NightlyRate”,它本身是complexType。我尝试添加:
<xsd:element name="xxx" type"com:Money"/>
在complexContent元素之后,但是抛出错误的那个元素是不期望的,也是问题的一部分,这个复杂元素的类型与扩展基类型相同。我正在使用JAXB。还有其他方法可以达到这个目的吗?
谢谢!
答案 0 :(得分:2)
要获取xsd:complexType
中的子元素,您必须在其中放置xsd:sequence
(第一级,连同注释和属性),并指出您想要的...元素。在此序列中,您可以包含其他已定义类型的元素或定义新类型。
参见XSD complex elements at W3Schools和womp的例子。
在某些情况下,您可能希望使用xsd:any
元素来允许尚未定义的扩展(松散)。
答案 1 :(得分:1)
<xsd:complexType name="NightlyRate">
<xsd:complexContent>
<xsd:extension base="com:Money">
<xsd:sequence>
<xsd:element name="xxx" type"com:Money">
<xsd:complexType>
<xsd:complexContent>
/// Attributes here
</xsd:complexContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="night" type="com:Number" use="required"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>