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>