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