XML Schema 요소
정의와 사용 방법
element 요소는 요소를 정의합니다.
요소 정보
출현 횟수 | 구조에서 정의된 요소의 수. |
부모 요소 | schema, choice, all, sequence |
내용 | simpleType, complexType, key, keyref, unique |
문법
<element id=ID name=NCName ref=QName type=QName substitutionGroup=QName default=string fixed=string form=qualified|unqualified maxOccurs=비음수정수|unbounded minOccurs=비음수정수 nillable=true|false abstract=true|false block=(#all|리스트의 (extension|restriction)) final=(#all|리스트의 (extension|restriction)) 모든 속성 > annotation?,((simpleType|complexType)?,(unique|key|keyref)*)) </element>
(? 기호는 element 요소에서 선언되며, 이 요소는 0회나 1회 나타날 수 있습니다. * 기호는 요소가 0회나 여러 번 나타날 수 있습니다.)
속성
id
선택 사항입니다. 이 요소의 독립적인 ID를 지정합니다.
name
선택 사항입니다. 요소의 이름을 지정합니다. 부모 요소가 schema 요소인 경우 이 속성은 필수입니다.
ref
선택 사항입니다. 다른 요소에 대한 참조입니다. ref 속성은 이름 공간 접두어를 포함할 수 있습니다. 부모 요소가 schema 요소인 경우 이 속성을 사용하지 않습니다.
type
선택 사항입니다. 내장 데이터 타입의 이름을 지정하거나 simpleType 또는 complexType 요소의 이름을 지정합니다.
substitutionGroup
선택 사항입니다. 이 요소를 대체할 요소의 이름을 지정합니다. 이 요소는 같은 타입이거나 지정된 요소 타입에서 파생된 타입을 가져야 합니다.
부모 요소가 schema 요소가 아니면 이 속성을 사용할 수 없습니다.
default
선택 사항입니다. 요소에 기본 값을 지정합니다(요소 내용이 간단한 타입이나 textOnly 일 때 사용).
fixed
선택 사항입니다. 요소에 고정 값을 지정합니다(요소 내용이 간단한 타입이나 textOnly 일 때 사용).
form
선택 사항. 요소의 형식. 기본 값은 이 속성을 포함하는 스키마 요소의 elementFormDefault 속성의 값입니다. 이 값은 다음 문자열 중 하나여야 합니다: "qualified" 또는 "unqualified".
부모 요소가 schema 요소라면, 이 속성을 사용할 수 없습니다.
- 이 값이 "unqualified"이라면, 이름 공간 접두사를 통해 요소를 명시할 필요가 없습니다.
- 이 값이 "qualified"이라면, 이름 공간 접두사를 통해 요소를 명시해야 합니다.
maxOccurs
선택 사항. element 요소가 부모 요소에서 나타날 수 있는 최대 횟수를 정의합니다. 이 값은 0 이상의 정수일 수 있습니다. 최대 횟수에 제한을 두지 않고자 한다면 "unbounded" 문자열을 사용합니다. 기본 값은 1입니다.
부모 요소가 schema 요소라면, 이 속성을 사용할 수 없습니다.
minOccurs
선택 사항. element 요소가 부모 요소에서 나타날 수 있는 최소 횟수를 정의합니다. 이 값은 0 이상의 정수일 수 있습니다. 기본 값은 1입니다.
부모 요소가 schema 요소라면, 이 속성을 사용할 수 없습니다.
nillable
선택 사항. 명시적으로 zero value를 할당할 수 있는지를 지시합니다. 이 항목은 요소 내용에 적용되며 해당 요소의 속성이 아닙니다. 기본 값은 false입니다.
nillable이 true라면, 해당 요소의 인스턴스가 nil 속성을 true로 설정할 수 있습니다. nil 속성은 인스턴스의 XML 스키마 이름 공간의 일부로 정의됩니다.
예를 들어, 다음 단계에서 단일 요소를 정의하고 nillable을 true로 설정합니다.
<xs:element name="myDate" type="xs:date" nillable="true"/>
다음 단계에서 이 요소를 사용하고 명시적으로 zero value (nil 속성이 true로 설정되어 있습니다).
<myDate xsi:nil="true"></myDate>
abstract
선택 사항. 요소가 인스턴스 문서에서 사용될 수 있는지를 지시합니다. 이 값이 true라면 요소는 인스턴스 문서에 나타날 수 없습니다. 대신, substitutionGroup 속성이 해당 요소의限定명 (QName)을 포함하는 다른 요소는 이 요소의 위치에 나타내어야 합니다. 여러 요소는 substitutionGroup 속성에서 이 요소를 참조할 수 있습니다. 기본 값은 false입니다.
block
선택 사항. 파생된 타입. block 속성은 지정된 파생된 타입을 가진 요소가 해당 요소를 대체하는 데 사용되지 않도록 방지합니다. 이 값은 #all 또는 확장, 제한, 대체의 하위 집합을 포함할 수 있습니다:
- 확장 - 확장으로 파생된 요소가 해당 요소를 대체하는 데 사용되지 않도록 방지합니다.
- restriction - 파생 요소를 제한하여 이 요소를 대체할 수 있음을 방지합니다.
- substitution - 파생 요소를 대체하여 이 요소를 대체할 수 있음을 방지합니다.
- #all - 모든 파생 요소가 이 요소를 대체할 수 있음을 방지합니다.
final
선택 사항. element 요소에 final 속성의 기본 값을 설정합니다. 부모 요소가 schema 요소가 아니면 이 속성을 사용할 수 없습니다. 이 값은 #all 또는 extension 또는 restriction의 하위 집합을 포함할 수 있습니다:
- extension - 파생 요소를 확장하여 이 요소를 대체할 수 있음을 방지합니다
- restriction - 파생 요소를 제한하여 이 요소를 대체할 수 있음을 방지합니다
- #all - 모든 파생 요소가 이 요소를 대체할 수 있음을 방지합니다
모든 속성
선택 사항. non-schema 이름 공간을 가진 다른 모든 속성을 정의합니다.
예제
예제 1
아래 예제는 "fname", "lname", "age", "dateborn" 네 개의 간단 요소를 포함한 schema입니다. 유형은 string, nonNegativeInteger, date입니다:
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="fname" type="xs:string"/> <xs:element name="lname" type="xs:string"/> <xs:element name="age" type="xs:nonNegativeInteger"/> <xs:element name="dateborn" type="xs:date"/> </xs:schema>
예제 2
아래 예제는 "note" 복잡 유형 요소를 포함한 schema입니다. "note" 요소는 "to", "from", "heading", "body" 네 개의 간단 요소를 포함합니다:
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <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> </xs:schema>
예제 3
이 예제는 예제 2와 동일하지만, 이 예제에서는 ref 속성을 사용하여 요소 이름을 참조하는 것을 선택했습니다:
<?xml version="1.0"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="note"> <xs:complexType> <xs:sequence> <xs:element ref="to"/> <xs:element ref="from"/> <xs:element ref="heading"/> <xs:element ref="body"/> </xs:sequence> </xs:complexType> </xs:element> <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:schema>