XML Schema element 요소

정의와 사용법

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=nonNegativeInteger|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

선택 사항입니다. 요소의 형식을 정의합니다. 기본 값은 해당属性的 schema 요소의 elementFormDefault 속성의 값입니다. 이 값은 다음 문자열 중 하나여야 합니다: "qualified" 또는 "unqualified".

부모 요소가 schema 요소라면 이 속성을 사용할 수 없습니다.

  • 이 값이 "unqualified"라면, 이름 공간 접두사로 구분하지 않아도 됩니다.
  • 이 값이 "qualified"라면, 요소를 이름 공간 접두사로 구분해야 합니다.

maxOccurs

선택 사항입니다. 부모 요소에서 element 요소가 최대로 등장할 수 있는 횟수를 정의합니다. 이 값은 0 이상의 정수일 수 있습니다. 최대 횟수에 제한을 두지 않고 싶다면 문자열 "unbounded"를 사용하세요. 기본 값은 1입니다.

부모 요소가 schema 요소라면 이 속성을 사용할 수 없습니다.

minOccurs

선택사항입니다. element 요소가 부모 요소에서 최소로 등장할 수 있는 횟수를 규정합니다. 이 값은 0보다 크거나 같은 정수입니다. 기본값은 1입니다.

부모 요소가 schema 요소라면 이 속성을 사용할 수 없습니다.

nillable

선택사항입니다. 명시적인 NULL 값이 할당될 수 있는지를 지시합니다. 이 항목은 요소 내용에 적용되며 이 요소의 속성이 아닙니다. 기본값은 false입니다.

nillable이 true라면, 이 요소의 인스턴스가 nil 속성을 true로 설정할 수 있습니다. nil 속성은 인스턴스의 XML 스키마 네임스페이스의 일부로 정의됩니다.

예를 들어, 다음에서 단일 요소를 정의하며 nillable을 true로 설정합니다.

<xs:element name="myDate" type="xs:date" nillable="true"/>

다음에서 이 요소를 사용하며 명시적인 NULL 값( nil 속성이 true로 설정되어 있음)을 가집니다.

<myDate xsi:nil="true"></myDate>

abstract

선택사항입니다. 요소가 인스턴스 문서에서 사용될 수 있는지를 지시합니다. 값이 true면 요소가 인스턴스 문서에 등장할 수 없습니다. 그렇지 않으면, 이 요소의 Qualified Name (QName)을 포함하는 substitutionGroup 속성을 가진 다른 요소는 이 요소의 위치에 등장해야 합니다. 여러 요소가 이 요소를 substitutionGroup 속성에서 참조할 수 있습니다. 기본값은 false입니다.

block

선택사항입니다. 유도 타입입니다. block 속성이 특정 유도 타입을 가진 요소를 이 요소로 대체할 수 없도록 방지합니다. 이 값은 #all 또는 확장, 제한 또는 substitution의 하위집합을 포함하는 목록을 포함할 수 있습니다.:

  • extension - 이 요소를 대체할 수 있는 확장된 유도 요소를 방지합니다.
  • restriction - 이 요소를 대체할 수 있는 제한된 유도 요소를 방지합니다.
  • substitution - 이 요소를 대체할 수 있는 유도 요소를 방지합니다.
  • #all - 이 요소를 대체할 수 있는 모든 유도 요소를 방지합니다.

final

선택사항입니다. element 요소에 final 속성의 기본값을 설정합니다. 부모 요소가 schema 요소가 아니면 이 속성을 사용할 수 없습니다. 이 값은 #all 또는 확장 또는 제한의 하위집합을 포함하는 목록을 포함할 수 있습니다.:

  • extension - 이 요소를 대체할 수 있는 확장 파생 요소를 방지합니다
  • restriction - 이 요소를 대체할 수 있는 제한적인 파생 요소를 방지합니다
  • #all - 이 요소를 대체할 수 있는 모든 파생 요소를 방지합니다

모든 속성

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

인스턴스

예제 1

아래의 예제는 네 개의 간단한 요소를 포함한 schema를 포함하고 있는 예제입니다: "fname", "lname", "age", 그리고 "dateborn"이며, 타입은 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>