단순 형식 유추 규칙

업데이트: November 2007

XmlSchemaInference 클래스가 특성 및 요소에 대한 데이터 형식을 유추하는 방법을 설명합니다.

XmlSchemaInference 클래스는 특성 및 요소에 대한 데이터 형식을 단순 형식으로 유추합니다. 이 단원에서는 유추 가능한 형식, 여러 다른 값이 단일 형식으로 통일되는 방식 및 스키마 정의 xsi 특성을 처리하는 방법을 설명합니다.

유추된 형식

XmlSchemaInference 클래스는 요소 및 특성 값을 단순 형식으로 유추하고 결과 스키마에 형식 특성을 포함시킵니다. 유추된 모든 형식은 단순 형식입니다. 기본 형식 또는 패싯은 결과로 생성된 스키마에 포함되지 않습니다.

단순 형식 유추 그래픽

값은 XML 문서에서 발견될 때마다 개별적으로 검사합니다. 값을 검사할 때 값의 형식을 유추합니다. 특성 또는 요소에 대해 형식이 유추되고 현재 유추된 형식과 일치하지 않는 특성 또는 요소 값이 발견되면 XmlSchemaInference 클래스는 각 규칙 집합에 대해 형식을 승격합니다. 이 규칙은 이 항목 뒷부분의 형식 승격 단원에서 자세히 다룹니다.

다음 표에서는 결과 스키마에 대해 유추 가능한 형식의 목록을 보여 줍니다.

단순 형식

설명

boolean

True, False, 0, 1.

byte

-128에서 127까지의 범위에 있는 정수입니다.

unsignedByte

0에서 255까지의 범위에 있는 정수입니다.

short

-32768에서 32767까지의 범위에 있는 정수입니다.

unsignedShort

0에서 65535까지의 범위에 있는 정수입니다.

int

-2147483648에서 2147483647까지의 범위에 있는 정수입니다.

unsignedInt

0에서 4294967295까지의 범위에 있는 정수입니다.

long

-9223372036854775808에서 9223372036854775807까지의 범위에 있는 정수입니다.

unsignedLong

0에서 18446744073709551615까지의 범위에 있는 정수입니다.

integer

"-" 접두사를 붙일 수 있는 유한한 숫자입니다.

decimal

전체 자릿수가 0에서 28까지인 숫자 값입니다.

float

십진수 뒤에 옵션으로 "E"가 오거나 "e" 다음에 정수 값을 써서 지수를 표현합니다. -16777216에서 16777216까지의 범위에 있는 10진수 값입니다. 지수 값의 범위는 -149에서 104까지입니다.

float를 사용하면 특수한 값으로 무한대 또는 숫자가 아닌 값을 표현할 수 있습니다. float에 대한 특수 값은 0, -0, INF, -INF, NaN 등입니다.

double

10진수 값의 범위가 -9007199254740992에서 9007199254740992까지이고 지수 값의 범위가 -1075에서 970까지인 것만 제외하고 float와 동일합니다.

double을 사용하면 특수한 값으로 무한대 또는 숫자가 아닌 값을 표현할 수 있습니다. float에 대한 특수 값은 0, -0, INF, -INF, NaN 등입니다.

duration

W3C duration 형식입니다.

dateTime

W3C dateTime 형식입니다.

time

W3C time 형식입니다.

date

연도 값의 범위는 0001에서 9999까지입니다.

gYearMonth

W3C 양력 연도와 월 형식입니다.

string

한 자 이상의 유니코드 문자입니다.

형식 승격

XmlSchemaInference 클래스는 특성 및 요소 값을 한 번에 하나씩 검사합니다. 값이 나타나면 가장 제한되고 부호 없는 형식이 유추됩니다. 특성 또는 요소에 대해 형식이 유추되었고 현재 유추된 값과 일치하지 않는 새로운 값을 발견하는 경우, 유추된 형식은 현재 유추된 형식 및 새 값에 모두 적용되는 새로운 형식으로 승격됩니다. XmlSchemaInference 클래스는 유추된 형식을 승격할 때 이전 값을 고려합니다.

예를 들어, 다음 두 XML 문서의 XML 조각을 고려하십시오.

<MyElement1 attr1="12" />

<MyElement1 attr1="52344" />

첫 번째 attr1 값이 나타나면 12 값을 기준으로 attr1의 형식이 unsignedByte로 유추됩니다. 두 번째 attr1이 나타나면 그 형식은 현재 유추된 형식 unsignedByte 및 현재 값 52344를 기준으로 unsignedShort로 승격됩니다.

이번에는 다음 두 XML 문서의 XML을 고려하십시오.

<MyElement2 attr2="0" />

<MyElement2 attr2="true" />

첫 번째 attr2 값이 나타나면 0 값을 기준으로 attr2의 형식이 unsignedByte로 유추됩니다. 두 번째 attr2가 나타나면 XmlSchemaInference 클래스는 유추된 형식을 승격시킬 때 이전 값을 고려하기 때문에 그 형식은 현재 유추된 형식 unsignedByte 및 현재 값 true를 기준으로 string으로 승격됩니다. 하지만 위에서 설명한 대로 attr2의 두 인스턴스가 다른 두 XML 문서가 아닌 같은 XML 문서에 나타나면 attr2는 boolean으로 유추됩니다.

http://www.w3.org/2001/XMLSchema-instance 네임스페이스의 무시된 특성

다음은 스키마 유추에서 무시된 스키마 정의 특성입니다.

특성

설명

xsi:type

요소가 지정된 xsi:type과 만나면 xsi:type은 무시됩니다.

xsi:nil

xsi:nil 특성이 있는 요소가 나타나면 유추된 스키마의 요소 선언은 nillable="true" 값을 가집니다. true로 설정된 xsi:nil 특성이 있는 요소는 자식 요소를 가질 수 없습니다.

xsi:schemaLocation

xsi:schemaLocation이 나타나면 무시됩니다.

xsi:noNamespaceSchemaLocation

xsi:noNamespaceSchemaLocation이 나타나면 무시됩니다.

참고 항목

개념

XML 문서에서 스키마 유추

스키마 노드 형식 및 구조 유추 규칙

기타 리소스

XML SOM(스키마 개체 모델)