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".