0

XML 复杂类型是否可以包含另一个复杂类型的元素?如果是这样,包含的复杂类型的子元素是如何处理的?

4

1 回答 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 回答