Notice
Recent Posts
Recent Comments
Link
«   2025/02   »
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
Tags more
Archives
Today
Total
관리 메뉴

Pure Software Engineer :)

[SQL Server] typed xml vs. untyped xml 본문

Software Engineering/Etc

[SQL Server] typed xml vs. untyped xml

HelloJaewon 2014. 3. 4. 17:19

SQL Server에서 사용되는 typed xml 과 untyped xml에 대해 정리해보자.


SQL Server는 variable, parameter, column에 xml 타입을 사용할 수 있게 한다.

그리고 흔히 xml의 스키마를 정의하기 위한 xsd(xml schema definition)를 SQL Server에도 적용시킬 수 있는데,

xml과 xsd를 연계시키면 typed xml, 연계 안시켰다면 untyped xml 이라고 부른다.


xsd를 사용하는 이유는 이미 다 알고 있다고 생각하고, 여기서는 SQL Server에서 어떻게 xsd를 사용하고,

xml과 xsd를 연계시키는지에 대해 알아보도록 한다.


그래도 xsd 가 제공하는 것을 간단히 살펴보면 다음 2가지가 있다.

1. validation constraint

2. data type information

즉, xml이 유효한 형태인지 검증할 수 있고, element에 대한 타입 정보를 제공해 준다.

typed xml을 사용하면 Xml validation을 SQL Server에서 자동으로 해준다는 것이다.

따라서, 사용자는 Xml이 유효한지에 대한 걱정을 하지 않아도 된다.

(매번 xml의 값이 설정되거나, 변경될때 SQL Server에서 자동으로 validation을 수행한다.)


Typed xml 을 사용하기 위한 순서는 크게 다음과 같다.
1. XML Schema collection 등록
2. Associates XML schema collection with variables, parameters, or columns of xml data type

1. Xml Schema collection 등록
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// syntax
CREATE XML SCHEMA COLLECTION [ <relational_schema>. ]sql_identifier AS Expression
 
// Example
CREATE XML SCHEMA COLLECTION TestCollection AS '<xs:schema xmlns:xs="http
://www.w3.org/2001/XMLSchema" targetNamespace="http://tempuri.org/po.xsd" 
xmlns="http://tempuri.org/po.xsd" elementFormDefault="qualified">
 <xs:annotation>
  <xs:documentation xml:lang="en">
   Purchase order schema for Example.com.
   Copyright 2000 Example.com. All rights reserved.
  </xs:documentation>
 </xs:annotation>
 
 <xs:element name="purchaseOrder" type="PurchaseOrderType"/>
....
....
'

2. Associates XML schema collection with variables, parameters, or columns of xml data type
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// variable
DECLARE @x XML (TestCollection)
set @x = '<?xml version="1.0"?> .....'
 
// parameter
CREATE PROCEDURE TestProc
    @testParam XML (TestCollection)
AS
...
 
 
EXEC dbo.TestProc '<?xml version="1.0"?>.....'
 
// columns of table
CREATE TABLE TestTable (
    i int not null identity(1,1) primary key,
    x xml (TestCollection)
)
 
INSERT INTO dbo.TestTable VALUES ('<?xml version="1.0"?>....')

Xml schema collection 사용시 주의.
1. Xml schema collection 은 'create xml schema collection' 을 통해 등록된 database 내에서만 유효하다.
2. string 에서 typed xml로 변환할때validation을 수행한다.
3. typed xml -> untyped xml 또는 untyped xml -> typed xml로 변환 역시 가능하며, 이때 역시 validation 수행한다.

References

http://technet.microsoft.com/en-us/library/ms184277.aspx

http://en.wikipedia.org/wiki/XML_Schema_(W3C)

http://technet.microsoft.com/en-us/library/ms176009.aspx

'Software Engineering > Etc' 카테고리의 다른 글

[VIM] bomb character  (0) 2014.12.17
OAuth 2.0  (0) 2014.11.27
[10장] 동기 및 비동기 장치 IO  (0) 2013.08.11
[WINDOWS] VS 디버깅시 CXX0017: Error: symbol not found 문제  (0) 2013.07.11
Windows 관련  (0) 2013.04.10