XML 复杂类型是否可以包含另一个复杂类型的元素?如果是这样,包含的复杂类型的子元素是如何处理的?
问问题
1280 次
1 回答
2
是的,它可以。这是一些任意 XSD (ACORD) 的片段:
<xsd:complexType name="CovOptionXLat_Type">
<xsd:sequence>
<xsd:element ref="Language" minOccurs="0"/>
<xsd:element ref="ShortName" minOccurs="0"/>
<xsd:element ref="PlanName" minOccurs="0"/>
<xsd:element ref="OLifEExtension" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="id" type="xsd:ID"/>
<xsd:attribute name="DataRep" type="DATAREP_TYPES"/>
</xsd:complexType>
<xsd:element name="OLifEExtension" type="OLifEExtension_Type"/>
<xsd:complexType name="OLifEExtension_Type" mixed="true">
<xsd:sequence>
<xsd:any processContents="skip" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="VendorCode" use="required" type="xsd:string"/>
<xsd:attribute name="ExtensionCode" type="xsd:string"/>
<xsd:attribute name="DataRep" type="DATAREP_TYPES"/>
<xsd:attribute name="SystemCode" type="xsd:string"/>
</xsd:complexType>
为了更好地可视化上述内容:
复杂类型可以定义属性、文本节点、与其他元素混合,或者只是元素,或者根本没有元素/属性(空)。
子元素可以是简单的、复杂的或任何类型。它们将像任何其他元素一样被处理。如果您正在考虑 XML 文档实例的根元素,那么嵌套元素(在复杂类型中)和文档元素之间的区别在于,前者可以根据需要发生多次,并且您可以拥有任意多次根据需要不同的类型和名称;而对于后者,您只能拥有一个文档元素。
还有一些与元素如何命名以及它们可能具有的类型有关的规则(例如,在某些情况下,您可能无法使用相同类型的相同名称),如何组合元素(选择、顺序、全部) ,独特的粒子属性等。
如果您正在寻找 XSD 的一般介绍,互联网上有很多。如果您习惯于更正式的写作,我发现XSD 入门读物很好。
于 2013-09-27T16:49:25.287 回答