XML Schema complexType 元素

  • 定义和使用

    complexType 元素定义一个复杂类型。 复杂类型元素是包含其他元素和/或属性的XML元素。
    父元素:element, redefine, schema
  • 语法

    <complexType
    id=ID
    name=NCName
    abstract=true|false
    mixed=true|false
    block=(#all|list of (extension|restriction))
    final=(#all|list of (extension|restriction))
    any attributes
    >
    
    (annotation?,(simpleContent|complexContent|((group|all|
    choice|sequence)?,((attribute|attributeGroup)*,anyAttribute?))))
    
    </complexType>
    (? 符号声明该元素可以出现零次或一次,而 * 符号声明该元素可以在 complexType 元素内零次或多次出现。)
  • 参数

    属性 描述
    id 可选的。 指定元素的唯一ID
    name 可选的。 指定元素的名称
    abstract 可选的。 指定是否可以在实例文档中使用复杂类型。 True 表示元素不能直接使用此复杂类型,而必须使用从该复杂类型派生的复杂类型。 默认为 false
    mixed 可选的。 指定是否允许在该 complexType 元素的子元素之间出现字符数据。 默认为 false。 如果 simpleContent 元素是子元素,则不允许混合属性!
    block 可选的。 防止使用具有指定派生类型的复杂类型代替此复杂类型。 该值可以包含#all或作为扩展或限制的子集的列表:
    • extension - 防止由扩展派生的复杂类型
    • restriction - 防止由限制派生的复杂类型
    • #all - 防止所有派生的复杂类型
    final 可选的。 防止指定此复杂类型元素的派生类型。 可以包含 #all 或作为扩展或限制的子集的列表。
    • extension - 防止通过扩展求导
    • restriction - 防止限制导出
    • #all - 防止所有派生
    any attributes 可选的。 用非模式命名空间指定任何其他属性
  • 示例

    下面的示例具有一个复杂类型的名为 “note” 的元素:
    <xs:element name="note">
      <xs:complexType>
        <xs:sequence>
      <xs:element name="to" type="xs:string"/>
      <xs:element name="from" type="xs:string"/>
      <xs:element name="heading" type="xs:string"/>
      <xs:element name="body" type="xs:string"/>
        </xs:sequence>
      </xs:complexType>
    </xs:element>
    以下示例具有一个复杂类型 “fullpersoninfo”,该类型通过从继承的类型扩展三个附加元素(地址,城市和国家/地区)而派生自另一个复杂类型 “personinfo”:
    <xs:element name="employee" type="fullpersoninfo"/>
    
    <xs:complexType name="personinfo">
      <xs:sequence>
        <xs:element name="firstname" type="xs:string"/>
        <xs:element name="lastname" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
    
    <xs:complexType name="fullpersoninfo">
      <xs:complexContent>
        <xs:extension base="personinfo">
          <xs:sequence>
            <xs:element name="address" type="xs:string"/>
            <xs:element name="city" type="xs:string"/>
            <xs:element name="country" type="xs:string"/>
          </xs:sequence>
        </xs:extension>
      </xs:complexContent>
    </xs:complexType>
    在上面的示例中,“employee” 元素必须依次包含以下元素:“firstname”,“lastname”,“address”,“city” 和 “country”。