티스토리 뷰

반응형

= devpia 강좌란에서 퍼온 자료임 =

 

 

 

 

쩝.. 이론..
하나 강좌를 결국 3개로 쪼개니.. 올라가네여..

2개로 나눠도 저장하는데.. 계속 에러나구...

결국 3개로 찢을수 밖에 없었습니다.

이해해 주시구요..

생성된 xml 스키마에 설명에 대한 마지막 입니다.

참고로 본 문서는 MSDN 온라인 컬럼을 참고로

제작하였습니다.
이금우


==========================================

데이터 형식
dt:type 속성을 가진 열에

데이터 형식을 적용할 수 있습니다.

사용 가능한 XML 유형을 보려면

http://www.w3.org/TR/1998/NOTE-XML-data-0105/#Datatypes

를 참조하십시오. 데이터 형식을 지정하는 방법은

두 가지가 있습니다. 즉, dt:type 속성을 열 정의에 직접 지정하거나

s:datatype 구조를 열 정의의 중첩된 요소로 사용합니다.

예를 들면 다음과 같습니다.

<  s:AttributeType name="Phone">
  <  s:datatype dt:type="string">
<  /s:AttributeType>

위의 코드는 다음과 동일합니다.

<  s:AttributeType name="Phone" dt:type="string">

행 정의에서 dt:type 속성을 생략할 경우 해당 열의 유형은 기본적으로 가변 길이 
문자열이 됩니다.

단순히 유형 이름(예: dt:maxLength) 외에도 유형 정보를 많이 지정해야 할 경우에
는 s:datatype 자식 요소를 사용하는 것이 알아보기 쉽습니다. 이것은 관습일 뿐 필
수 사항은 아닙니다.

다음 예제는 스키마에 유형 정보를 포함시키는 방법을 보여 줍니다.
<  s:AttributeType name="title_id" >
<  s:AttributeType name="title_id" dt:type="string">

<  s:AttributeType name="title_id">
    <  s:datatype dt:type="string" dt:maxLength="" 
rs:fixedlength="true"/>
<  /s:AttributeType>


<  s:AttributeType name="title_id?gt;
    <  s:datatype dt:type="string" dt:maxLength=""/>
<  /s:AttributeType>

<  s:AttributeType name="title_id"dt:type="int">

두 번째 예제에는 rs:fixedlength 속성의 미묘한 사용법이 나와 있습니다. 
rs:fixedlength 속성이 TRUE로 설정된 열은 해당 데이터의 길이가 스키마에 정의되
어 있음을 나타냅니다. 이런 경우, "123456"은 TITLE_ID의 유효한 값이지
만 "123"은 길이가 6이 아니라 3이기 때문에 유효하지 않습니다. FixedLength 속성
에 대한 자세한 내용은 OLE DB 사양을 참조하십시오.

널 값 처리
널 값은 rs:maybenull 속성에 의해 처리됩니다. 이 속성이 TRUE로 설정되면 열에 
널 값이 포함될 수 있습니다. 또한, 데이터의 행에서 해당 열을 찾을 수 없으면 행 
집합에서 데이터를 다시 읽어오는 사용자에게 IRowset::GetData()로부터 널 상태
가 반환됩니다. Shippers 테이블에서 다음 열 정의를 살펴 봅시다.

<  s:AttributeType name="ShipperID">
  <  s:datatype dt:type="int"dt:maxLength="">
<  /s:AttributeType>
<  s:AttributeType name="CompanyName">
  <  s:datatype dt:type="string"dt:maxLength="0" rs:maybenull="true">
<  /s:AttributeType>

위의 정의에 따르면 CompanyName에는 널 값을 사용할 수 있지만 ShipperID에는 널 
값이 올 수 없습니다. 데이터 섹션에 다음 행이 포함되어 있을 경우 Persistence 
Provider는 CompanyName 열에 대해 데이터 상태를 DBSTATUS_S_ISNULL로 설정합
니다.

<  z:row ShipperID=??>

행이 다음과 같이 완전히 비어 있을 경우 Persistence Provider는 ShipperID에
는 DBSTATUS_E_UNAVAILABLE 상태를, CompanyName에는 DBSTATUS_S_ISNULL 상태
를 반환합니다. 

<  z:row/> 

길이가 0인 문자열은 널과 다릅니다.

<  z:row ShipperID="" CompanyName=""/>

위 행의 경우, Persistence Provider는 두 열에 대해 모두 DBSTATUS_S_OK를 반환
합니다. 이 경우 CompanyName은 단순히 ""(길이가 0인 문자열)입니다.

OLE DB에 대한 XML 문서의 스키마에서 사용할 수 있는 OLE DB 구조에 대한 설명은 
부록 에 포함된 urn:schemas-microsoft-com:rowset 정의와 OLE DB 사양을 참조
하십시오.

데이터 섹션
데이터 섹션은 행 집합의 데이터와 보류 중인 업데이트, 삽입, 삭제를 정의합니다. 
데이터 섹션에는 0개 이상의 행이 포함될 수 있으며, 스키마에 의해 정의된 특정 행 
집합의 데이터만 포함됩니다. 또한, 위에서 언급한 것처럼 데이터가 없는 열은 삭제
됩니다. 데이터 섹션에 속성이나 하위 요소가 사용되었지만 스키마 섹션에 해당 구조
가 정의되어 있지 않으면 무시됩니다. 


String

텍스트 데이터에서 예약된 XML 문자는 해당 문자 엔티티로 대체해야 합니다. 예를 들
어, 회사 이름 "Joe"s Garage"에서 작은 따옴표를 엔티티로 대체해야 합니다. 실
제 행은 다음과 같습니다.

<  z:row CompanyName= ppp Garage>

다음은 XML에서 예약된 문자이므로 해당 문자 엔티티로 대체해야 합니다.{??
&,<  ,>}.

Binary
Binary 데이터는 bin.hex로 인코딩됩니다(4비트당 한 글자씩 1바이트가 두 글자에 
대응됨).

DateTime
여러 종류의 VT_DATE 형식은 XML 데이터 형식에서 직접 지원되지 않습니다. 데이터
와 시간 구성 요소에 모두 적합한 날짜 형식은 yyyy-mm-ddThh:mm:ss입니다.

XML에서 지정된 날짜 형식에 대한 자세한 내용은 
http://www.w3.org/TR/1998/NOTE-XML-data-0105/#Datatypes 를 참조하십시오.

XML 데이터 사양이 두 개의 동일한 데이터 형식(예: i4 == int)을 정의할 경우, 
ADO는 쓸 때는 친숙한 이름을 사용하지만 읽을 때는 두 가지 이름을 모두 읽어옵니
다. 

=====================================================================

휴 ~
블로그코리아에 블UP하기

반응형
댓글
반응형
05-17 05:57
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함