XML Schema complexType 요소

정의와 사용법

complexType 요소는 복잡한 유형을 정의합니다. 복잡한 유형의 요소는 다른 요소와/또는 속성을 포함하는 XML 요소입니다.

요소 정보

출현 횟수 스케마 내에서는 무제한; 요소 내에서는 한 번에.
부요소 element, redefine, schema
내용 annotation, simpleContent, complexContent, group, all, choice, sequence, attribute, attributeGroup, anyAttribute

문법

<complexType
id=ID 
name=NCName 
abstract=true|false 
mixed=true|false
block=(#all|리스트의 (extension|restriction))
final=(#all|리스트의 (extension|restriction))
모든 속성
>
(annotation?,(simpleContent|complexContent|((group|all| 
choice|sequence)?,((attribute|attributeGroup)*,anyAttribute?))))
</complexType>

(? 심볼은 complexType 요소에서 선언되며, 요소는 0번 또는 1번 나타날 수 있습니다, * 심볼은 요소가 0번 또는 여러 번 나타날 수 있습니다.)

속성

id

선택 사항입니다. 이 요소의 유일한 ID를 지정합니다.

name

선택 사항입니다. 요소의 이름을 지정합니다.

abstract

선택 사항입니다. 인스턴스 문서에서 복잡 타입을 사용할 수 있는지 지정합니다. 이 값이 true라면, 요소는 직접 이 복잡 타입을 사용할 수 없으며, 이 복잡 타입에서 파생된 복잡 타입을 사용해야 합니다. 기본 값은 false입니다.

mixed

선택 사항입니다. 복잡 타입의 자식 요소 사이에 문자 데이터가 나타날 수 있는지 지정합니다. 기본 값은 false입니다.

  • simpleContent 요소가 자식 요소라면, mixed 속성은 허용되지 않습니다.
  • complexContent 요소가 자식 요소라면, 이 mixed 속성은 complexContent 요소의 mixed 속성에 덮어씌워질 수 있습니다.

block

선택 사항입니다. 지정된 파생 타입을 가진 복잡 타입이 이 복잡 타입을 대체할 수 있는 것을 방지합니다. 이 값은 #all 또는 이 값이 extension 또는 restriction의 부분집합인 목록을 포함할 수 있습니다:

  • extension - 이 복잡 타입을 대체할 수 있는 확장된 파생된 복잡 타입을 방지합니다.
  • restriction - 이 복잡 타입을 대체할 수 있는 제한된 파생된 복잡 타입을 방지합니다.
  • #all - 이 복잡 타입을 대체할 수 있는 모든 파생된 복잡 타입을 방지합니다.

final

선택 사항입니다. 이 complexType 요소에서 파생된 지정된 타입을 대체할 수 있는 모든 파생된 복잡 타입을 방지합니다. 이 값은 #all 또는 이 값이 extension 또는 restriction의 부분집합인 목록을 포함할 수 있습니다.

  • extension - 확장을 통해 파생을 방지합니다.
  • restriction - 제한을 통해 파생을 방지합니다.
  • #all - 모든 파생(확장 및 제한)을 방지합니다.

모든 속성

선택 사항. 비 스키마 이름 공간을 가진 모든 다른 속성을 정의합니다.

实例

例子 1

下面的例子拥有一个名为 "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>

例子 2

下面的例子中有一个复杂类型 "fullpersoninfo",它通过使用三个补充的元素 (address、city 和 country) 对继承的类型进行扩展,由另一个复杂类型 "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".