XML复杂类型是否包含另一种复杂类型的元素?如果是这样,所包含的复杂类型的子元素如何处理?
答案 0 :(得分: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文档实例的根元素,那么嵌套元素(在复杂类型中)和文档元素之间的区别在于前者可以根据需要多次发生,并且您可以拥有尽可能多的元素你想要的不同类型和名字;而对于后者,您只能有一个文档元素。
还有与如何命名元素及其可能具有的类型相关的规则(例如,在某些条件下,您可能无法使用相同类型的相同名称),元素如何组合(选项,序列) ,所有),Unique Particle Attribution等
如果你正在寻找一般的XSD介绍,互联网上有很多。如果你习惯于更正式的写作,我会发现XSD primer是一个很好的阅读。