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의 하위 집합을 포함할 수 있습니다:

  • complexType를 대체할 수 있는 확장된派생된 복잡한 유형을 방지합니다.
  • complexType를 대체할 수 있는派생된 복잡한 유형을 제한하는 것을 방지합니다.
  • #all - 모든 파생된 복잡한 타입이 이 복잡한 타입을 대체할 수 없도록 방지합니다.

final

선택 사항. 해당 complexType 요소에서 파생된 지정된 타입을 방지합니다. 이 값은 #all 또는 extension 또는 restriction의 집합을 포함할 수 있습니다.

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

모든 속성

선택 사항. non-schema 이름 공간을 가진 모든 다른 속성을 정의합니다.

인스턴스

예제 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"가 세 추가 요소(주소, 도시 및 국가)를 사용하여 상속 타입을 확장하며, 복잡한 타입 "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".